这一章 一上来就提出了一个非常好的关键的问题
在时间和成本约束的条件下
在所有可能的测试用例中,哪个子集最有可能发现最多的错误?
然后这一章围绕这个话题展开 这一章节是全书重点,也是每一个测试人员需要掌握的基本功。
黑盒:等价类划分 边界值分析 因果图分析 错误猜测 (这里没有提到正交实验法)
白盒:语句覆盖SC 判定覆盖DC 条件覆盖CC 判定/条件覆盖 CDC 多重条件覆盖MCC
我们先来看白盒
完整的白盒测试是将程序中的每条路径都执行到然而对于一个有循环的程序来说 完全的路径测试并不切合实际
逻辑覆盖测试
1.SC语句覆盖测试
白盒测试中较弱的准则。
以java 为例
public void foo(int a,int b,int x){
if (A>1 && B==0){
X=X/A;
}
if(A==2 || X>1){
X=X+1;
}
}
A=2 B=0 X=3就可以每条语句都被执行
2.判定覆盖或分支覆盖是较强一些的逻辑覆盖准则
该准则要求每一个判断都至少有一个为准和为假的输出结果,也就是说每条分支路径都必须至少遍历一次
分支或者判定的例子 switch do while if else
判定覆盖可以满足语句覆盖,比语句覆盖更强,但仍有不足,303 211 两条TC就可以
但是如果后面第二个判断存在错误,这两个TC找不到这个错误
3.条件覆盖
条件覆盖情况下,要编写足够的TC以确保将一个判断中每个条件的所有可能的结果至少执行一次
条件覆盖可能会使判断中每个条件都取到两个结果真/假,而判定覆盖做不到。
4.判定/条件覆盖 CDC
设计足够的TC,让一个判断中的每个条件的所有可能的结果至少执行一次,每个判断的所有可能的结果至少执行一次,将每个入口点都至少调用一次。
5多重条件覆盖 MCC
不细讲 逻辑和前面差不多。
黑盒部分:
1.等价划分
2.边界值分析
3.因果图->判定表
4.错误猜测
测试策略
这些概念都是基本功,不细讲