【软件测试】应用白盒测试实例
⦁白盒测试也称结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件或程序验证。⦁采用白盒测试方法必须遵循以下几条原则,才能达到测试的目的:⦁保证一个模块中的所有独立路径至少被测试一次。⦁所有逻辑值均需测试真 (true) 和假 (false) 两种情况。⦁检查程序的内部数据结构,保证其结构的有效性。⦁在上下边界及可操作范围内运行所有循环。
白盒测试
白盒测试也称结构测试或逻辑驱动测试,是针对被测单元内部代码的逻辑进行的测试。进行白盒测试一定是可以直接看到程序内部代码是如何运作的,然后再依据用于实现程序的代码结构进行测试用例设计和执行,从而完成检测产品内部是否符合规定运行的白盒测试。白盒测试方法主要应用于单元测试、重点逻辑测试、代码输入&输出的详细测试等更“透明”的测试,所以对测试人员的代码阅读能力有一定的要求。
采用白盒测试方法时必须遵循以下几条基本原则,才能达到测试的目的:
⦁ 通过代码走查,检查程序内部的数据结构,保证其结构的有效性和完整性。
⦁ 保证一个模块中的所有独立路径至少被测试覆盖一次。
⦁ 所有逻辑值均需测试真 (true) 和假 (false) 两种情况下的运行逻辑。
⦁ 在参数的上下边界及可操作范围内运行所有循环。
由上面的特点可看出,白盒测试的优点是在测试中可以实现对模块代码有更高的覆盖率,缺点则是设计测试用例较复杂、业务功能覆盖不全面、测试人员资源消耗大。
白盒测试的方法
1.静态
研发技术方案评审,功能代码走查,代码审查,通过工具扫描代码静态分析等
2.动态
逻辑覆盖法、基本路径测试法
逻辑覆盖法 是通过对程序逻辑结构和代码的遍历实现对程序有更高覆盖率的测试方法。逻辑覆盖其实是一系列测试过程的总称,有了各种测试过程的辅助就可以进行越来越完整的业务通路测试。
我们根据覆盖目标的不同和覆盖源程序语句的详尽程度,将逻辑覆盖分为:语句覆盖,判定覆盖,条件覆盖,条件/判定覆盖,条件组合覆盖,路径覆盖(以下例题将依次讲解)
基本路径测试法是在程序控制流图的基础上,通过分析程序的环路复杂性,导出基本可执行路径集合,从而设计出测试用例,这也是测试人员最常使用的测试方法。(以下例题有详解)
3.实例讲解
应用逻辑覆盖法的实例
题目:根据如下代码实例画出程序流程图,并用逻辑覆盖法设计详尽的白盒测试用例。
if (a>1) and (b = 0){
x = x / a;}
if(a = 2) or (x > 1){
x = x+ 1;}
解题:代码对应的程序流程图如下
白盒测试的测试用例如下:
1)语句覆盖:即以上四个可执行语句至少都覆盖一次
例-- a = 2, b = 0, x = 3 覆盖路径:a-c-e
2)判定覆盖:以上两个判定的“真”和“假”至少都执行一次
例-- a = 2, b = 0, x = 3 覆盖路径:a-c-e
a = 1, b = 0, x = 1 覆盖路径:a-b-d
3)条件覆盖:两个判定的的每个条件都取得各种可能的结果
例-- a = 2, b = 0, x = 3 取到判定条件1中a>1且b = 0,判定条件2中 a=2和 x/a >1的结果
a = 1, b = 1, x = 1 取到判定条件1中a不大于1且b != 0,判定条件2中a!=2和 x不小于1的结果
4)判定/条件覆盖:两个判定的“真”和“假”至少执行一次且两个判定的的每个条件取得各种可能的结果
例-- a = 2, b = 0, x = 3
a = 1, b = 1, x = 1 (由前面3,4的举例可知,这两条用例适合)
5)条件组合覆盖:两个判定的每种条件组合至少都被执行一次
例-- a = 2, b = 0, x = 3 覆盖组合(a > 1, b = 0)和(a = 2, x > 1)
a = 2, b = 1, x = 1 覆盖组合(a>1, b != 0)和(a = 2, x不大于1)
a = 1, b = 0, x = 3 覆盖组合(a 不大于1, b = 0)和(a != 2, x > 1)
a = 1, b = 1, x = 1 覆盖组合(a 不大于1, b != 0)和(a != 2, x 不大于1)
6)路径覆盖:每条通路的路径至少执行一次
例-- a = 2, b = 0, x = 3 覆盖路径:a-c-e
a = 1, b = 0, x = 1 覆盖路径:a-b-d
a = 2, b = 1, x = 1 覆盖路径:a-b-e
a = 3, b = 0, x = 3 覆盖路径:a-c-d
应用基本路径测试法的实例
题目:根据如下代码实例画出程序流程图,并用基本路径法设计详尽的白盒测试用例。
void Sort ( int iRecordNum, int iType ){
int x=0;
int y=0;
while ( iRecordNum > 10 ){
if ( iType== 0 ){
x=y+2;
} else if(iType== 1 ){
x=y+10;
}else{
x=y+20;}
}
}
解题:以上代码对应程序流程图如下
经以上流程图进行路径分析,得到下面四个基本路径并设计测试用例如下:
路径1覆盖语句: 1-7;测试用例-- num=10,type为任意值
路径2覆盖语句: 1-2-3-1…;测试用例-- num=11,type=0
路径3覆盖语句: 1-2-4-5-1…;测试用例-- num=11,type=1
路径4覆盖语句: 1-2-4-6-1…;测试用例-- num=11,type为非1的任意值
更多推荐
所有评论(0)