谈测试软件测试用例设计策略

更新时间:2024-04-08 作者:用户投稿原创标记本站原创
摘要:软件测试是软件开发过程的重要阶段,而测试用例的设计是软件测试中的重要组成部分。本文主要介绍了测试用例的白盒测试和黑盒测试技术,针对两种不同的测试方法,分别研究了测试用例的设计技术,并通过实例介绍了具体的测试用例设计过程。
关键词:软件测试;白盒测试;黑盒测试;测试用例
1007-9599 (2012) 21-0000-02
软件测试在软件开发过程起着十分重要的作用,它对软件可靠性有着重大的影响。一般情况下,软件开发周期都比较长,人的主观认识不可能完全符合客观现实,因此在软件生命周期的每个阶段都可能或多或少的出现错误。而为了尽可能在软件投入运行之后少出错误,就必须在运行之前就发现并改变软件中的错误,这是软件测试的主要目的。而设计测试方案是软件测试阶段的关键技术,而软件测试中最大的困难就是设计测试用例,本文将重点讨论软件测试中测试用例的设计方法。
1 软件测试的相关概念
测试方案是指具体的测试目的,应该输入的测试数据和预期的输出结果。其中测试数据和预期的输出结果称为测试用例,软件测试中如何确定测试用例中输入数据的选择方案是最大的困难。
设计测试用例的基本目标是要确定一组最可能发现某个错误或某类错误的测试数据。目前已经研究出许多的测试数据的技术,典型的软件测试技术有白盒测试技术和黑盒测试技术。
白盒测试技术是把程序看成一个透明的盒子,根据程序内部的逻辑测试结构,检测程序中的关键通路能否按要求正常的工作。白盒测试也称为逻辑驱动测试和结构测试。白盒测试根据在不同程序执行点点检查程序的状态来确定运行结果与预期的状态是否一致,所设计的测试用例要尽可能测试到程序所有的逻辑路径。
黑盒测试技术则把程序看成一个不透明的黑盒子,不考虑程序的处理过程和内部结构,只检查程序的功能是否能够正常使用。黑盒测试也称为数据驱动测试和功能测试。
2 白盒测试技术中测试用例的设计方法研究
白盒测试方法的主要作用有:
(1)至少测试一次程序子模块的所有独立执行路径;(2)针对所有可能的逻辑判定,至少一次取“真”或“假”两种情况;(3)在运行界限内和循环边界处执行循环体;(4)测试程序内部的数据结构的有效性。
在实际的数据测试中,如果程序具有多种循环嵌套的情况,不同的执行路径数目可能是天文数字,例如一个有5条路径的嵌套20次循环的小程序,包含不同执行路径条数为520次方,如果每一条路径测试1ms,全年无休时要测试完所有路径需要约3170年的时间。因此,我们必须采用一些替法,典型的方法是有选择的执行程序中某些最有代表性的通路。白盒测试的主要技术有:
2.1 根据程序内部的逻辑结构设计测试用例的技术—逻辑覆盖
(1)语句覆盖,选择足够多的测试数据以使被测程序中每条语句都至少执行一次。语句覆盖不考虑对程序的逻辑覆盖,它主要关心表达式的结果,却对每个条件取不同值的情况不做测试。因此,语句覆盖是比较弱的逻辑覆盖标准。在图论中和语句覆盖对应的是点覆盖。(2)判定覆盖,又叫分支覆盖,它首先满足语句覆盖的条件,同时对每个判定的每种可能的结果都至少执行一次,即对每个分支都至少执行一次每个判定,判定覆盖对程序的逻辑覆盖程度也不高。在图论中和判定覆盖相对应的是边覆盖。(3)条件覆盖,指的是不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果,条件覆盖中可能不包含判定覆盖。(4)判定/条件覆盖,指选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,每个判定表达式也取到各种可能的结果。(5)条件组合覆盖,要求选择足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。条件组合覆盖是逻辑覆盖标准中最强的。(6)路径覆盖,指的是选取足够多的测试数据,使程序的每条可能路径都至少执行一次。
测试用例设计举例1:如下图1所示程序段流程,实现语句覆盖需要设计的测试数据有:X=0,Y=3和X=-1,Y=2;实现条件覆盖至少采用的测试数据有:X=0,Y=3和X=3,Y=1;实现判定覆盖至少应用的2.2 测试程序的控制结构,主要包括条件测试,循环测试和基本路径测试。其中基本路径测试是由Tom McCabe提出的一种白盒测试技术,这种技术在设计测试用例时需要首先计算程序的环形复杂度,并用该复杂度为指南定义执行路径的基本集合。在实际测试中,仅靠基本路径测试还不能满足要求,还需要结合条件测试技术来检查程序模块中包含的逻辑条件,还有循环测试来专门测试循环结构的有效性。
3 黑盒测试技术中的测试用例设计方法研究
黑盒测试主要用来测试软件的功能特点,通过黑盒测试可以发现:
(1)是否有遗漏了的功能或者不正确的功能;(2)能否有正确的接收输入和正确的输出结果,这主要针对接口而言;(3)是否有外部信息访问错误或数据结构错误,同时,软件运行时能否满足性能上的要求;(4)软件在初始化或者退出时有无错误等;
使用黑盒测试同样不可能将所有可能的输入条件和输出条件用于测试,因为测试用例的组合是天文数字。例如一个程序有两个输入量和一个输出量,在32位计算机上运行,若X,Y取整数,按穷举测试时需要232×232=264组,如果一组数据需要1ms,全年无休,需要5亿年的时间。显然,我们必须设计合理的方案来减少测试用例的数量。目前黑盒测试的主要测试用例设计技术有:
 源于:毕业论文致谢范文www.808so.com
 3.1 等价类划分
等价类划分是把程序的输入域划分成若干个数据类,据此导出测试用例,因为对于同一类中的数据而言其作用是相同的[3]。等价类划分可以分为有效等价类和无效等价类。有效等价类是指符合程序功能要求的数据类,该类中包含的都是有意义的数据;而无效等价类指不能满足程序正确运行或者预期结果的数据类的集合。我们在设计测试用例时,要同时考虑有效等价类和无效等价类的设计方案。等价类的划分有自己的原则。
在具体使用等价类划分设计测试用例时有两个步骤:(1)设计一个新的测试方案以尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步骤直到所有有效等价类都被覆盖为止;(2)设计一个新的测试方案,使它覆盖一个而且只覆盖一个尚未被覆盖的无效等价类,重复这一步骤直到所有无效等价类都被覆盖为止。
3.2 边界值分析
使用边界值分析方法来设计测试用例时需要开发者具有一定的经验和创造性,通常根据划分的输入等价类和输出等价类的边界来确定边界值的结果,即选取刚刚等于、刚刚小于和刚刚大于边界值的测试数据,而不是选择等价类内部的数据作为测试用例。
3.3 错误推测法
错误推测法主要依靠直觉和经验,需要有一定开发大型软件工程的经验,其基本思想是通过列举出程序中可能有的错误和容易发生错误的特殊情况,并根据这些情况来选择测试方案。
4 小结
测试用例的设计方法并不是独立使用的,而是经常会进行一些不同设计方案的组合,如黑盒测试中的等价类划分和边界分析方法可以结合使用,进步设计更加合理的测试用例,找出更多的软件运行错误。
参考文献:
赵琳.软件测试用例设计方法[J].中国电子商务,2012.3:80~80.
李秀苹.浅谈软件测试用例设计[J].商情.2012(21):90~90.
[3]张海藩编著.软件工程导论[M].北京:清华大学出版社,2011.
[作者简介]
张炯(1983.9-),男,汉,上海人,助理工程师,本科

点赞:5655 浏览:19726