浅析黑盒测试用例设计与实践

2012-05-08 04:41余飞侠
电脑知识与技术 2012年7期
关键词:软件测试

余飞侠

摘要:软件测试在软件生命周期中占据重要地位,测试用例的设计是软件测试工作的关键。结合工作实践,阐述了黑盒测试常用的测试用例设计方法。并给出两个案例进行分析,详细说明了如何应用这些方法设计高效的、可重构的测试用例。最后给出了合理的测试策略。

关键词:软件测试;黑盒测试;等价类划分法;因果图法;测试用例设计;测试策略

中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)07-1560-04

Test Case Design of Black-boxing and its Application

YU Fei-xia

(Anhui Sun Create Electronics Co., Ltd, Hefei 230088, China)

Abstract: The design of test cases is the key of software testing, which is very important in software development life cycle. Several commonly used test-case-design methods of black-box testing are elaborated with work practices. How to use these methods to design effective and reconstructable test cases is illustrated by two examples. A reasonable test strategy is presented finally.

Key words: software testing; black-box testing; equivalence partitioning; cause-effect graphing; test-case design; test strategy

随着软件在人们日常生活中的应用越来越广泛,软件质量也日益受到人们的重视。软件测试是保证软件质量必不可少的重要手段,测试工程师需要从项目生命周期之初就开始介入,这样他们才能准确地理解测试的对象并且和其他涉众一起生成可测试的需求。在软件生命周期的每一阶段中都应包含测试,进而检验各阶段的成果和预期目标的一致程度,尽可能早的发现缺陷并加以修正。如果不能在软件开发的早期阶段进行相应的测试,缺陷的延时扩散常常会给最后的成品测试带来巨大的灾难。虽然测试工作不可能发现所有的缺陷,但是我们必须设计出最可能发现最多数量的错误、并耗费最少时间和最小代价的测试。近年来,出现了各种各样的测试用例设计方法,为测试工程师进行测试提供了系统的方法。更重要的是,方法提供了一种有助于确保完全测试的机制,并提供了揭示软件缺陷的最高可能性。常用的黑盒测试用例设计方法有:等价类划分法、边界值分析法、错误推测法和因果图法。本文结合工作实践,阐述了黑盒测试常用的测试用例设计方法,并结合具体问题进行了详细的分析。

1黑盒测试简介

黑盒测试注重于测试软件的功能性需求,根据软件规格说明书的要求,运行并验证程序是否满足用户的需求,是一种从用户立场出发的测试。它把被测试程序当作一个黑盒子,不考虑其内部的逻辑结构,通过输入测试数据,根据需求来判断输出是否正确,确认软件功能的正确性和可操作性。根据软件的特定功能构造测试,以证实各功能完全可执行,同时在各功能中寻找缺陷。

在进行测试用例设计时,应考虑两个方面:一是覆盖率最大化,所设计的测试用例能够减少达到合理测试所需的附加测试用例数;另一方面,所设计的测试用例能够告知是否存在某些类型缺陷,而不是仅仅与特定测试相关的某个缺陷。众所周知,穷举测试是不可能的,测试工程师总是试图通过有限的测试用例最大限度的提高发现缺陷的数量,以取得最好的测试效果。

2测试用例设计方法分析

2.1等价类划分法

等价类划分法把所有可能的输入数据(即软件的输入域)划分为若干部分,然后从每个部分中选取少数代表性数据作为测试用例。在具体的测试执行过程中,通常把全部输入数据划分为若干等价类,在每一个等价类中选取一个数据作为测试的输入条件,这样就可以用少量代表性的测试数据取得较好的测试结果。使用该方法设计测试用例包含确定等价类和生成测试用例两个步骤。

该设计方法的关键是确定等价类。等价类包含有效等价类和无效等价类。有效等价类是指对于程序的需求来说是合理的,有意义的输入数据构成的集合,用来检验程序是否实现了规格说明书中所规定的功能和性能。无效等价类是指对于程序的需求来说是不合理的、没有意义的输入数据构成的集合,用来检验程序对于无效数据的处理。这样,程序不仅能接收合理的数据,也能经受意外的考验,從而确保程序具有更高的可靠性。

2.2边界值分析法

边界值分析法是考虑边界条件而选取测试用例的方法,是对等价类划分法的补充。该方法不仅关注输入条件,还需要考虑从输出等价类设计测试用例。实践证明,软件在输入、输出域的边界附近容易出现差错,而不是在输入范围的内部。因此,应该选取刚好等于、稍小于和稍大于等价类边界值作为测试数据,而不是选取每个等价类内的典型值或任意值作为测试数据。

举例来说,如果输入值的有效范围是a~b,那么测试用例应当包含a、b、略小于a和略大于b的值;如果某个输入条件代表一组值,那么测试用例应当执行其中的最大值和最小值,还应当测试略小于最小值和略大于最大值的值。

2.3错误推测法

错误猜测主要是一项依赖于直觉的非正规的过程。其基本思想是列举出可能犯的错误或错误易发情况的清单,然后依据清单来编写测试用例;另一种思想是在阅读规格说明时联系程序员可能做的假设来确定测试用例,即规格说明中程序员忽略的一些内容。在具体的测试执行过程中,测试工程师利用直觉和经验猜测出错的可能类型,然后编写测试用例来暴露这些错误。

猜测错误的常用依据:

1)以前产品测试中曾经发现的错误。

2)在单元测试时曾列出的许多在模块中常见的错误。

3)容易发生错误的情况。

4)补充等价类和边界值法遗漏的一些等价类组合。

2.4因果图分析法

因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。边界值分析法和等价划分法都是着重考虑输入条件,却没有考虑输入条件的各种组合、输入条件之间的制约关系。但是输入条件之间可能的组合太多,必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计。因果图法将规格说明转换为一个布尔逻辑网络,它使我们从不同的视角来审视规格说明。因此,建立因果图是一个暴露规格说明中模糊和不完整之处的好方法。

3测试用例设计实践

测试用例的设计是测试工作的重点也是难点,用例的好坏直接影响着测试的质量。对于不同项目类似功能的业务测试,设计可重用的用例不仅可以减少后续项目设计用例的时间。如果在设计可重用用例的基础上再考虑可重构性,就可以大大增强用例的可读性、可操作性、扩展性和重用性,从而提高测试效率。

3.1等价类划分和边界值分析法

下面以B/S架构的系统登录功能为测试对象,应用等价类划分和边界值分析相结合的方法进行测试用例设计。操作系统为Windows XP,浏览器为IE6.0。

功能要求:用户在浏览器的地址栏中输入服务器IP地址,弹出系统登录页面;输入用户名和密码,点击登录,系统自动校验,并给出相应提示信息;如果用户名和密码中任一项未输入或输入错误,登录后,系统给出相应提示信息;连续三次未通过系统验证,自动关闭登录页面。

表1系统登录测试用例

下面综合使用等价类划分法和边界值分析法设计系统登录测试用例,既减少了冗余的用例,又提高了发现软件错误的能力。根据规格说明书和详细设计说明,设计测试用例如表1所示。

3.2因果图法

因果图法采用系统的方法选择出高效的测试用例集。下面以自动售货机软件为测试对象,采用因果图法设计测试用例。

功能要求:有一个处理单价为1元5角的盒装饮料的自动售货机软件。若投入1元5角硬币,按下“可乐”、“雪碧”或“红茶”按钮,相应的饮料就送出来。若投入的是两元硬币,在送出饮料的同时退还5角硬币。

测试用例生成过程如下所示:

1)分析功能要求描述中,哪些是原因,哪些是结果,并给每个原因和结果赋予一个标识符。

表2因果关系表

2)分析功能要求的语义内容,找出原因和结果之间,原因和原因之间对应的关系,并根据这些关系,画出因果图;给图加上注解符号,说明由于语法或环境的限制而不能联系联系起来的“因”和“果”。

图1自动售货软件因果图

表3自动售货软件判定表

3)通过仔细的跟踪图中的状态变化情况,将因果图转换成一个有限项的判定表。

4)把判定表的每一列拿出来作为依据,设计测试用例。

表4自动售货软件测试用例表

4结束语

以上阐述的测试用例设计方法可以组合为一个整体的策略。一组合理的策略如下所述:如果程序的功能说明中含有输入条件的组合情况,则应首先使用因果图法;在任何情况下都必须使用边界值分析法,实践表明用这种方法设计测试用例发现程序错误的能力最强;必要时用等价类划分法补充一些测试用例;用错误推测法增加更多的测试用例。虽然使用上述策略并不能保证可以发现所有的错误,但实践证明这是一个合理的折中方案。建议综合多种测试方法来设计严格的程序测试,因为每一种测试方法都有其独特的优势和弱点。某种方法遗漏掉的错误,而用其它的方法就可能找出来。

参考文献:

[1] Dustin E.有效软件测试[M].新语,译.北京:清华出版社,2003.

[2]郑人杰.计算机软件测试技术[M].北京:清华大学出版社,1992.

[3] Patton R.软件测试[M].周予滨,姚静,译.北京:机械工业出版社,2002.

[4]肖利琼.软测之魂[M].北京:电子工业出版社,2011.

[5] Myers G J.软件测试的艺术[M].王峰,陈杰,译.北京:机械工业出版社,2006.

猜你喜欢
软件测试
基于OBE的软件测试课程教学改革探索
基于MBD模型自动生成测试用例的软件测试方法
计算机软件测试方法的研究
EXCEL和VBA实现软件测试记录管理
关于软件测试技术应用与发展趋势研究
一种航空机载软件测试项目的进度改进模型
军用软件测试文档生成设计与实现
软件测试工程化模型及应用研究
智能电能表软件测试技术概述
《软件测试》课程教学策略研究