第三周作业
白盒测试
白盒测试以程序的结构为依据,所以又称为结构测试。早期的白盒测试把注意力放在流程图的各个判定框,使用不同的逻辑覆盖标准来表达对程序进行测试的详尽程度。随着测试技术的发展,人们越来越重视对程序执行路径的考察,并且用程序图代替流程图来设计测试用例。为了区分这两种白盒测试技术,把前者称为逻辑覆盖测试,后者称为路径测试。 ----《软件工程——原理、方法与应用》
下面,我结合自己做的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) 编辑 收藏 举报