第三周作业

白盒测试

白盒测试以程序的结构为依据,所以又称为结构测试。早期的白盒测试把注意力放在流程图的各个判定框,使用不同的逻辑覆盖标准来表达对程序进行测试的详尽程度。随着测试技术的发展,人们越来越重视对程序执行路径的考察,并且用程序图代替流程图来设计测试用例。为了区分这两种白盒测试技术,把前者称为逻辑覆盖测试,后者称为路径测试。 ----《软件工程——原理、方法与应用》

下面,我结合自己做的Web计算器和验证码项目的计算器的实现部分来谈谈白盒测试。

计算部分是利用算式树的逆波兰式,再根据括号、小数点、数字、乘除、加减的优先级,利用“栈”来实现的,其算法流程已是相当经典。而判定输入算符的合法性并阻止用户的非法输入是我自己的思想,因此我就算符判定部分的代码来讲。

先贴上判定部分的JavaScript代码: JavaScript Source

参数c是当前输入的字符,str是之前输入的算式串。程序允许输入的字符有'0'~'9'、'('、')'、'.'。

逻辑覆盖测试

我们用pre代表在c之前输入的字符,那么会得到大致如下的流程图(自己设计并绘制):

语句覆盖

每条语句至少执行一次

测试用例 通过路径
str="1", c='2' a, b, c, e, g
str="." c='-' a, i, j, k, m, n
str="+", c='(' a, i, o, s, t
str="(1+", c=')' a, i, o, p, u, v
str="1+0", c='.' a, i, o, p, q, w, x
str="1+1.2", c='=' a, i, o, p, q, r, y, z

在此就不全部一一列举了。

判定覆盖

使得程序中每个判定条件的取真分支和取假分支至少评价一次

那么除了上面的路径,还有在判定使取相反真假值的分支。
比如:

测试用例 通过路径
str="", c='2' a,b,d
str=")", c='2' a, b, c, f
str="0", c='2' a, b, c, e, h
str="", c='+' a, i, j, l
str="+", c='(' a, i, o, s, t

条件测试

判定覆盖只关心判定表达式的值(真/假),而条件覆盖涉及到判定表达式的每个条件的值(真/假)

比如某个判定表达式中有两个条件,但在判定覆盖中只测试了真假分支。 在条件测试中就要覆盖到不同条件的表达式,即每个条件的“真”、“假”至少执行一次
但是在此设计的流程图中没有含有两个条件以上的判定,因为都只是单独对str字符串或c字符的判定。

判定/条件覆盖

同时满足判定覆盖和条件覆盖的要求

条件组合覆盖

求出判定中所有条件的各种可能组合值,每一可能的条件组合至少执行一次

posted on 2016-03-19 23:09  2013551629卫重波  阅读(138)  评论(0编辑  收藏  举报

导航