1软件测试基础知识
1.1软件测试定义
① Hetzel:评价程序和系统的特性或功能,确定是否达到预期结果,是否满足规定的需要;
② Myers:测试是为发现错误而执行程序的过程;
③ 现代:是对软件需求分析、设计、编码最终复查的一系列过程,软件质量保证的关键步骤;
1.2软件测试目的
① 发现缺陷,提高质量;
② 验证是否满足需求;
③ 建立软件质量的信心;
1.3软件测试原则
① 测试显示缺陷的存在;
② 穷尽测试是不可能的;
③ 测试应尽早介入;
④ 缺陷集群性(80-20原则);
⑤ 杀虫剂悖论;
⑥ 测试活动依赖于测试背景
⑦ 不存在缺陷的谬论;
1.4软件测试工作流程
测试计划和控制→测试需求分析和用例设计→实现和执行测试用例→评估出口准则和 告→测试活动结束;
1.5软件测试人员应具备的素质
① 技术能力:编程语言,操作系统,测试理论及计算机 络和数据库等;
② 综合能力:心理抗压能力,沟通能力,精神贯注能力,思考能力、学习能力等;
2全生命周期软件测试基础知识
2.1生命周期的阶段划分
① 需求阶段→②设计阶段→③编码阶段→④测试阶段→⑤集成阶段→⑦维护阶段
2.2生命周期各阶段的测试要求
① 保证软件系统在全生命周期中每个阶段的正确性,验证整个软件开发周期中个阶段的软件质量是否合格;
② 保证最终系统符合用户要求和需求,验证最终交付系统是满足需要和需求的;
③ 用样本测试数据检查系统的行为特性;
④ 在产品交给用户前尽可能多的发现问题并改正;
3软件测试分类与分级基础知识
3.1软件测试分类
1、 按内部结构和具体实现分为:白盒测试、黑盒测试、灰盒测试
2、 按软件开发角度分为:单元测试、集成测试、系统测试、验收测试
3、 按是否执行程序角度分为:静态测试、动态测试
4、 按是否需要人工干预分为:人工测试、自动化测试
5、 按测试实施组织角度分为:来发测试、用户测试(β测试)、第三方测试
3.2基于CSCI的软件测试分类
①、功能测试、②性能测试、③外部接口和人机交互界面测试、④强度测试、⑤余量测试、⑥可靠性测试、⑦安全性测试、⑧恢复性测试、⑨边界测试、⑩功能多余物测试
3.3软件错误测试分级
① 第1级:严重缺陷;
② 第2级:较严重缺陷;
③ 第3级:一般稀缺陷
④ 第4级:较小缺陷;
⑤ 第5级:其他缺陷
4软件缺陷管理基础知识
4.1软件缺陷的定义
软件错误、软件失效和软件故障等使软件无法正常运行使用的错误都成为软件缺陷。
4.2软件缺陷的属性
4.3软件缺陷的分类
① 按缺陷的类型划分(10种)
② 按缺陷的严重程度(urgent-veryhigh-high-medium-low)
③ 按优先级划分(high-middle-low)
⑤ 按缺陷的根源划分
⑥ 按缺陷生命周期划分
4.4缺陷管理流程
测试人员提交缺陷→项目经理审查分配→开发人员修正→测试人员验证→缺陷关闭
4.5软件缺陷统计内容及方法
1、 统计内容:软件功能模块缺陷分布、缺陷严重程度分布、缺陷类型分布、缺陷率分布、缺陷密度分析、缺陷趋势分布、缺陷注入率/消除率等
2、 统计方式:表格、散点图、趋势图、因果图、直方图、条形图、排列图等
4.6软件缺陷 告的主要内容和撰写原则
1、 主要内容:问题 告编 、标题、 告人、 告日期、程序名称、版本 、配置、缺陷的类型、严重性、优先级、关键词、缺陷描述、重现步骤、结果对比
2、 原则:尽快 告软件缺陷、有效地描述软件缺陷、在 告软件缺陷是不做任何评价、确保缺陷可以重现
5软件测试过程及过程管理基础知识
5.1软件测试过程模型
a) V模型(存在一定的局限性)
b) W模型(双V模型,强调测试版随着整个软件开发周期)
c) H模型(将测试活动完全独立出来,形成完全独立的流程并贯穿整个生命周期)
d) X模型(针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终成为可执行的程序,然后再对这些可执行程序进行测试)
5.2软件测试过程成熟度
软件能力成熟度模型CMM(Capability Maturity Model)是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。分为五个等级:一级为初始级,二级为可重复级,三级为已定义级,四级为已管理级,五级为优化级。软件测试能力成熟度模型TMM(TestingCapailiyt Maturity Model),分为初始级、定义级、集成级、管理和测量级和优化、预防缺陷和质量控制级五个级别。
5.3软件测试过程管理的理念
① 尽早测试(并非盲目提前测试活动)
② 全面测试(有助于全方位把握软件质量,尽最大可能排除造成软件质量问题的因素)
③ 全过程测试(有助于及时应对项目变化,降低测试风险)
④ 独立的迭代测试(只要测试条件成熟,测试准备活动完成,就可以开展测试执行活动)
6软件静态测试基础知识
6.1静态测试的概念及特点
1、 概念静态测试通常是指不执行程序代码而寻找代码中可能存在的错误或评估程序代码的过程,它的测试对象通常是各种与软件相关的有必要进行测试的产物,比如各类文档、源代码等。
2、 特点:必动态地运行程序、可以人工进行,充分发挥人的思维优势、不需要特别的条件,容易展开、对测试人员要求较高
6.2静态测试的主要内容
1、 各阶段的评审
(2)小组评审:没有审查正式和严格,由评审组长代替用户角色,发现问题的数量是审查的2/3;
(4)临时评审:请团对内其他同事帮忙,在短时间内解决一些问题;
2、 代码检查
代码检查是“白盒”测试的一种静态测试方法,主要由检验人员在代码全部或部分完成后通过仔细的代码分析,以达到及早发现缺陷的母的。主要检查代码和设计的一致性、代码对标准的遵循、代码可读性、代码的逻辑表达正确性、代码结构的合理性。
代码检查的内容包括:
i. 完整性检查
ii. 正确性检查
iii. 一致性检查
iv. 可修改性检查
v. 可预测性检查
vi. 健壮性检查
vii. 可理解性检查
viii. 可验证性检查
ix. 结构性检查
x. 可追溯性检查
xi. 代码标准符合性检查
代码检查方法包括:
i. 代码审查
ii. 桌面检查
iii. 代码走查
iv. 技术评审
6.3软件复杂性度量—圈复杂度McCabe
nbsp; 定义:圈复杂度是一种代码复杂度的衡量标准。在软件测试的概念里,圈复杂度“用来衡量一个模块判定结构的复杂程度,数量上表现为独立现行路径条数,即合理的预防错误所需测试的最少路径条数。
nbsp; 算法:
①V(G)=e-n+2p。其中,e表示控制流图中边的数量,n表示控制流图中节点的数量,p连接组件数目,因为控制流图都是连通的,所以p为1.
②V(G)=区域数=判定节点数+1;
③V(G)=R。其中R代表平面被控制流图划分成的区域数;
7软件动态测试基础知识
7.1白盒测试
(1) 概念:“白盒”测试又称为结构测试或逻辑驱动测试是一种按照程序内部逻辑结构和编码结构设计测试数据并完成测试的一种测试方法。
(2) 特点:可以构成测试数据使特定程序部分得到测试、有一定的充分性度量手段、可获得较多工具支持、通常只用于单元测试;
(3) 主要方法:
a)、逻辑覆盖(以程序内部的逻辑结构为基础的测试方法);
<1>.语句覆盖:最起码的测试要求,使得每一条语句至少被执行一次;
<2>.判定覆盖:要求设计足够的测试用例,使得程序中的每一个分支至少通过一次即每一条分支语句的“真”值和“假”值都至少执行一次;
<3>.条件覆盖:不仅每一个语句至少执行一次,使得判定中的每个条件获得各种可能的结果。只关心整个判定表达式的结果,条件覆盖关心的则是每个条件各种取值的结果;
<4>.判定/条件覆盖:使得判定中每个条件的所有可能取值至少能够获取一次,同时每个判断的所有可能的判定结果至少执行一次;
<5>.条件组合覆盖:要求设计足够多的测试用例,使得每个判定中条件的各种组合至少出现一次。满足条件组合覆盖标准的测试用例,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准;
<6>路径覆盖:要求设计足够多的测试用例,使得程序中所有的路径都至少执行一次
b)路径测试(主要方法有:DD路径测试和基本路径测试);
c)数据流测试(数据流测试是指关注变量接受值的点和使用(或引用)这些值的点的结构性测试形式);
d)信息流分析(通过对输入数据、输出数据、语句之间关系的分析来检查程序错误,还可用来分析是否存在无用的语句);
7.2黑盒测试
1、概念:
黑盒测试又称功能测试或数据驱动测试。把测试对象当作看不见内部的黑盒,在完全不考虑程序内部结构和处理过程的情况下,测试者仅依据程序功能的需求规范考虑,确定测试用例和推断测试结果的正确性;站在使用软件或程序的角度,从输入数据与输出数据的对应关系进行的测试;在软件的接口处进行测试;通过导出执行程序所有功能需求的输入条件集,实现功能覆盖,需求覆盖
2、等价类划分
a) 有效等价类:对于程序规格说明来说,是合理的,有意义的输入数据构成的集合;
b) 无效等价类:对于程序规格说明来说,是不合理的,无意义的输入数据构成的集合;
c) 等价类的划分发法:按区间划分、按数值划分、按数值集合划分、按限制条件或规划划分、按处理方式划分;
3、 边界值划分
a) 边界值的含义:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法,稍高于其边界值及稍低于其边界值的一些特定情况;
b) 边界值的原则:
i. 如果输入条件规定了值的范围,则应取刚达到这个范围的边界值,以及刚刚超越这个范围的边界值作为测试的输入数据;
ii. 如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少1,比最大个数多1的数作为册数数据;
iii. 根据规格说明的每个输出条件,使用原则i;
iv. 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例;
v. 分析规格说明,找出其他可能的边界条件;
4、 因果图
a) 定义:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,该方法充分考虑了输入情况的各种组合及输入条件之间的相互制约关系;
b) 标识:
d) 用因果图生成测试用例的基本步骤
i. 分析软件规格说明描述:原因、结果、标识符;
ii. 分析软件规格说明描述中的语义:找出逻辑关系;
iii. 由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现,添加必要的约束条件;
iv. 把因果图转换成判定表;
v. 把判定表的每一列拿出来作为依据,设计测试用例;
5、 猜错法:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例的方法
7.3测试用例的设计
1、测试要点和测试点
测试要点是根据需求文档整合提炼出的要求模块,测试点是测试要点中各个要求的进一步划分。
2、测试用例主要元素
a) 测试环境
b) 测试输入数据
c) 测试执行步骤
d) 测试预期结果
3、高质量测试用例特点
a) 正确性;
b) 完整性;
c) 准确;
d) 清晰、简洁;
e) 可维护性;
f) 适应性;
g) 可重用性;
h) 可追溯性;
4、测试用例覆盖内容
a) 正确性测试;
b) 容错性(健壮性)测试;
c) 完整(安全)性测试;
d) 接口间测试;
e) 数据库测试;
f) 边界值分析法;
g) 压力测试;
h) 等价划分;
i) 错误推测;
j) 效率;
k) 可理解(操作)性;
l) 可移植性;
m) 回归测试;
n) 比较测试;
5、测试用例的设计步骤——5步(覆盖所有测试点)
6、测试用例设计的误区——7条
7.4单元测试
1、单元测试概念
单元测试又称模块测试,是用于判断某个特定条件下某个特定函数的行为,是集中对用源代码实现的每个程序单元进行测试,检查各个程序模块是否正确实现了程序规定的功能。
2、单元测试的要求
i. 语句覆盖达到100%;
ii. 分支覆盖达到100%;
iii. 错误处理路径达到100%;
iv. 单元的软件特性覆盖;
v. 各种数据特性覆盖;
3、单元测试方法

7.5集成测试
1、集成测试的概念
集成测试又叫组装测试或联合测试,是单元测试的多级扩展,是在单元测试的基础上进行的一种有序测试。集成测试的对象为模块级的集成和子系统间的集成。
2、集成测试的内容
1、 集成后的功能性测试;
2、 接口测试;
3、 全局数据结构测试;
4、 资源测试;
5、 性能测试;
6、 稳定性测试;
3、集成测试的方法
i. 一次性组装方式(大爆炸集成方法);
ii. 递增式测试(自顶向下和自底向上);
iii. 混合递增式集成测试方法(三明治集成方法)
4、集成测试工作完成的标志
a) 成功的执行了测试计划中规定的所有集成测试;
b) 修正了所有发现的错误;
c) 测试结果通过了专门小组的评审;
7.6系统测试
1、系统测试的概念
系统测试是为判断系统是否符合规定而对集成的软、硬件系统进行的测试活动,它的对象是完整的、集成的计算机系统,重点是新开发的软件配置项的集合。
2、系统测试设计的一般流程
i. 理解软件和测试目标;
ii. 涉及测试用例;
iii. 运行测试用例并处理测试结果;
iv. 评估测试用例和测试设计;
3、系统测试手段
b) 软件故障模型;
c) 典型攻击方法(25种典型攻击方法)
d) 软件故障植入(基于模式的故障植入和基于系统调用的故障植入)
e) 软件攻击的突破口
7.7动态测试工具
(1) CppUnit单元测试工具—按照层次管理测试
(2) Goc的覆盖测试工具Gcov
(3) 功能测试工具HP UFT—自动化测试工具
(4) 性能测试工具HP LoadRunner
8软件手工测试与自动化测试
8.1手工测试
1、概念
手工测试就是测试人员按照事先为覆盖测试软件需求而编写的测试用例,根据测试大纲内所描述的测试步骤,手工输入执行,包括与软件进行交互,然后观察结果是否存在问题或是否有异常发生。
2、特点
a) 测试人员工作量大;
b) 很难进行全面测试;
c) 所需要测试的测试用例过多;
d) 测试过程中缺乏科学有效的管理手段;
e) 反复测试影响测试人员对于测试的严格性降低;
f) 难以对不可视对象或对象的不可视属性进行测试;
3、适用场合
i. 测试很少执行的项目中;
ii. 软件运行任然不稳定时;
iii. 测试项目中涉及物理交互较多时;
8.2自动化测试
1、概念
将大量的重复性的测试工作交给计算机去完成,通常是使用自动化测试工具来模拟手动测试步骤,执行用某种设计语言编织的测试程序,控制被测软件的执行,完成全自动或半自动测试的过程。
2、特点
1、 高效率的进行测试;
2、 可以执行一些手工测试困难或者不可能做的测试;
3、 准确性提高;
4、 资源利用率得到提高;
5、 具有一致性和可重复性;
6、 有利于回归测试;
7、 测试具有移植性;
8、 缩短测试时间,节约时间成本;
3、适用场合
i. 软件维护时使用的回归测试;
ii. 执行压力测试时;
iii. 配置和兼容性测试等项目;
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!