黑盒测试
等价类划分法
等价类划分是把所有可能的输入数据,及程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。
等价类划分一般经过两个过程——分类和抽象。
优点:基于相对较少的测试用例,能够进行完全覆盖。
缺点:缺乏特殊用例的考虑。
下面拿出我实验时的题目作为实例。
假设,有一个测试域,测试一个一个10位的手机号码是否有效。
要求:
1、位数为十位的数字;
2、不能以数字0开始
写出相应的等价类划分表及等价类划分测试用例
边界值分析法
边界值分析法就是在某个输入输出变量范围的边界上,验证系统功能是否正常运行的测试方法。
判定表方法
等价类划分法和边界值分析法用于单因素输入和输出,对于多因素输入和输出,根据某一个输入组合就能直接判断输出结果,而且每个输入条件或输出结果都可以用“成立”或“不成立”来表示,即输入条件和输出条件只有1和0两个取值,这时就采用判定表方法来设计组合(测试用例)。
一个判定表由条件和活动(条件作为输入,活动作为输出)两部分组成。
实例:打印机是否能打印出来正确内容,有多个因素影响,包括驱动程序,纸张,墨粉等。
- 条件桩:列出问题的所有条件,如驱动程序,纸张,墨粉。
- 动作桩:列出可能针对问题所采取的操作,如打印正确内容,打印错误内容,不打印等。
- 条件项:针对所列条件的具体赋值,即每个条件可以取真值和假值。
- 动作项:列出在条件项(各种取值)组合情况下应该采取的动作。
- 规则:任何一个条件组合的特定取值及其相应要执行的操作。在判定表中贯穿条件项和动作项的一列就是一条规则。
为了方便,下图展示我拍下书上的初始化的判定表和优化后的判定表。(光线不太好)
因果图法
利用图解法分析输入的各种组合情况,从而设计测试用例的方法。
因果图中的约束:输入输出之间存在依赖关系,称为“约束”。
对于输入条件的约束有E、I、O、R四种约束。
E约束(异):a和b不能同时 为1。
I 约束(或):a、b、c不能同时为0。
O约束(唯一):a和b必须有一个且仅有一个为1。
R约束(要求):即a为1时,b不能为0。
对于输出条件的约束只有M约束。
M约束(强制):若结果a为1,则结果b强制为0。
因果图法最终生成的是判定表。利用因果图生成测试用例的基本步骤如下:
(1)分析软件规格说明中的输入输出条件并分析出等价类,并给每个输入输出赋予一个标识符。分析软件规格说明中的语义,通过这些语义找出相对应的输入与输入之间、输入与输出之间的关系。
(2)将对应的输入输出之间,输入与输出之间的联系关联起来,并将其中不可能的组合情况标注成约束或者限制条件,形成因果图。
(3)由因果图转换为判定表。
(4)将判定表中的每一列拿出来作为依据,设计测试用例。
下面是我做实验时的题目拿出来做实例。
计算汽车的保险费用
规则1:小于65岁的女性, 保费为 $500
规则2:小于25岁的男性, 保费为 $3000
规则3:25到64岁之间的男性, 保费为 $1000
规则4: 大于65的人, 保费为 $1500
白盒测试
判定覆盖
比“语句覆盖”稍强的覆盖标准是“判定覆盖”(或称分支覆盖)标准。
基本思想:设计若干用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均被满足。
实例:
条件M={ a > 0 and b > 0 }
条件N={ a>1 or c >1}
测试用例:
- a= 2, b=1,c=6
- a=-2,b=1,c=6
被测试程序中的每一个分支都至少执行一次。满足了判定覆盖,也就满足了语句覆盖。
条件覆盖
基本思想:设计若干测试用例,执行被测程序后,要使每个判断中每个条件的可能取值至少满足一次。
在上述判定覆盖例子下,写出条件覆盖的测试用例
判定条件覆盖
判定条件覆盖实际上是将两种方法结合起来的一种设计方法,它是判定和条件覆盖设计方法的交集。
条件组合覆盖
条件组合覆盖的基本思想:设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。
基本路径覆盖
基本路径覆盖就是设计所有的测试用例,来覆盖程序中的所有可能的,独立的执行路径。
基本路径覆盖前提是知道有多少条基本路径,基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证被测试程序的每个可执行语句至少被执行一次。
基本路径法通过以下几个步骤实现:
1.程序的流程图。
2.计算程序的环路复杂性。
(1)V(G)=区域数目。
(2)V(G) =边界数目-节点数目+2
(3)V(G)=判断节点数目+1
3.确定基本路径。
4.准备测试用例,确保基本路径组中的每一条路径被执行一次。
逻辑覆盖强弱比较