APP下载

软件测试用例的设计方法

2018-02-25张倩倩赵星汉高湘飞

电子技术与软件工程 2018年11期
关键词:正确性测试用例软件测试

张倩倩 赵星汉 高湘飞

摘要 众所周知,软件测试过程中,测试用例的设计是最复杂的,也是最关键、最耗时的。黑盒测试在软件研制的验证和确认阶段中,占有重要的比重。测试用例设计所处的阶段占据了整个测试过程的50%以上工作量。测试用例的正确性、有效性和覆盖充分性,作为测试用例的重要特性直接反映了测试用例的质量。本文结合作者实际工作和理论研究,从提高这三个方面的特性进行了讨论。

[关键词]软件测试 测试用例 正确性 有效性覆盖充分性

1 引言

软件测试在软件的整个生命周期的重要组成部分,与软件的研制、软件的质量密切相关,是验证软件质量特性的重要手段。软件测试在整个软件开发中占据了一半或一半以上的工作量,而且具有很高的组织管理和技术难度。搞好软件测试,是保证软件质量的关键步骤。在GJB/Z 141-2004《军用软件测试指南》中明确指出,软件测试过程包括四项活动,按顺序分别是:测试策划、测试设计和实现、测试执行、测试总结。而测试用例作为其中一个关键角色的其生命周期跨越后3个过程,测试用例的设计、编写、执行及对其的分析总结占据了整个测试过程的50%以上工作量,可见测试用例的三性即正确性、有效性和覆盖充分性直接影响软件测试的质量,其中有效性还涵盖了可复用程度的高低。

2 设计测试用例的目的

进行软件测试的穷举往往是不可能的,局限于测试时间和所需的资源。为了提高测试效率,在实际工作中,可行的做法是从庞大的可用测试数据中用科学的手段筛选出有普遍性和特异性的测试数据来实施测试。

使用测试用例的好处主要体现在以下几个方面。

(1)在开始实施测试之前设计好测试用例,可就避免盲目测试并提高测试效率。

(2)在测试用例的使用令软件测试的实施重点突出、目的明确。

(3)在软件版本更新后中只需修正少部分的测试用例便可展开测试工作,降低工作强度,缩短项目周期。

(4)功能模块的通用化和复用化使软件易于开发,而测试用例的通用化和复用化则会使软件测试易于开展,并随着测试的不断精化其效率出不断攀升。

3 测试用例的设计方法

测试用例即设计一个情况,软件程序在情况下,必须能够正常运行并且达到程序所设计的执行结果。测试用例是测试方案、方法、技术和策略的最终载体,内容包括测试目标及意义、测试的软硬件环境、输入数据、操作步骤、预期结果与期望值、测试脚本等。

测试用例的设计包含测试方法、设计原则、要素识别三个方面。对于黑盒测试来说测试方法的选取,一般可采用边界值分析法、等价类划分法、错误推测法、因果法、正交试验法、判定表驱动法等。选择适用的测试用例设计方法,可以达到不同的测试充分性要求。测试用例设计一定要基于测试需求,不局限于测试的级别,如单元测试、部件测试、配置项测试抑或是系统测试。而测试需求又来源于不同的依据文件如(设计文件、需求规格说明、软件研制任务书等)。作为测试用例设计的首要原则,基于测试需求可以在很大程度保证测试用例的正确性。测试用例要素如(名称和标识、追踪关系、用例说明、测试的初始化要求、测试的输入、期望测试结果、操作过程、评估标准等)的识别,则可以保证的测试结果的唯一性和可重复性。对于测试需求的正确理解,选取合适的测试方法,对测试用例进行完整的描述是提高测试用例三性的重要途径。

4 测试用例设计存在的问题

4.1 对测试需求的不到位提取

部分依据文件存在功能描述不清晰,功能简化现象,在此情况下,测试人员与客户沟通不充分,未能进行需求的有效提取,导致测试用例划分粒度不够细致,执行效率低,不能有效发现软件潜在的问题。

测试人员在进行测试用例的设计时,对关键功能的未做到有效识别,设计时一刀切,在不重要的功能上设计了大量用例,针对关键功能的用例又少之以少,在时间、人力成本有限的情况下,测试用例的执行有效性有待进一步提高。

4.2 测试人员技术能力存在欠缺

在设计测试用例时,测试人员由于缺乏软件研发或测试经验,对于软件潜在的问题识别不到位,对于测试用例的无效或异常条件考虑不完整或不充分,造成对缺陷的检出效率不高。

4.3 对测试方法不适宜的选取

在实际的测试项目中,需要根據被测项的功能特性、输入输出数据、应用场景等确定适用的方法,具体到每个测试项目里会综合运用到多种方法,部分测试人员设计测试用例时,严重依赖于某一种方法(如错误猜测法),不能做到根据软件的特点灵活使用各种测试用例设计方法。

4.4 对测试用例要素的不完整描述

部分测试人员认为设计测试用例只关注把测试的输入、操作过程、期望测试结果及评估标准,对测试用例的初始化,前提和约束等要素简化甚至忽略,导致测试用例在执行过程,由于执行的场景不一致,导致测试结果不确定,漏检或者错检。

4.5 测试用例可复用程度低

项目中或者跨项目中很多的公用业务,固化模块,这些功能基本上是趋于稳定不变的,所以测试用例之间也存在着某种相似性。其中一部分测试用例在的执行过度依赖于的环境变化或测试输入,可复用程度低,造成测试部门内耗严重。

5 完善测试用例的设计

5.1 测试需求分析要深挖细做

(1)了解需求的实现背景;

(2)分析需求的合理性;

(3)明确需求的范围,挖掘需求文档中隐藏的需求;

(4)列出需求的框架,包括测试范围取各个功能点,测试的场景等;

(5)及时确认需求漏掉的或者存在问题的地方;

(6)识别需求中关键部分,并划分优先级。5.2提升测试用例编写能力

(1)熟悉业务,了解系统;

(2)用客观的思考方式站在用户角度分析;

(3)勤于思考,突破惯性思维,不局限于经验:

(4)规范软件测试作业。

5.3 对测试设计充分说明

测试用例的设计方法不是单独存在的,具体到每个测试项目里会用到多种方法,往往是综合使用各种方法以才能有效提高测试效率和测试覆盖度。

(1)首先进行等价类划分,将无限测试变成有限测试;

(2)任何情况下都必须使用边界值分析方法;

(3)对照程序逻辑,检查补充测试用例以提高逻辑覆盖程度;

(4)针对输入条件组合的,选用因果法和判定表驱动法;

(5)对于参数配置类的软件,选用正交试验选择较少的组合方式;

(6)对于业务流清晰的系统,用场景法较为适宜;

(7)以错误猜测法补充测试用例。

5.4 测试用例描述规范

为了更好地测试,我们需求为单个软件特性定义具体的测试方法。ANSI/IEEE 829标准称测试用例说明为编写用于输入输出的实际数值和预期结果,及使用具体测试用例产生的测试程序的限制。测试用例设计说明的目的是组织和描述针对具体特性需要进行的测试。测试设计说明就是在测试计划中提炼测试方法,明确指出设计包含的特性及相關的测试用例和测试程序,并指定判断特性通过/失败的规则。

5.4.1 提高测试用例复用度

测试用例能否成功被复用很大程度上取决于测试用例的独立性,即能否独立地应用于不同的应用场合和应用环境。软件测试的复用分别适用于手动测试和自动测试。手动测试中测试用例的复用,可分为业务复用、数据复用、结构复用、适用性复用、用例复用管理几种途径相结合。

5.4.2 测试用例评审

测试用例完成后,需在测试提交前评审完成,用例评审人一般为项目经理、产品经费、主要的开发人员、测试人员。在评审过程中尽量避免测试人员评审自己编写的用例,可以采用交叉评审的方式。用例评审的主要内容为:

(1)是否覆盖产品需求上的所有功能点;

(2)测试用例本身的描述是否清晰,是否存在二义性;

(3)用例的前提条件、执行步骤、输入数据和期待结果是否清晰、正确;

(4)期待结果是否有明显的验证方法;

(5)优先级安排是否合理,是否存在冗余的用例或验证点;

(6)是否从用户层面来设计用户使用场景和使用流程的测试用例;

(7)是否包含充分的负面测试用例。充分考虑产品的异常流程,并编写测试用例进行覆盖;

(8)针对用例评审人提出的问题,在一定时间范围内进行修正及验证。

6 结语

本文仅以黑盒测试为例,论述了提高测试用例的正确性、有效性和覆盖充分性的几种途径。根据测试需求分析得到需求框架,梳理细化测试点,采用适当的用例设计方法,按照标准规范定义的格式,设计出粒度精细适宜的测试用例。此外在实际测试过程中,对测试人员的培训和质量监督考核,制定软件作业指导书,包括测试方法、测试过程等的规定及各阶段的测试文档模板,测试用例库及测试过程的管理等,也是提高测试质量的必要手段,本文对此不作讨论。

参考文献

[1]柳纯录.软件测评师教程[J],清华大学出版社,2012.

[2] GJB/Z 141-2004军用软件测试指南[z].中国人民解放军总装备部,2004.

猜你喜欢

正确性测试用例软件测试
基于SmartUnit的安全通信系统单元测试用例自动生成
基于OBE的软件测试课程教学改革探索
一种基于系统稳定性和正确性的定位导航方法研究
EXCEL和VBA实现软件测试记录管理
基于混合遗传算法的回归测试用例集最小化研究
关于软件测试技术应用与发展趋势研究
浅谈如何提高水质检测结果准确性
软件测试工程化模型及应用研究
基于依赖结构的测试用例优先级技术
双口RAM读写正确性自动测试的有限状态机控制器设计方法