覆盖测试
软件测试以及编写测试用例
软件测试的目标、过程和步骤
1、软件测试的目标
- (1)测试是为了发现程序中的错误而执行程序的过程
- (2)好的测试方案是极有可能发现迄今尚未发现的尽可能多的错误的测试
- (3)成功的测试是发现了迄今尚未发现的错误测试
2、软件测试的步骤
- (1)模块测试:保证每个 模块作为一个单元能够正确运行
- (2)子系统测试:着重测试模块之间的接口
- (3)系统测试:把经过测试的子系统装配成一个完整的系统来测试
- (4)验收测试:验证系统确定能够满足用户的需求
- (5)平行测试:比较 新旧两个系统的处理结果
3、软件测试的过程
软件测试的过程有两种方法:白盒测试、黑盒测试
黑盒测试:又称功能测试,(如果知道产品应具有的功能,可以通过测试来检验是否每个功能都能正常使用)把程序看做一个黑盒子,完全不考虑程序内部结构和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息(如:数据库或文件)的完整性。
白盒测试:又称结构测试,(如果知道产品的内部工作过程,可以通过测试来验证产品内部动作是否按照规格说明书的规定正常工作)可以把程序看做装在透明的白盒子里,测试者完全知道程序的结构和处理算法。这种按照程序内部的逻辑测试程序,检验程序中的主要执行通路是否能按预定的要求正确工作。
4、软件测试的准则
- (1)所有测试应能追溯到用户需求,测试的目的是发现错误,其中最严重的是不能满足用户需求的错误
- (2)应尽早的和不断地进行软件测试(不应把软件测试仅看做是软件开发一独立阶段,应把它贯穿到软件开发各个阶段)
- (3)充分注意测试中群集现象(虫子窝现象)
- (4)测试应从小规模开始,逐步进行大规模测试
- (5)不能做到穷举测试
- (6)第三方测试原则
白盒测试、黑盒测试的原理
白盒测试
白盒测试:又称结构测试,(如果知道产品的内部工作过程,可以通过测试来验证产品内部动作是否按照规格说明书的规定正常工作)可以把程序看做装在透明的白盒子里,测试者完全知道程序的结构和处理算法。这种按照程序内部的逻辑测试程序,检验程序中的主要执行通路是否能按预定的要求正确工作。
逻辑覆盖
①语句覆盖
选择足够多的测试数据,使被测试程序中每个语句至少执行一次
function is_positive_number(num):
if num > 0:
return True
else:
return False
要完成语句覆盖需要2个用例
- 测试用例:
num
= 5。这将覆盖第一条语句return True
。 - 测试用例:
num
= -3。这将覆盖第二条语句return False
。
②判定覆盖(分支覆盖)
不仅每个语句必须执行一次,而且每个判定的每种可能的结果都应该至少执行一次
也就是每个判定的所有可能结果都至少出现一次
也就是每个判定的每个分支都至少执行一次
③条件覆盖
不仅每个语句必须执行一次,而且使判定表达式中的每个条件都取到各种可能的结构
④判定/条件覆盖
是的判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果
⑤条件组合覆盖(组合覆盖)
是每个判定表达式中条件的各种可能组合都至少出现一次。(相比于上述几种覆盖标准来说最强)(注意“可能”二字,因为有些组合的情况难以生成,并不一定能使程序中的每条路径都执行到)
⑥路径覆盖
使程序的每条可能路径都至少执行一次
⑦点覆盖
使程序执行路径至少经过流图中的每个节点一次
⑧边覆盖
使程序执行路径至少经过流图中的每条边一次
覆盖程度
路径覆盖 > 多重条件覆盖 > 判定/条件覆盖 > 条件覆盖 > 判定覆盖 > 语句覆盖
任何一种覆盖方法都无法实现完全的测试。所以,在实际的测试用例设计过程中,根据需要将不同的覆盖方法组合起来使用,以实现最佳的测试用例设计 。
控制结构覆盖
- ①基本路径测试:Tom McCabe提出的一种白盒测试技术。
- a.根据过程设计结果画出相应的流图
- b.计算流图的环形复杂度
- c.确定线性独立路径的基本集合
- d.设计可以强制执行基本集合中每条路径的测试用例
②条件测试
③循环测试
黑盒测试
黑盒测试:又称功能测试,(如果知道产品应具有的功能,可以通过测试来检验是否每个功能都能正常使用)把程序看做一个黑盒子,完全不考虑程序内部结构和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息(如:数据库或文件)的完整性。