1.3软件测试技术
分类:静态测试;动态测试
1)静态测试
定义:是指不执行程序代码而寻找代码中可能存在的错误或评估程序的过程
包含:各阶段评审;代码检查;程序分析;软件质量度量
代码检查方法:
A.代码审查:组长,资深程序员,程序编程者,专职测试人员采用讲解,提问并使用检查表的方式审查代码。
B.桌面检查:程序员自己检查所编写的程序
C.代码走查:是一种正式的评审活动,小组中至少有一位资深程序员,程序员诵读代码,解释,审查人员审查,做出书面报告和错误报告,交给程序开发人员。
D.技术评审:最正式的评审,有开发组,测试组和相关人员联合进行,综合运用走查,审查技术,逐行,逐段进行检查。
2)动态测试
定义:通过运行被测程序来检查运行结果与预期结果的差异,并分析运行效率和健壮性等指标。包含三部分,构造测试实例,执行程序,分析程序的输出结果
分类:(是否关心软件内部结构和具体的实现角度划分)白盒测试,黑盒测试,灰盒测试
(软件开发的过程)单元测试,集成测试,确认测试,系统测试,验收测试及回归测试
A.白盒测试
定义:“白盒”测试又称为结构测试或逻辑驱动测试是一种按照程序内部逻辑结构和编码结构设计测试数据并完成测试的一种测试方法。
分类:
* 语句覆盖:语句覆盖是最起码的测试要求,使得每一条语句至少被执行一次对程序的逻辑覆盖很少,只关心判定表达式的值,是很弱的逻辑覆盖标准。
* 判定覆盖:要求设计足够的测试用例,使得程序中的每一个分支至少通过一次即每一条分支语句的“真”值和“假”值都至少执行一次。
* 条件覆盖:不仅每一个语句至少执行一次,使得判定中的每个条件获得各种可能的结果。
判定覆盖只关心整个判定表达式的结果,条件覆盖关心的则是每个条件各种取值的结果。
* 判定/条件覆盖:设计足够多的测试用例,使得判定中每个条件的所有可能取值至少能够获取一次,同时每个判断的所有可能的判定结果至少执行一次。
* 条件组合覆盖:要求设计足够多的测试用例,使得每个判定中条件的各种组合至少出现一次。满足条件组合覆盖标准的测试用例,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准。
* 路径覆盖:要求设计足够多的测试用例,使得程序中所有的路径都至少执行一次 。
B.黑盒测试
定义:黑盒测试又称功能测试或数据驱动测试把测试对象当作看不见内部的黑盒,在完全不考虑程序内部结构和处理过程的情况下,测试者仅依据程序功能的需求规范考虑,确定测试用例和推断测试结果的正确性.站在使用软件或程序的角度,从输入数据与输出数据的对应关系进行的测试在软件的接口处进行测试通过导出执行程序所有功能需求的输入条件集,实现功能覆盖,需求覆盖。
分类:
* 等价类划分方法,把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据做为测试用例,代表性数据作用等价于该类中的其他值。使用这一方法设计测试用例,首先必须在分析需求规格说明书的基础上划分等价类,列出等价类表。
* 边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。从测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。
* 因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。
3)测试用例设计--测试用例
定义:测试用例是为特定的目的而设计的一组测试输入,执行条件和预期的结果。
特点:正确性,完整性,准确,清晰简洁,可维护性,适应性,可重用性等。
基本原则:基于测试需求的原则;基于测试方法的原则;兼顾测试充分性和效率的原则;测试用例的代表性;测试结果的可判定性;测试执行的课再现性原则
测试用例覆盖内容:
正确性测试; 容错性(健壮性)测试; 完整(安全)性测试; 接口间测试; 数据库测试; 边界值分析法; 压力测试; 等价划分; 错误推测; 效率; 可理解(操作)性; 可移植性; 回归测试; 比较测试
测试用例编写要素:
名称和标识; 测试追踪; 用例说明 ;测试的初始化要求
;测试的输入 ;期望的测试结果; 评价测试结果的准则;
操作过程; 前提和约束; 测试终止条件
测试用例的设计步骤:
测试需求分析;业务流程分析;测试用例设计;测试用例评审;
测试用例更新完善
4)单元测试
定义:单元测试又称模块测试,是针对软件设计的最小的单位——程序模块或功能模块,进行正确性检验的测试工作。(代码级)
内容:
* 模块接口测试:在单元测开始,应该对通过所有被测模块的数据进行测试。
* 局部数据结构测试
* 路径测试:检查由于计算错误、判定错误、控制错误导致的程序错误。
* 错误处理测试
* 边界测试:边界测试是单元测试中最后的任务。
要求:
语句覆盖尽可能达到100%;分支覆盖尽可能达到100%;错误处理路径尽可能达到100%;单元的软件特性覆盖;各种数据特性覆盖。
方法:
驱动模块:相当于所测模块的主程序; 桩模块:由被测模块调用,用以代替有被测单元所调用的模块的功能。
5)集成测试:
定义:集成测试又叫组装测试或联合测试,是单元测试的多级扩展,是在单元测试的基础上进行的一种有序测试。
内容:
* 集成后的功能性测试
* 接口测试:模块间的接口包括函数接口和消息接口。
* 全局数据结构测试:全局数据结构往往存在非法修改的隐患。
* 资源测试:资源测试包括共享资源测试和资源极限测试。
* 性能测试:依据某个部件的性能指标进行性能测试,及时发现性能瓶颈。
* 稳定性测试
方法:
* 一次性组装方式(或称大爆炸集成方法):一次性组装方式是一种非渐增式测试方法,也可叫做整体拼装。
* 渐增式测试:(1).自顶向下集成测试方法:深度优先方法;广度优先方法(2).自底向上集成测试方法(3).混合渐增式集成测试方法(或称三明治集成方法)
6) 确认测试
定义:确认测试是检查已经组装好的软件系统是否满足需求规格说明的各种需求,以及软件配置是否安全,正确。
7)系统测试
把经过确认测试的软件在实际环境中运行,并与其他系统组合在一起测试。
系统测试过程定义
* 系统测试需求获取:测试需求必须是可观测、可测评的行为;每个用例或系统的补充需求与测试需求之间不存在一对一的关系;在需求规格说明书中每一个功能描述将派生一个或多个测试需求;....
* 系统测试策略选择:要实施的测试类型和测试目标;采用的技术;用于评估测试结果和测试是否完成的标准;以及对测试策略所述的测试工作存在影响的特殊事项。
* 系统测试采用的技术
* 系统测试环境建立
* 系统测试人员组成
* 系统测试要交付的文档