文章列表首页> 学习资料 > 文章正文
设计测试用例
机构名称:    日期:2008 - 08 - 22    查看次数:

设计测试用例
4 .  设计测试用例的原则
l          测试用例的代表性:能够代表各种合理和不合理的、合法的和非法的、边界和越界的 , 以及极限的输入数据、操作和环境设置等;
l          测试结果的可判定性:即测试执行结果的正确性是可判定的或可评估的;
l          测试结果的可再现性:即对同样的测试用例,系统的执行结果应当是相同的。
 测试用例的组成
   测试用例应该由以下两部分组成
1) 输入数据
2) 处理(如计算、合并等)
3) 预期的输出结果
这就是说,在执行系统之前应该对期望的输出有很明确的描述,这样,测试后就可将系统的输出同它仔细对照检查。否则,如果不是先确定输出,就可能把似乎是正确而实际是错误的结果当成是正确的结果。
 设计测试用例应注意的事项
l 不仅要选用合理的输入数据作为测试用例(即肯定测试用例),还应选用不合理的输入数据作为测试用例(即否定测试用例)。许多人往往只注意前者而忽略了后者。为了提高系统的健壮性,输入数据不合理的各种情况是应该认真检查的(在开发过程中,正常业务处理的代码量只占有效代码量的 10% ,而例外处理的代码量要占有效代码量的 90% ),所以测试工作量也是如此,即肯定测试用例占总用例的 10% ,否定测试用例占总用例的 90% )。
l        除了检查系统是否做了它应该做的工作之外,还应检查系统是否做了它不应该做的事情。
l        应该长期保留所有的测试用例,直至这个系统被废弃不用为止。这是因为:设计测试用例是很费人工的,如果将用过的测试用例丢弃了,以后一旦需要再测试这个系统(例如因为系统内部作了某些修改)就需要再花很多人工,人们往往懒得再次认真地设计测试用例,因而“再测试”很少像初次测试那样“彻底”。如果系统的修改使得前面已测试过的部分产生了错误,“再测试”往往就不能发现这些错误。
4 .  设计测试用例
测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。)
.1  白盒法
    白盒法是以系统内部的逻辑为基础设计测试用例,所以又称为逻辑覆盖法。白盒法考虑的是测试用例对系统内部的覆盖程度,最彻底的白盒法是覆盖系统中的每条路径,但是由于系统中一般含有循环,所以路径的数目极大,要执行每条路径是不可能的,所以只能希望覆盖的程度尽可能高些。我们可以从以下几点考虑:
( 1 )语句覆盖
     “语句覆盖”是一个很弱的测试覆盖,它的含义是:选择足够的测试用例,使代码中每个有效语句(即注释语句除外)至少都能被执行一次。顺序语句覆盖率是 100% 。
( 2 )分支覆盖
     比“语句覆盖”稍强的测试覆盖是“分支覆盖”。这个标准是执行足够的测试用例,使代码中每个分支至少都获得一次“真”值和“假”值,或者说使得代码中的每个分支至少都通过一次。分支覆盖率是 80% 。
( 3 )循环覆盖
     “循环覆盖”的含义是:执行足够的测试用例,使得循环中的每个条件都得到验证。循环语句覆盖率是 80% 。
.2  黑盒法
    设计测试用例的另一种方法是黑盒法。与白盒法不同,黑盒法不关心系统内部的逻辑,而只是根据系统的功能说明、预期结果、数据流程或业务流程等来设计测试用例。黑盒法测试的依据是需求说明书或功能说明书。我们常常采用的方法是:
A 、划分等价类
  这一步是:先从系统的需求规格说明中找出所有的输入条件,然后为每个输入条件划分两个或多个等价类,此时可以使用下表:
 
 
输入条件
 
合理等价类 ( 合理输入数据 )
 
不合理等价类 ( 非法输入数据 )
 
 
 
 
 
 
 
l          划分等价类在很大程度上是试探性的,下面几点可供参考:
① 如果某个输入条件说明了输入的范围(如“数据值”是从 1 到 999 ),则可划分一个合理等价类(大于等于 1 而小于等于 999 的数)和两个不合理等价类(小于 1 的数,以及大于 999 的数)。
② 如果某个输入条件说明了输入数据的个数(如每个学生可以选修 1 至 3 门课程),则可划分一个合理等价类(选修 1-3 门课程)和两个不合理等价类(没选修课程,以及超过 3 门课程)。
③ 如果一个输入条件说明了一个“必须成立”的情况(如标识符的第一个字符必须是字母),则可以划分一个合理等价类(第一字符是字母),和一个不合理等价类(第一字符不是字母)。
④ 如果某个输入条件说明了输入数据的一组可能的值,而且认为系统是用不同的方式处理每一种值的(如职称的输入值可以是助教、讲师、副教授和教授 [FS:PAGE] 4 种),则可为每一种值划分一个合理等价类(如助教、讲师、副教授和教授 4 种),并划分一个不合理等价类(上述 4 钟职称之外的等价类)。
l          设计测试用例
. 设计测试用例,使它包括尽可能多的、尚未被包括的合理等价类;重复做这一步,直至这些测试用例包括所有的合理等价类。
. 设计测试用例,使它包括一个(而且仅仅一个)尚未被包括的不合理等价类;重复做这一步,直至测试用例已包括所有的不合理等价类。
必须注意的是 ,这一步应使每个例子仅包括一个不合理等价类。这样做的原因是:系统中的某些错误检测往往会抑制其它错误检测,例如某个系统的功能说明中指出:输入数据是书的“类型”(它可以是“精装”、“平装”和“线装”)和书的“数量”(其允许值是 1-999 ),如果某个测试用例中,书的“类型”是“活页”,书的“数量”是 0 ,他包括了两个不合理的条件(“类型”和“数量”都不合理),系统在发现“类型”不合理之后,可能不会再去检查“数量”是否合理,因此这一部分系统实际上并没有测试到。
  这里采用等价类划分法具个例子:
1.  对一个输入 1-100数字的输入提交功能设计测试用例
a.      输入数字为空;
b.      输入数字为 0;
c.      输入数字为 -1;
d.      输入数字为 101;
e.      输入数字为 1-100中间的任何数;
f.      输入数字为小数; 7.输入为字母;
g.      输入为控制字符。
2.  免费电子邮件系统:
a)   新用户注册页面
数据项取值
USER NAME :长度为 3-19 ;以字母开头 ; 非空
姓名:非空
密码:非空
确认密码:值和密码值相同
出生年份:年——四位数字;月—— 1-12 ;日—— 1-31 ;
其余项:不要求
等价类的划分
数据项
有效等价类
无效等价类
USER NAME
( 1 )长 3-9 ;( 2 )以字母开头 ;
(1) 长度 <3 ;( 2 )非字母开头( 3 )长度 >19
( 3 )非空
( 4 )为空
 
( 5 )为空
认密码
 
( 6 )值和密码值不同
生年份
( 6 )月— 1-12 ;( 7 )日— 1-31
 
( 4 )非空
余项
( 8 )都填( 9 )都不填
( 5 )值和密码值相同
b). 忘记密码部分
数据项取值 :
登录用户名:已存在的用户名
用户的回答:和注册值相同
密码: >=5
确认密码:值和密码值相同
等价类的划分
数据项
有效等价类
无效等价类
登录用户名
1) 已存在
(1) 不存在
用户的回答
( 2 )和注册值相同
( 2 )和注册值不同
密码
( 3 ) >=5
( 3 ) <5
密码确认
(4) 值和密码值相同
(4) 和密码值不同
 
B 边界值分析法
“边界情况”是指输入等价类或输出等价类边界上的情况。
边界值分析法与等价分类法的差别在于:
① 边界值分析法不是从一个等价类中任选一个例子作代表,而是选一个或几个例子,使得该等价类的边界情况成为测试的主要目标。
② 边界值分析不仅注意输入条件,它还根据输出的情况(即按输出等价类)设计测试用例。
运用边界值分析法,需要有一定的创造性,以下几点供使用时参考:
① 如果某个输入条件说明了值范围,则可选择一些恰好取到边界的例子,另外,再编写一些代表非法输入数据的例子,它们的值恰好越过边界。
② 如果一个输入条件指出了输入数据的个数,则为最小个数、最大个数、比最小个数少 1 、比最大个数多 1 、分别设计例子。
③ 为每个输出条件使用上面第①点。
④为每个输出条件使用上面第②点。
⑤ 如果系统的输入和输出是有序集合(如顺序文件、线性表等),则应特别注意集合的第一个或最后一个元素。
 
C 、因果图法
 
D 、错误推测法
人们也可以通过经验或直觉推测系统中可能存在的各种错误,从而有真对性地编写检查这些错误的例子,这就是错误推测法。错误推测法没有确定的步骤,很大程度上是凭经验进行的。

划分等价类:其测试用例为