将"测试"进行到底!~!

测试用例编写方法参考

上一篇 / 下一篇  2008-03-30 21:12:02

第一章测试用例的概念

1.概述

Grenford J. Myers在《The Art of Software Testing》一书中提出:一个好的测试用例是指很可能找到迄今为止尚未发现的错误的测试,由此可见测试用例设计工作在整个测试过程中的地位,我们不能只凭借一些主观或直观的想法来设计测试用例,应该要以一些比较成熟的测试用例设计方法为指导,再加上设计人员个人的经验积累来设计测试用例,二者相结合应该是非常完美的组合。本文所介绍的测试用例设计方法对于测试设计人员将是一个很好的方法指导,当然看完本文也未必能设计出好的测试用例,有了好的方法作为指导后需要更多的实践经验加以巩固和提炼。只有将测试设计思想与丰富的实践经验相融合才能设计出高质量的测试用例,相信你行!

本文描述的范围:测试用例基本概念、测试用例设计方法、测试用例设计综合策略。

   关键词:测试用例、等价类划分、边界值分析、错误推测、因果图、判定表驱动分析、正交实验、功能图分析、场景设计

 

2.测试用例基本概念

2.1测试用例的定义

测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。测试用例是执行的最小实体。简单地说,测试用例就是设计一个场景,使软件程序在这种场景下,必须能够正常运行并且达到程序所设计的执行结果。

 

2.2测试用例的特征

1.最有可能抓住错误的;

2.不是重复的、多余的;

3.一组相似测试用例中最有效的;

4.既不是太简单,也不是太复杂。

 

2.3测试用例组成元素

1.用例ID

2.用例名称;

3.测试目的;

4.测试级别;

5.参考信息;

6.测试环境;

7.前提条件;

8.测试步骤;

9.预期结果;

10.设计人员。

 

2.4测试用例设计原则

1.测试用例的代表性:能够代表并覆盖各种合理的和不合理的、合法的和非法的、边界的和越界的以及极限的输入数据、操作和环境设置等。

2.测试结果的可判定性:即测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果。

3.测试结果的可再现性:即对同样的测试用例,系统的执行结果应当是相同的。

 

 

第二章 测试用例的编写方法

利用分类树方法设计测试用例

什么是分类数

o"G7p2IB Mx0什么是分类树?设想你希望设计出一个系统用于把一堆的美金硬币分成不同的类别(例如:一分币、五分币、一角币、二角五分币)。假设通过一些测量手段可以区别这些硬币,例如可以用直径来分类。你可以把硬币倒入一个槽,槽的直径恰好能让一角的硬币通过,如果能通过,那么它就被划分为一角的硬币;否则就继续倒入另外一个槽,槽的直径恰好能让一分币的硬币通过,如果能通过,则被分类成一分币;否则又继续下一个槽,这个槽的直径只容五分币大小的通过,如此类推。这样的过程实际上就是在构造一棵分类树。用于构造分类树的判断过程提供了一种有效的方法用于把一堆的硬币归类,而这种方式可以用于更广泛的各种各样的分类问题。51Testing软件测试SS0DIz7@9I m-il

51Testing软件测试网$?|X)b.@分类树被广泛应用于各种学科,例如医疗诊断、计算机数据结构、植物分类、心理学的决策论等。我们现在要讨论的是分类树在测试用例的设计方面的应用。

分类树方法用于测试用例的设计

0O${[1]Ip0\-KD0测试用例的设计是对测试质量而言非常关键的软件测试活动,因为测试用例集合的选择对测试的深度和测试范围的影响非常大。

[1]QC:^51Testing软件测试网*分类树方法是由GrochtmannGrimm1993年提出的,是在软件功能测试方面一种有效的测试方法,通过分类树把测试对象的整个输入域分割成独立的类。51Testing软件测试网u+W!}N qn

   51Testing软件测试网/If@-@/t|wz按照分类树方法,测试对象的输入域被认为是由各种不同的方面组成并且都与测试相关。对于每个方面,分离和组成各种类别,而分类结果的各类又可能再进一步地被分类。这种通过对输入域进行层梯式的分类表现为树状结构。随后,通过组合各种不同分类的结果来形成测试用例。

,K dI|{*p0   FH t u]‑O


r&e0使用分类树方法,对于测试人员来说最重要的信息来源是测试对象的功能规格说明书。使用分类树方法的一个重要的好处是:它把测试用例设计转变成一个组合若干结构化和系统化的测试对象组成部分的过程-使其容易把握,易于理解,当然也易于文档化。

如何使用分类树方法设计测试用例?

1x1g9oLtf0分类树方法的基本原理是:首先把测试对象的可能输入按照不同的分类方式进行分类,每一种分类要考虑的是测试对象的不同的方面。然后把各种分开的输入组合在一起产生不冗余的测试用例,同时又能覆盖测试对象的整个输入域。51Testing软件测试网+x


l kF
w ?W

    9Y
Z:C W pI6}Qa@(j0
因此,可以把使用分类树方法设计测试用例的过程分为3大步骤:

{%F/b;p5]%eZ01、识别出测试对象并分析输入空间。

51Testing软件测试网e/d!~"H(?4W A2、对测试对象的输入空间进行分类。51Testing软件测试网u
I
ch[1]a M)Yr%lL

3、画出分类树、组合成测试用例。

3、       51Testing软件测试网l9]:k7[%s(A8wmL

451Testing软件测试网
H-w(}FA5m4
在第一个步骤中,测试人员需要确定与测试相关的方面。每个方面应该有精确的限制,从而可以清晰地区别测试对象的可能输入。例如,上图中的大小(Size)、颜色(Colour)、形状(Shape)共同组成了测试对象的可能输入的方面。

5、q~)@ K(51Testing软件测试网D1d#\ I;g1O:~­在接下来的步骤,依据测试对象的每个方面对可能的输入进行划分,这个划分就是数学上说的"分类"。分类的结果就形成了各种""。因此一个"分类"的结果代表了测试对象的某个方面的输入。例如,大小(Size)方面的可能输入是大(Large)或者小(Small);颜色(Colour)方面的可能输入是红色(Red)、绿色(Green)、蓝色(Blue)等。

6、#u!y
A m R­?tW l0L8o;k5B"pS0
最后一个步骤是形成测试用例。测试用例是由不同分类的类组合形成,在组合类的时候需要注意逻辑兼容性,也就是说交集不能为空。测试人员组合类形成需要的测试用例,以便覆盖测试对象的所有方面并充分考虑它们的组合。例如,测试用例1就考虑了大尺寸、红颜色、圆形的输入。

分类树方法测试用例设计的工具

+SF O3E7?.h |6^


S8{0   *e(pL J n­E7W0} oD k%a9a0如果测试用例是依据软件功能规格来设计的,那么我们叫这种类型的测试为功能测试。虽然功能测试对于验证系统非常重要并且广泛应用在测试中,但是只有很少的方法和工具可以系统地产生相应的测试用例。

TVD\.P G;b r­Q


Y0   $_5I \\-z|y:J0CTEXLClassification Tree Editor eXtended Logics)是为数不多的工具之一。它是一个语法控制的、图形化的编辑器。帮助我们更加有效地使用分类树方法进行测试用例的设计。

5myFa­`8Kc;B0   51Testing软件测试网"@e'^!d~d‑B,PA工具的使用方法比较简单,下面作简要的介绍。

{ v Z‑Aa8k‑I1jZP(x0h01、首先创建测试对象,如下图所示,创建一个测试对象Block,并开始进行分类。

-z?F]CwC t0

W'ZB5L‑t v051Testing软件测试网}*JJ$S Y72、对测试对象进行分类:添加类别元素SizeColourForm,如下图所示。51Testing软件测试网HE3yX5SJ6` cK

 

51Testing软件测试网&EN/e
b


?#Bo9U&}3、向各种类别添加类,形成分类树,如下图所示。51Testing软件测试网
y:K*J:m(z6K&d&|

 

xDRw.I3W04、添加测试用例,如下图所示。

"w-Et­E1O0

51Testing软件测试网


TGGHJHr5、对于添加的每个测试用例,通过选择并标注各类的组合,形成需要的测试用例,如下图所示。51Testing软件测试网H
D u3M8i'v B'y'K

6、最后把测试用例输出到文档,以便将来测试人员按照测试用例文档执行测试。


U)r&e&M2f1K&l;]0 51Testing软件测试网7~"`fK
O­O
[1]G"s

分类树方法测试用例设计工具的扩展思路

虽然CTE XL在应用分类树方法进行测试用例设计方面已经很出色,而且考虑到了与测试用例管理、需求管理的整合,考虑到了测试用例组合的自动化,也考虑到了测试用例组合的规则问题。但是我认为在分类树方法的测试用例设计工具的开发上还可以考虑实现更多有用的功能特性。

\Ig8|j0 51Testing软件测试网X){x%t.qjh首先,可以考虑分类树与软件设计的整合。目前大部分软件企业在软件设计方面都遵循了UML的方式进行设计,能对系统进行详细和深入的分析。而测试用例的设计也是一个由粗到细的设计过程,有些细节不能在需求阶段考虑清楚的,可以在设计阶段借鉴详细设计的结果来指导测试用例的设计。因此如何把UML类图、顶层用例图等直接转换成分类树是一个值得我们考虑的方向。51Testing软件测试网i8y5OQT*py {


vG;l8u"E C sF+G0
其次,在测试用例的自动产生方面可以把正交表设计和均匀表设计考虑进去。正交表和均匀表也是很多测试人员使用的测试用例设计方法。正交表的整齐可比性、均匀表的均匀分散性为测试用例的选择筛选提供了有效的途径。它们能使测试用例的设计既不失完整覆盖性,又能有效控制和减少测试用例个数,从而使测试用例的可执行性更强。

测试用例设计白皮书-等价类划分方法

.方法简介

 

1.定义

是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。

2.划分等价类:

   等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。等价类划分可有两种不同的情况:有效等价类和无效等价类。

1)有效等价类

是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。

2)无效等价类

与有效等价类的定义恰巧相反。无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。

设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。

3.划分等价类的标准:

1)完备测试、避免冗余;

2)划分等价类重要的是:集合的划分,划分为互不相交的一组子集,而子集的并是整个集合;

3)并是整个集合:完备性;

4)子集互不相交:保证一种形式的无冗余性;

5)同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到"相同的执行路径"

4.划分等价类的方法

1)在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。如:输入值是学生成绩,范围是0100

 2)在输入条件规定了输入值的集合或者规定了"必须如何"的条件的情况下,可确立一个有效等价类和一个无效等价类;

3)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。

4)在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。

例:输入条件说明学历可为:专科、本科、硕士、博士四种之一,则分别取这四种这四个值作为四个有效等价类,另外把四种学历之外的任何学历作为无效等价类。

5)在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则);

6)在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。

5.设计测试用例

在确立了等价类后,可建立等价类表,列出所有划分出的等价类输入条件:有效等价类、无效等价类,然后从划分出的等价类中按以下三个原则设计测试用例:

1)为每一个等价类规定一个唯一的编号;

2)设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;

3)设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止.

 

.实战演习

1.某程序规定:"输入三个整数abc分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,分别作计算… "。用等价类划分方法为该程序进行测试用例设计。(三角形问题的复杂之处在于输入与输出之间的关系比较复杂。)
 
分析题目中给出和隐含的对输入条件的要求:
 
1)整数   2)三个数   3)非零数  4)正数
  
 
5)两边之和大于第三边    6)等腰    7)等边

  
如果abc满足条件(1~4),则输出下列四种情况之一:

   1)
如果不满足条件(5),则程序输出为"非三角形"
   2)
如果三条边相等即满足条件(7),则程序输出为"等边三角形"
   3)
如果只有两条边相等、即满足条件(6),则程序输出为"等腰三角形"
   4)
如果三条边都不相等,则程序输出为"一般三角形"
  
列出等价类表并编号


  
覆盖有效等价类的测试用例:
    a      b      c             
覆盖等价类号码
    3      4      5            
1--7
    4      4      5            
1--7),(8
    4      5      5            
1--7),(9   
    5      4      5            
1--7),(10

    4      4      4            
1--7),(11
  
覆盖无效等价类的测试用例:


  


2.
设有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在19901~204912月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的"日期检查功能"
  1)
划分等价类并编号,下表等价类划分的结果

输入等价类

有效等价类

无效等价类

日期的类型及长度

6位数字字符

②有非数字字符

③少于6位数字字符

④多于6位数字字符

年份范围

⑤在1990~2049之间

⑥小于1990

⑦大于2049

月份范围

⑧在01~12之间

⑨等于00

⑩大于12

  2)设计测试用例,以便覆盖所有的有效等价类在表中列出了3个有效等价类,编号分别为①、⑤、⑧,设计的测试用例如下:
   
测试数据   期望结果     覆盖的有效等价类
    200211     
输入有效     ①、⑤、⑧

TAG:

john009的个人空间 引用 删除 john009   /   2009-03-19 12:41:58
5
 

评分:0

我来说两句

日历

« 2024-04-25  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 27987
  • 日志数: 33
  • 建立时间: 2007-11-22
  • 更新时间: 2009-12-03

RSS订阅

Open Toolbar