黑盒测试
黑盒测试:把测试的对象看作是一个黑盒子,检查程序的功能是否符合说明。(数据驱动)
存在的问题:举个例子
假设一个程序P有输入量X和Y及输出量Z,在字长为32位的计算机上运行,若X和Y取整数,按黑盒方法进行穷举测试
我们来分析分析这道题,当我们按黑盒方法进行穷举测试,可能采用的测试数据组2^64.
如果测试一组数据需要一毫秒,我们完成测试需要5亿年。
黑盒测试用例设计
等价类划分
把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分选取少数有代表性的数据作为测试用例。
有效等价类
无效等价类
划分等价类的原则:
1、如果输入条件规定了取值范围,或者是值的个数,可以确定一个有效得等价类和两个无效得等价类。
2、如果输入条件规定了输入值的集合,或者规定了“必须如何”得条件,这时可以确定一个有效等价类和一个无效等价类。
3、如果输入条件是一个布尔量,可以确定一个有效等价类和一个无效等价类。
4、如果规定了输入数据的一组值,而且程序要对每个输入值分别进行处理,可以确定一个有效等价类和一个无效等价类。
5、如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同的角度违反规则)
边界值分析方法
三角形三条边ABC,应该满足ABC都大于0,两边之和大于第三边,
这里的任何一个范围都不能有差错,比如三条边都不能是大于等于0,这里不能有等于。这就是边界值的问题。
边界值分析设计测试用例应该遵循的原则:
1、如果规定了取值范围,则对应该范围的边界内附近,恰好在边界个边界外附件(无效等价类中)设计测试用例。
这里举个例子:规定1—5千克邮件收费两元,我们应该选取0.9,1,1.1,4.9,5,5.1千克设计测试用例。
2、如果规定了数据的个数,则应对最小个数,最大个数,比最小个数少1,比最大个数大1进行测试。
3、针对规格说明中的每个输出条件使用前面的准则。
4、如果程序规格说明中提到的输入或输出域是个有序的集合(如顺序文件,线性表),等选有序集的第一个和最后一个元素作为测试用例。
等价类和边界值方法的区别
1、编辑遏制不是从等价类中随便选取一个数据作为代表,而是选一个或者特定的值,使这个等价类每个边界都作为测试的目标。
2、边界值分析不能只考虑输入条件,还要考虑输出条件。
一般联合等价类划分和边界值分析两种方法。
错误推测法
直觉
因果图
适用范围:测试时必须考虑输入条件的各种组合,可使用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来设计测试用例,这样就需要用因果图。
步骤:
1、找出原因,结果
2、找出原因和原因之间有什么关系,原因和结果之间有什么关系。
3、特殊情况,用记号标明约束限制条件
4、转换成判定表
5、把判定表每一列拿出来做位依据,设计测试用例。
基本符号
约束条件的符号
其实最后这我也没有看懂奥,先留着吧,总有一天会豁然开朗的。
白盒测试
白盒测试:看作一个透明的盒子,对程序所有逻辑路径进行测试。(逻辑驱动)
这个图包括了执行20次的循环,路径覆盖的话,包含了5^20条路径,每条路径需要1毫秒,我们需要3170年。所以还是有很大的问题。
逻辑覆盖
两个判断,四条路径。
语句覆盖
:设计若干个测试用例,运行被测程序,使得每一个可执行语句至少被执行一次.
判定覆盖:判定点全部为真或者全部为假,分别至少经历一次。
条件覆盖
:设计若干个测试用例,运行被测程序,使得程序中每个判断每个条件的可能值至少执行一次。
判定条件覆盖:设计足够的测试用例, 使得判断中每个条件的所有可能取值至少执行一次,同时每个判断中的每个条件的可能取值至少执行一次。
条件组合覆盖
:设计足够的测试用例,运行被测程序,使得每个判断所有可能的条件取值组合至少被执行一次。
路径覆盖