三、测试用例的设计(简单应用) 首先来了解白盒技术) P' {9 P1 e( {, c6 s1 C: W
白盒测试是结构测试,所以被测对象基本上是源程序,以程序内部逻辑为基础设计测试用例。
: t) Q1 F5 Y" t4 n 使用白盒技术,要尽可能覆盖最多的路径,当程序内部存在判定时,就要考虑逻辑覆盖。
0 l2 v6 m6 ?6 |9 m' t! A0 y (1)语句覆盖:就是要设计足够多的测试用例(也就是输入的数据),使被测程序中每个语句至少执行一次。在这里,重点在于每个语句即每个语句都要被执行过。设计时要记住这一点。
; u1 \1 y: l' K- ~- f; j( L' U9 S (2)判定覆盖:指设计足够的测试用例,使得程序中每个判定表达式至少获得一次"真"值和"假"值,从而使程序的每一个分支至少都通过一次,因此判定覆盖又称为"分支覆盖"。它和语句覆盖有什么不同呢?. r9 V3 U* {2 l
就在于判定,语句覆盖不管是真是假,只要执行过这句就成,而判定覆盖则必须让这个语句的执行结构为真和为假都要有测试用例给出。所以判定覆盖比语句覆盖严格些。但是判定覆盖也不能检查出全部错误,因为有些条件语句即使写错了,也同样能够产生正确真值或假值。
. U: @: \2 r8 s% J+ | 比如 (a=2)or(x>1),由于这个or的存在,那么把x>1错写成x1);在这里必须使a=2 、x>1,a≠2、x≤1均出现一次。
% Q6 r0 M, h* w" o0 ` I, q (4)判定/条件覆盖:上面条件覆盖也不一定满足判定该,因为只符合条件覆盖的用例可能会不满足每个判定语句均有真值或假值出现。因此要两者兼顾,判定条件覆盖就是指设计足够
* H2 k/ T# \3 b' p6 K- Q; E% A- ^ 的测试用例,使得判定表达式中每个条件的所有可能取值至少出现一次并且每个判定表达式所有可能的结果也至少出现一次。
; O. d7 o, i. ?' F! D4 i; h (5)条件组合覆盖:是指设计足够的测试用例,使得每个判定表达式中条件的各种或能的值的组合都至少出现一次。这就是前面两个覆盖的组合。* |0 ?0 u/ n( s9 E, z8 V. Z0 f
(6)路径覆盖:是指测设计足够的测试用例,覆盖被测试程序中所有可能的路径。: z9 X$ g/ c8 r/ p1 r0 |8 a
这六种覆盖进行比较有下面一个表:
* Q& H+ H! V2 t- J; H! q+ Z 条件组合发现错误的能力较强,凡满足其标准的测试用例,也必然满足前四种覆盖标准。在实际的逻辑测试中,一般以条件组合覆盖为主设计测试用例,然后再补充部分用例来达到路径覆盖的测试标准。
* x5 e6 {0 K& b' ?7 P 2、循环覆盖:当程序中存在循环结构时,要覆盖所有的路径是不可能的,但是可以通过限制循环结构来测试。8 ?0 I$ H0 i) e3 z7 N
3、基本路径测试:由于实际问题中,程序的路径是庞大的,因此要将覆盖的路径压缩到一定限度才能解决这个问题。基本路径测试就是在程序控制流程图的基础上,通过分析控制构造的环路复杂性,导出基本路径集合从面设计测试用例保证这些路径至少通过一次。# h4 @9 P) T9 i: W
再来看看黑盒技术
, b& w# J/ p5 i+ V 黑盒测试是功能测试。测试的是程序的接口。在设计测试用例时有以下几种方法:等价类的划分、边界值分析、错误推测和因果图。这几种方法都不能提供一组完整的测试用例,在实际测试中应把各种方法结合起来使用。
, `: }0 q3 S# \3 W 1、等价类的划分:是将输入数据按有效的或无效的(也称合理的或不合理的)划分成若干个等价类,测试每个等价类的代表值就等于对该类其他值的测试。用该法设计测试用例的步骤为:
& Y9 W, w* |# g3 I, K1 P (1)划分等价类(列一个表)
5 T& N0 h* o1 G% U (2)确定测试用例:根据已划分的等价类,按以下步骤设计测试用例:! O& K& J2 d: f* R' j
1)为每个等价类编号7 r' t9 g5 _4 B
2)设计一个测试用例,使其尽可能多的覆盖尚未被覆盖过的合理等价类。重复这步直到所有合理等价类被测试用例覆盖。. [7 c# \ O" S+ X1 h
3)设计一个测试用例,使其只覆盖一个不合理等价类。重复这一步直到所有不合理等价类被覆盖。2 U% E0 q0 L8 H5 f' o1 H% Q
要注意课本上的例子,会应用这种方法设计测试用例
! t$ A7 `2 e( `7 R 2、边界值分析:也就是在为设计测试用例时,在等价类范围内选择一些边界值作为测试用例,这样可以比单用等价类划分法所选的测试用例能查出更多错误,因为实践表明,程序更容易在处理边界值时发生错误。; ]9 e, k9 I0 U: k4 O
3、错误推测:通常根据经验或直觉来推测程序中可能出现错误的情况,并有针对性的编写检查这些错误的测试用例。
: x5 z$ C* i8 K% M' ^9 o' W 4、因果图:因果图能够有效地检测输入条件的各种组合可能会引起的错误。它的基本原理是通过画因果图,把用自然语言描述的功能说明转换为判定表,最后为判定表的每一列设计一个测试用例。. O, c5 t1 a, A/ Q# i9 L: k* L
在以上几种软件测试方法,各有所长,但各有所短,在实际测试中,应该采用综合策略,通常先用黑盒法设计基本的测试用例,再用白盒法补充一些必要的测试用例。# J. W1 \0 X3 y8 A p$ [
本节具体要掌握的就是等价类划分及边界值的测试用例设计。 |