本文主要结合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,这样程序需求也就覆盖到了。目前,我们还没有看到程序,但是我们已经可以设计用例了,所以说在编码人员写程序之前,测试人员就可以结合程序需求设计所有的测试用例。当程序写完之后,测试人员就可以马上进行测试。