努力工作,快乐生活

发布新日志

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

    陈能技 发布于 2007-10-21 20:49:00

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

    陈能技
    2007-10-21

    什么是分类树?
    什么是分类树?设想你希望设计出一个系统用于把一堆的美金硬币分成不同的类别(例如:一分币、五分币、一角币、二角五分币)。假设通过一些测量手段可以区别这些硬币,例如可以用直径来分类。你可以把硬币倒入一个槽,槽的直径恰好能让一角的硬币通过,如果能通过,那么它就被划分为一角的硬币;否则就继续倒入另外一个槽,槽的直径恰好能让一分币的硬币通过,如果能通过,则被分类成一分币;否则又继续下一个槽,这个槽的直径只容五分币大小的通过,如此类推。这样的过程实际上就是在构造一棵分类树。用于构造分类树的判断过程提供了一种有效的方法用于把一堆的硬币归类,而这种方式可以用于更广泛的各种各样的分类问题。
     
    分类树被广泛应用于各种学科,例如医疗诊断、计算机数据结构、植物分类、心理学的决策论等。我们现在要讨论的是分类树在测试用例的设计方面的应用。
     
    分类树方法用于测试用例的设计
    测试用例的设计是对测试质量而言非常关键的软件测试活动,因为测试用例集合的选择对测试的深度和测试范围的影响非常大。
     
    分类树方法是由Grochtmann和Grimm在1993年提出的,是在软件功能测试方面一种有效的测试方法,通过分类树把测试对象的整个输入域分割成独立的类。
     
    按照分类树方法,测试对象的输入域被认为是由各种不同的方面组成并且都与测试相关。对于每个方面,分离和组成各种类别,而分类结果的各类又可能再进一步地被分类。这种通过对输入域进行层梯式的分类表现为树状结构。随后,通过组合各种不同分类的结果来形成测试用例。
     
    使用分类树方法,对于测试人员来说最重要的信息来源是测试对象的功能规格说明书。使用分类树方法的一个重要的好处是:它把测试用例设计转变成一个组合若干结构化和系统化的测试对象组成部分的过程 - 使其容易把握,易于理解,当然也易于文档化。
     
    如何使用分类树方法设计测试用例?
    分类树方法的基本原理是:首先把测试对象的可能输入按照不同的分类方式进行分类,每一种分类要考虑的是测试对象的不同的方面。然后把各种分开的输入组合在一起产生不冗余的测试用例,同时又能覆盖测试对象的整个输入域。
     
    因此,可以把使用分类树方法设计测试用例的过程分为3大步骤:
    1、  识别出测试对象并分析输入空间。
    2、  对测试对象的输入空间进行分类。
    3、  画出分类树、组合成测试用例。


    在第一个步骤中,测试人员需要确定与测试相关的方面。每个方面应该有精确的限制,从而可以清晰地区别测试对象的可能输入。例如,上图中的大小(Size)、颜色(Colour)、形状(Shape)共同组成了测试对象的可能输入的方面。
     
    在接下来的步骤,依据测试对象的每个方面对可能的输入进行划分,这个划分就是数学上说的"分类"。分类的结果就形成了各种"类"。因此一个"分类"的结果代表了测试对象的某个方面的输入。例如,大小(Size)方面的可能输入是大(Large)或者小(Small);颜色(Colour)方面的可能输入是红色(Red)、绿色(Green)、蓝色(Blue)等。
     
    最后一个步骤是形成测试用例。测试用例是由不同分类的类组合形成,在组合类的时候需要注意逻辑兼容性,也就是说交集不能为空。测试人员组合类形成需要的测试用例,以便覆盖测试对象的所有方面并充分考虑它们的组合。例如,测试用例1就考虑了大尺寸、红颜色、圆形的输入。
     
    分类树方法测试用例设计的工具
    如果测试用例是依据软件功能规格来设计的,那么我们叫这种类型的测试为功能测试。虽然功能测试对于验证系统非常重要并且广泛应用在测试中,但是只有很少的方法和工具可以系统地产生相应的测试用例。
     
    而CTE XL(Classification Tree Editor eXtended Logics)是为数不多的工具之一。它是一个语法控制的、图形化的编辑器。帮助我们更加有效地使用分类树方法进行测试用例的设计。
     
    工具的使用方法比较简单,下面作简要的介绍。
    1、首先创建测试对象,如下图所示,创建一个测试对象Block,并开始进行分类。



    2、对测试对象进行分类:添加类别元素Size、Colour、Form,如下图所示。
     


    3、向各种类别添加类,形成分类树,如下图所示。
     


    4、添加测试用例,如下图所示。


    5、对于添加的每个测试用例,通过选择并标注各类的组合,形成需要的测试用例,如下图所示。

    6、最后把测试用例输出到文档,以便将来测试人员按照测试用例文档执行测试。
     
    分类树方法测试用例设计工具的扩展思路
    虽然CTE XL在应用分类树方法进行测试用例设计方面已经很出色,而且考虑到了与测试用例管理、需求管理的整合,考虑到了测试用例组合的自动化,也考虑到了测试用例组合的规则问题。但是我认为在分类树方法的测试用例设计工具的开发上还可以考虑实现更多有用的功能特性。
     
    首先,可以考虑分类树与软件设计的整合。目前大部分软件企业在软件设计方面都遵循了UML的方式进行设计,能对系统进行详细和深入的分析。而测试用例的设计也是一个由粗到细的设计过程,有些细节不能在需求阶段考虑清楚的,可以在设计阶段借鉴详细设计的结果来指导测试用例的设计。因此如何把UML类图、顶层用例图等直接转换成分类树是一个值得我们考虑的方向。
     
    其次,在测试用例的自动产生方面可以把正交表设计和均匀表设计考虑进去。正交表和均匀表也是很多测试人员使用的测试用例设计方法。正交表的整齐可比性、均匀表的均匀分散性为测试用例的选择筛选提供了有效的途径。它们能使测试用例的设计既不失完整覆盖性,又能有效控制和减少测试用例个数,从而使测试用例的可执行性更强。

     

  • 一道受用终身的测试题

    ljoanve 发布于 2007-03-30 22:32:02

    这是一家公司要招收新的职员其中一个测试的问题…… 你开着一辆车。 在一个暴风雨的晚上。 你经过一个车站。 有三个人正在等公共汽车。 一个是快要死的老人,好可怜的。 一个是医生,他曾救过你的命,是大恩人,你做梦都想报答他。 还有一个女人/男人,她/他是那种你做梦都想娶/嫁的人,也许错过就没有了。 但你的车只能坐一个人,你会如何选择那?请解释一下你的理由。 我不知道这是不是一个对你性格的测试, 因为每一个回答都有他自己的原因。 老人快要死了,你首先应该先救他。 然而,每个老人最后都只能把死作为他们的终点站, 你先让那个医生上车,因为他救过你,你认为这是个好机会报答他。 同时有些人认为一样可以在将来某个时候去报答他, 但是你一旦错过了这个机会,你可能永远不能遇到一个让你这么心动的人了。 问你能怎样回答这问题?????????
    (答案:
    在200个应征者中,只有一个人被雇佣了,他并没有解释他的理由,他只是说了以下的话

    “给医生车钥匙,让他带着老人去医院,而我则留下来陪我的梦中情人一起等公车!”

    每个人我认识的人都认为以上的回答是最好的,但没有一个人(包括我在内)一开始想到。

    是否是因为我们从未想过要放弃我们手中已经拥有的优势(车钥匙)?

    有时,如果我们能放弃一些我们的固执,狭隘,和一些优势的话,我们可能会得到更多。

    其实真正让我感到震撼的就是这最后一句话,你能够放弃什么,
    我们的一生中,总是有着太多的目标和理想,总想索取,其实有时候放弃也是一种美丽。
Open Toolbar