文档介绍:软件测试用例设计
北京万维空间网络技术有限责任公司
1
测试用例
测试用例由测试输入数据以及与之对应的输出结果组成。
测试用例设计的好坏直接决定了测试的效果和结果。所以说在软件测试活动中最关键的步骤就是设计有效的测试用例。 测试用例可以针对黑盒测试设计用例,也可以针对白盒测试设计用例,我们今天只讲针对白盒测试的用例设计方法。
2
概念
语句覆盖:语句覆盖就是设计若干个测试用例,运行被测试程序,使得每一条可执行语句至少执行一次;
判定覆盖(也称为分支覆盖):设计若干个测试用例,运行所测程序,使程序中每个判断的取真分支和取假分支至少执行一次;
条件覆盖:设计足够多的测试用例,运行所测程序,使程序中每个判断的每个条件的每个可能取值至少执行一次;
判定-条件覆盖:设计足够多的测试用例,运行所测程序,使程序中每个判断的每个条件的所有可能取值至少执行一次,并且每个可能的判断结果也至少执行一次,换句话说,即是要求各个判断的所有可能的条件取值组合至少执行一次;
条件组合测试:设计足够多的测试用例,运行所测程序,使程序中每个判断的所有可能的条件取值组合至少执行一次;
路径测试:设计足够多的测试用例,运行所测程序,要覆盖程序中所有可能的路径。
3
下面以例子进行分析讲解:
void DoWork(int x,int y,int z)
{
int k=0,j=0;
if((x>3)&&(z<10))
{
k=x*y-1; //语句块1
j=sqrt(k);
}
if((x= =4)||(y>5))
{
j=x*y+10; //语句块2
}
j=j%3; //语句块3
}
4
画出上面函数的流程图如下:
5
语句覆盖:
为了说明简略,分别对各个判断的取真、取假分支编号为b、c、d、e。
为了测试语句覆盖率只要设计一个测试用例就可以把三个执行语句块中的语句覆盖了。
测试用例输入为:{ x=4、y=5、z=5}
程序执行的路径是:abd
该测试用例虽然覆盖了可执行语句,但并不能检查判断逻辑是否有问题,例如在第一个判断中把&&错误的写成了||,则上面的测试用例仍可以覆盖所有的执行语句。可以说语句覆盖率是最弱的逻辑覆盖准则。
6
分支覆盖
对于上面的程序,如果设计两个测试用例则可以满足条件覆盖的要求。
测试用例的输入为:
{ x=4、y=5、z=5}
{ x=2、y=5、z=5}
上面的两个测试用例虽然能够满足条件覆盖的要求,但是也不能对判断条件进行检查,例如把第二个条件y>5错误的写成y<5,、上面的测试用例同样满足了分支覆盖。
7
条件覆盖
条件覆盖就是设计若干个测试用例,运行被测试对象,使得程序中每个判断的每个条件的可能取值至少执行一次。
对例子中的所有条件取值加以标记。例如:
对于第一个判断:
条件x>3 取真值为T1,取假值为-T1
条件z<10 取真值为T2,取假值为-T2
对于第二个判断:
条件x=4 取真值为T3,取假值为-T3
条件y>5 取真值为T4,取假值为-T4
8
则可以设计测试用例如下
上面的测试用例不但覆盖了所有分支的真假两个分支,而且覆盖了判断中的所有条件的可能值。
9
但是如果设计了下面的测试用例,则虽然满足了条件覆盖,但只覆盖了第一个条件的取假分支和第二个条件的取真分支,不满足分支覆盖的要求。
10