自学软件测试-白盒测试笔记
Posted 小懒猪谢-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自学软件测试-白盒测试笔记相关的知识,希望对你有一定的参考价值。
按照测试方法的分类,测试可以分为白盒测试和黑盒测试。
黑盒测试是把产品看成一个黑盒子,不关心具体代码是怎么实现功能的,只关心数据的输入和输出。所以黑盒测试也称为数据驱动测试。
白盒测试也称结构测试或逻辑结构测试,这个盒子是白色的,所以我们需要知道代码是怎么实现功能的。测试人员需要根据程序的内部逻辑和结构进行测试用例的选择和设计。在白盒测试中,程序中所有的逻辑路径都应该被测试到。
所以白盒测试需要测试人员看懂代码,是一种基于代码的测试。与黑盒测试相比,白盒测试对测试人员的要求更加高。
白盒测试的基本方法主要有以下六种:
1.语句覆盖
2.分支覆盖
3.条件覆盖
4.判定条件覆盖
5.路径覆盖
6.组合覆盖
按照覆盖强度由低到高排序:语句覆盖<分支覆盖<条件覆盖<判定条件覆盖<条件组合覆盖<路径覆盖
语句覆盖(最弱覆盖)
语句覆盖需要我们设计出来的测试用例中保证程序的每一个语句至少被执行一次。因为它仅仅考虑对代码中的执行语句进行覆盖而没有考虑各种条件和分支,比较难发现代码中存在的问题。
以下面的代码为例:
if A and B then action1
if C or D then action2
只需要一条测试用例:
A=true B=true C=true
就可以实现程序中每一个语句都执行一遍的要求。
再看一个示例:
switch ( value )
case 0:
other = 30;
break;
case 1:
other = 50;
break;
case 2:
other = 300;
case 3:
other = other / value;
break;
default:
other = other * value;
请问需要多少个测试用例才可以满足语句覆盖的要求
答案是4个。Attention!case2没有break。所以case 2 和case 3可以在value=2的时候被执行到。
只要看见switch就要注意每个case语句后面有没有break~
分支覆盖(判定覆盖)
分支覆盖(判定覆盖):使得程序中的每个判断的取真和取假至少经历一次,即判断的真假均曾被满足。
同样的,我们再来看这个代码:
if A and B then action1
if C or D then action2
需要两条测试用例:
1:a=true b=true c=true d=false
2: a=true b=false c=false d=false
条件覆盖
条件覆盖要求所设计的测试用例能够使每个判定中的每个条件都获得可能的取值,即每个条件至少有一次真值和假值。
同样的,我们再来看这个代码:
if A and B then action1
if C or D then action2
也是需要两条测试用例即可满足每个条件都取过真值和假值。
1:a=true b=true c=true d=true
2: a=false b=false c=false d=false
注意要区分判断和条件。
判定条件覆盖
判定条件覆盖是将判定覆盖和条件覆盖结合在一起。使得测试用例中,判断中的每个条件所有可能的取值至少执行一次,同时每个判断本身所有的结果也要执行一次。但仍旧没有考虑到各种条件的组合情况。
代码:
if A and B then action1
if C or D then action2
两个测试用例即可满足:
1:a=true b=true c=true d=true
2: a=false b=false c=false d=false
设有一个判断语句
if(!(ch >= '0' && ch <= '9'))
printf("This is not a digit!\\\\n");
else
printf("This is a digit!\\\\n");
为实现判定-条件覆盖,需要设计的测试用例个数至少为:3个
为了实现条件覆盖,就需要三个测试用例了,同时完成了判定覆盖。
以上是关于自学软件测试-白盒测试笔记的主要内容,如果未能解决你的问题,请参考以下文章