软件测试用例设计分析

2010-09-23 09:58:20郭学品
海南开放大学学报 2010年4期
关键词:白盒黑盒测试用例

郭学品,钟 声,黄 成

(1.海南大学信息科学技术学院,海南海口,570228; 2.海南师范大学信息科学技术学院,海南海口,571158)

软件测试用例设计分析

郭学品1,2,钟 声1,黄 成2

(1.海南大学信息科学技术学院,海南海口,570228; 2.海南师范大学信息科学技术学院,海南海口,571158)

软件测试是软件开发过程中的重要组成部分,是发现软件缺陷的重要环节,是保证软件质量和可靠性的重要手段。而软件测试的成效在某种程度上取决于采用的测试方法和测试用例的设计。因此,测试用例的设计是非常重要和关键的。文章就此对测试用例设计的基本原则、考虑要素、设计方法等进行了阐述和分析。

软件测试;测试用例;设计方法;白盒测试;黑盒测试

随着现代计算机在社会各行各业的广泛应用,各种软件走进了人们的日常工作和日常生活中,人们越来越多的依赖各种软件,从而也对软件品质保证提出了更高要求。在这样的背景下,软件测试在整个软件开发活动中就摆在了特别突出的位置。

软件测试是软件生命周期中的一个重要阶段,是保证软件质量和可靠性的重要手段。如何对软件进行全面、高效的测试成为软件行业比较关注的问题。测试用例是软件测试活动的核心部分,指导测试工作的开展,是软件测试必须遵守的准则。软件测试正是根据软件开发各阶段的规格说明和程序内部结构而精心设计了一批测试用例,并利用这些测试用例运行软件,来发现软件系统缺陷的。测试用例对测试工作的控制和指导作用相当于设计文档对编码的指导作用,尤其在大系统表现出对系统测试的权威性。

一 测试用例定义

测试用例是对软件运行过程中所有可能存在的目标、运动、环境和结果的描述,是对客观世界的一种抽象。测试用例是为特定目标开发的测试输入、执行条件和预期结果的集合,是有效发现软件缺陷的最小测试执行单元。这些特定目标可以是验证一个特定的程序路径或核实是否符合特定需求。

测试用例体现了一定的测试方案、方法、技术和策略,内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档。测试用例属于软件测试工作的指导性文件,测试用例的优劣直接影响软件测试的质量。

二 测试用例在软件测试中的作用

测试用例作为检验测试效果的重要参考因素,也从某种角度来衡量软件质量的好坏。设计良好的测试用例具有可重复使用的功能,可以使软件测试的成本降低,使测试效果事半功倍。

(一)有效性

不同测试人员使用相同测试用例得到的验证结果是相同的,它是测试人员进行软件测试的重要参考依据。

(二)易组织性

对于一个项目来说,测试用例有可能在数月或数年的测试过程中被创建、使用,测试计划应组织好这些测试用例,提供给测试人员作为参考和使用。

(三)可复用性

软件测试是不可能进行穷举测试的,设计良好的测试用例应具有可重复使用的功能,减少编制测试用例的数量,提高测试效率。

(四)可评估性

在测试中,测试用例的通过率是检验代码质量的保证。代码质量的高低,可以通过测试用例的通过率和软件错误的数量来衡量。

(五)可管理性

测试用例是检验测试人员工作进度和工作量,以及跟踪管理测试人员的工作效率的一种依据,从而合理做出测试计划和测试安排。

三 测试用例设计的基本原则

(一)尽量避免设计含糊不清的测试用例

含糊不清的测试用例会给测试过程带来困难,甚至影响测试结果。在测试过程中,测试用例一般有三种状态:通过、未通过和不能测试。如果测试未通过,一般会有测试的错误报告进行关联;如果不能测试,则需要找出原因,判断是否是测试用例本身的错误,还是环境因素等其他问题。不能说这个测试用例部分通过,部分未通过,不允许出现模棱两可的情况。含糊的测试用例会给测试人员的判断带来困难,也不利于测试过程的跟踪。

(二)尽量避免设计复杂繁琐的测试用例

复杂繁琐的测试用例难于保证测试用例的准确性。因此,在测试过程中,如果测试用例包含很多不同类型的输入或者输出,或者测试过程的逻辑复杂而不连续,此时就要对测试用例进行合理分解。

(三)尽量将类似功能的测试用例抽象并归类

由于软件测试是无法进行穷举测试的,所以对类似功能的测试用例的抽象归类显得尤为重要,一个好的测试用例应该能够代表一组或者一系列的测试过程。

四 测试用例设计考虑因素

(一)测试用例应具有代表性和典型性

一个测试用例应能基本涵盖一组或多组情形,这也是测试用例设计的初衷。

(二)测试用例设计时,要浓缩系统设计

测试用例需要准确反映系统功能设计,当然也不能完全复制使用规格设计说明书。同时,测试用例还要结合多个规格说明书进行设计,将所有可能出现的情况结合起来考虑。

(三)用户测试用例设计,要多考虑用户实际使用场景

用户测试用例基于用户实际的可能场景,从用户的角度模拟程序的输入,从而针对程序来进行测试的用例,需要考虑用户实际的环境因素。

(四)测试用例设计时,要考虑异常情况

测试用例不仅需要考虑正确的输入情形,还要考虑错误或异常的输入情况,以及需要分析如何使得这样的错误和异常能够发生。

五 测试用例设计方法分析

测试用例设计方法,主要分为白盒设计方法和黑盒设计方法。白盒设计方法分为逻辑覆盖法和基本路径覆盖法,其中逻辑覆盖法包括语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖法。黑盒设计方法分为等价类划分法、边界值划分法、错误推测法、因果图法等。在实际测试用例设计过程中,这些方法不仅单独使用,常常根据需要场合综合运用多个方法,使测试用例的测试效果更佳。

(一)白盒设计方法

白盒测试主要针对程序内部逻辑和数据流程的测试,因此白盒测试用例的设计需要了解程序的内部逻辑。根据程序的控制结构设计测试用例,主要用于软件验证。

白盒测试用例设计的目的是:

1.保证一个模块中所有独立路径至少被执行一次;

2.对所有逻辑值均需要测试真、假两个分支;

3.在上下边界及可操作范围内检查;

4.检查内部数据结构的有效性。

白盒测试用例设计方法的设计思想:

1.语句覆盖:设计若干测试用例,使被测程序中的每个语句至少都能执行一次。

2.判定覆盖:设计若干测试用例,使被测程序中的每个判断至少都能获得一次“真”值和“假”值,或者说使得程序中的每个分支至少都执行一次。

3.条件覆盖:设计若干测试用例,使每个判断中的每个条件的可能取值至少满足一次,即使得判定中的每个条件获得各种可能的结果。

4.判定-条件覆盖:设计若干测试用例,使判断条件中的所有条件至少执行一次取值,同时,所有判断的可能结果至少都执行一次。

5.条件组合覆盖:设计足够测试用例,使每个判断中的条件的各种组合都至少出现一次。

6.基本路径覆盖:设计足够测试用例,确保基本路径集中的每一条路径都执行。

上述的几种逻辑覆盖法中,它们的逻辑覆盖程度的强弱如图1所示。图中,连线上方的覆盖程度比连线下方的覆盖程度要强。其中,条件组合覆盖法覆盖程度最高,判定覆盖和条件覆盖不能比较覆盖程度强弱。

(二)黑盒设计方法

黑盒测试主要是基于功能规格说明进行的测试,黑盒测试用例的设计不需要考虑程序内部的逻辑结构和特性。黑盒测试主要根据输入条件和输出条件确定测试数据,检查程序是否能产生正确的输出。

黑盒测试用例设计的目的主要是:

1.检查功能是否实现或遗漏;

2.检查人机界面是否错误;

3.是否有数据结构错误或外部数据库访问错误;

4.性能等其他特性要求是否满足。

黑盒测试用例设计方法的设计思想:

1.等价类划分法:把程序的输入域划分为若干子集,从每一个子集选取少数具有代表性的数据作为测试用例,既考虑有效等价类划分,又要考虑无效等价类划分。

2.边界值划分法:从一个等价类中选一个或几个例子,测试等价类的边界情况;不仅根据输入条件,还可能根据输出情况来设计测试用例。

3.错误推测法:凭测试者经验和直觉推测程序中可能存在的各种错误,从而有针对性的编写检查这些错误的测试用例。

4.因果图法:着重检查输入条件的各种组合情况,找出因果关系,通过画因果图将功能说明转换成一张判定表,然后为判定表的每一列设计测试用例数据。

在实际应用中,采用黑盒法设计测试用例的策略为:首先使用边界值划分法,必要时用等价类划分法,必要时再用错误推测法;如果在程序中含有输入条件的组合,则先采用因果图法,再按上述策略进行。

通过上面论述,我们发现,白盒测试是一种验证技术,主要回答“我们在正确地构造一个系统吗?”;而黑盒测试是一种确认技术,主要回答“我们在构造一个正确的系统吗?”。两者的方法分析比较,我们知道各有千秋,每种方法提供的测试用例可能比较容易发现某种类型的错误,但不易发现其他类型的缺陷。因此,对于一个具体的待测系统,应该将各种设计方法结合起来,选择最佳的几种方法组合进行综合测试。

总之,在实际的测试用例设计中,还应将设计的基本原则和各种考虑因素结合起来,遵循基本书写规范,按照实际需求灵活组织设计测试用例。选择合适的设计方法和策略,使得设计出来的测试用例能够达到这样的要求:

1.可以最大程度地满足测试覆盖要求

2.可以最大程度地找出软件隐藏的缺陷

3.可以最高效率地找出软件错误

4.测试用例既不过分复杂、也不能过分简单

5.使软件缺陷的表现可以清楚的判定

6.测试用例包含期望的正确结果

7.待查的输出结果或文件必须尽量简单明了

8.测试用例内容清晰、格式一致、分类组织

9.不包含重复的测试用例

小 结

软件测试是软件研发过程的重要组成部分,是保证软件质量和可靠性的重要环节,软件测试的成效直接关系到软件系统的优劣。因此一个软件系统在发布上市前,都必须经过严格的测试过程。当然,由于软件系统的复杂性,软件测试不可能找到系统中的所有错误,也不能证明系统程序的正确性,只能最大程度的发现系统中隐藏的错误和缺陷。

测试用例设计是软件测试的核心,测试用例设计得当,在某种程度上决定着软件测试的成效。因此在软件测试中,测试用例的设计是非常重要和关键的。当然,对于一个比较复杂的系统测试来说,如何设计正确、高效的测试用例是非常困难的,需要软件测试人员具备较高的专业素质和丰富的测试经验。

[1]郑人杰.实用软件工程[M].北京:清华大学出版社,2002.

[2]张海藩.软件工程[M].北京:人民邮电出版社.2007.

[3]陈松乔,任胜兵,王国军.现代软件工程[M].北京:清华大学出版社,2005.

[4]肖汉等.软件工程理论与实践[M].北京:科学出版社,2006.

[5]朱少民.软件测试方法和技术[M].北京:清华大学出版社,2005.

[6]W illiam E.Lewis,Gunasekaran Veerapilla著,陈绍英等译.软件测试与持续质量改进[M].北京:人民邮电出版社, 2008.

[7]李宁,李战怀.基于黑盒测试的软件测试策略研究与实践[J].计算机应用研究,2009(3).

[8]崔天意.软件测试分析方法研究[J].信息化研究,2010(6).

(责任编辑:王 珏)

TP 311.5

A

1009-9743(2010)04-0136-04

2010-09-20

1、2.郭学品(1973-),男,汉族,海南昌江人。海南大学信息科学技术学院通信与信息系统专业2005级在职硕士研究生,海南师范大学信息科学技术学院讲师。主要研究方向:软件测试,软件工程;1.钟声(1962-),男,汉族,江西人。海南大学信息科学技术学院教授。主要研究方向:计算机算法,软件工程;2.黄成(1970-),男,汉族,海南文昌人。海南师范大学信息科学技术学院副教授。主要研究方向:教育技术。

海南省自然科学基金项目(项目编号:808154)

猜你喜欢
白盒黑盒测试用例
一种基于局部平均有限差分的黑盒对抗攻击方法
面向未来网络的白盒交换机体系综述
DWB-AES:基于AES 的动态白盒实现方法
通信学报(2021年2期)2021-03-09 08:55:32
基于SmartUnit的安全通信系统单元测试用例自动生成
网络“黑”“白”之争
通信世界(2018年29期)2018-11-21 06:34:44
基于混合遗传算法的回归测试用例集最小化研究
基于依赖结构的测试用例优先级技术
基于EEPROM数据读写的智能电能表白盒测试方法
电测与仪表(2014年3期)2014-04-04 09:08:08
软件回归测试用例选取方法研究