linux白盒测试流程

发表于:2015-03-25来源:uml.org.cn作者:不详点击数: 标签:linux
白盒测试的主要目的有两点,一点是验证软件需要是否在代码中被覆盖,二是进行代码覆盖率分析,尽可能多的覆盖所有软件代码。显然,最重要的第一点。分析代码覆盖率就是为了

  本文主要结合gdb和gcov开源工具,在linux环境下进行白盒测试

  白盒测试的主要目的有两点,一点是验证软件需要是否在代码中被覆盖,二是进行代码覆盖率分析,尽可能多的覆盖所有软件代码。显然,最重要的第一点。分析代码覆盖率就是为了检查代码跟需求是否匹配,然后再继续根据需求添加新代码,或者删除掉根本没有执行的死代码。

  所以当代码覆盖率达到100%,说明代码已经很完美的匹配了软件需求,白盒测试工作也就结束了。这就是白盒测试的根本目的。

  下面就结合具体的例子说明linux白盒测试流程。

  这里有个简单的 程序,计算1+2+3..+8的和 sum。如果有条程序需求,当sum不等于36,设置quit=0,否侧,设置quit=1。

  $cat calnumber.c

1 #include <stdio.h>
2
3 int main()
4 {
5 int i,sum,number;
6 int quit;
7 number = 8;
8 sum = 0;
9 for(i = 0; i <= number; i++)
10 {
11 sum += i;
12 }
13
14 if(sum != 36)
15 {
16 quit = 0;
17 printf("sum = %d\n", sum);
18 } else
19 {
20 quit = 1;
21 printf("sum is 36\n");
22 }
23
24 if(quit) printf("Finish!\n");
25
26 return 0;
27 }

  很显然需求设计两个用例,一个是sum=36, 另外一个是sum!=36,这样程序需求也就覆盖到了。目前,我们还没有看到程序,但是我们已经可以设计用例了,所以说在编码人员写程序之前,测试人员就可以结合程序需求设计所有的测试用例。当程序写完之后,测试人员就可以马上进行测试。

  我们把这个用例写成gdb脚本。具体如下,需要熟悉gdb命令。

  $cat calnumber.gdb

# For comments

file calnumber

# Test Case 1
echo \n
echo ---------------------\n
echo Test Case 1\n
echo \n
break calnumber.c:main
run

break calnumber.c:9
continue
echo "check number == 8"\t
print number == 8
echo "check sum == 0"\t
print sum == 0
echo "set number = 4"\t
print number = 4

break calnumber.c:14
continue
echo "set sum = 10"\t
print sum = 10

break calnumber.c:24
continue
echo "check quit == 0"\t
print quit == 0
echo "check i == 5"\t
print i == 5
echo "check sum == 10"\t
print sum == 10

Delete
continue

# Test Case 2
echo \n
echo ---------------------\n
echo Test Case 2\n
echo \n
break calnumber.c:main
run

break calnumber.c:24
continue
echo "check i == 9"\t
print i == 9
echo "check sum == 36"\t
print sum == 36
echo "check quit == 1"\t
print quit == 1

Delete
continue

# -------------------------------
quit

原文转自:http://www.uml.org.cn/Test/2009021210.asp