软件测试中的测试用例复用技术

摘要:软件测试是确保软件质量的可靠手段,是软件开发过程中必不可少的重要环节。本文提出了面向复用的测试用例设计过程,为测试用例复用提供了实现策略。测试用例的复用对于缩短软件开发周期和降低软件开发成本具有极其重要的意义。

  关键词:软件测试;测试用例

  1、引言

  随着软件工程领域的拓展,在软件产业飞速发展的今天,软件测试成为保证软件质量的重要手段。测试用例的选择对于软件测试的成败起着决定性作用,因此如何设计最少的测试用例实现最大的测试覆盖成为自动化测试领域中的主要研究对象。测试用例是确定一组最有可能发现错误的测试数据和流程,实现系统对某个功能的测试。而测试用例的设计与测试人员的个人经验息息相关,不同测试人员的个人经验和书写格式的差异导致了测试的盲目性,以至于产生较高的后期维护费用。测试用例的复用技术一方面是为了解决由测试人员经验不足带来的问题,同时还避免了在设计测试用例中的重复劳动,有效地提高了测试效率。

  2、软件测试

  2.1 软件测试的定义

  软件测试(Software Testing)是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(包含输入数据及其预期的输出结果),并用这些测试用例去运行程序,以发现程序错误的过程。

  2.2 软件测试的目的

  Glenford J.Myers就软件测试的目的提出了以下观点:

  2.2.1 测试是程序的执行过程,目的在于发现错误;

  2.2.2 一个好的测试用例在于能发现至今为止尚未发现的错误的用例;

  2.2.3 一个成功的测试是指揭示了至今为止尚未发现的错误的测试。

  测试的目的花费最小的代价找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷来提高软件质量,回避因软件潜在错误和隐患带来的商业风险。

  3、软件测试用例的复用

  3.1 软件测试用例的复用

  软件测试复用可以理解为在两次或多次不同的软件测试过程中重复使用相同或相近的测试资源来组织测试的过程。软件测试的复用主要包括测试流程的复用、测试方法的复用和测试用例的复用。其中测试用例的复用是测试复用中的关键技术。所谓测试用例复用是指对一个软件已执行的测试用例,将其不同程度地应用于该软件新阶段的测试中或其他软件的测试中。可复用的测试用例具有通用性、独立性、有效性、标准化和完整性的特点。

  3.2 可复用测试用例的设计

  测试用例能否成功被复用很大程度上取决于测试用例的独立性,即能否独立地应用于不同的应用场合和应用环境。在实际应用当中,很多测试用例之间存在着相互的关联。有的测试用例的运行环境要取决于另外测试用例的执行状态,当它所依赖的环境变化或失效时,而与之相关联的其他测试用例的复用属性也可能随之消失。那么如何设计不依靠软件运行环境具有较高独立性、与其他测试用例减少关联且具有统一输入输出接口的可复用的测试用例就成为问题的关键所在。

  测试用例是面向不同应用对象的,与被测试软件具有很高的耦合性。为了使得设计的测试用例能够实现成功复用,在测试用例的设计上采取如下步骤。

  3.2.1 共性分析

  首先应该对被测软件进行共性分析,同一应用领域的软件有相似的需求,分析其诸如工作流程或功能相同等共同特点,并根据他们的共性挖掘可复用因素。

  3.2.2 测试用例统一建模

  根据可复用因素,设计合适的测试策略,对测试用例的设计做出统一的建模组织,设计统一的结构和输入输出接口。

  3.2.3 设计可复用的测试用例

  为了尽可能地降低测试用例与被侧软件的相关性,在设计测试用例时应该尽量对其进行通用化处理,同时应保持测试用例的功能单一性。测试用例和被测软件的高耦合性决定了测试用例的复用大多只在同一软件的回归测试或版本升级测试中成功实现,而很难在不同应用领域的软件测试中使用。

  3.2.4 测试用例的测评

  设计好测试用例之后,组织测试人员和评审专家根据功能需求将测试用例应用于被测软件的测试中,确保测试用例的正确性。改变软件运行环境或测试数据后是否能得出合理的测试结果,分析异常和边界情况的测试结果。

  3.2.5 完善测试用例

  根据测试结果分析测试用例是否覆盖并测试了全部的共性需求,进一步完善或纠正测试用例。

  3.2.6 测试用例入库

  将通过测评和完善后的可复用测试用例根据其属性和功能分门别类并按照一定的组织结构放入测试用例数据库中。

  3.3 可复用测试用例的管理

  测试人员要对用例数据库进行统一有效管理,提供测试用例的功能属性、运行环境、测试方法和项目来源以供测试人员以后的查询和使用。管理人员要及时删除冗余,避免重复用例出现。随着软件技术的发展和测试用例数目的不断增加,对那些不再具备复用价值的测试用例移入其他数据库,以便提高搜索和使用效率。

  4、结语

  软件测试的复用是目前测试领域研究的热点问题,而设计可复用的测试用例又是实现测试复用技术的关键。本文介绍软件测试用例复用的同时,在理论上给出了可复用测试用例设计的思想和具体方法。在实践中,实际存在的问题往往比我们可以预想到的更多、更复杂,在不同领域和不同功能的软件中实现测试复用的难度更大,需要我们在不停总结经验的基础上还要灵活运用,合理有效管理,才能使测试复用技术进一步发展,提高测试效率,更好地服务于软件产业。

====================================分割线================================

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-02 12:13:26

软件测试中的测试用例复用技术的相关文章

软件测试中的黑天鹅系列(一) 认识软件测试中的黑天鹅

1. 软件测试中的"黑天鹅" 几年前,我带领的一个测试小组遗漏了一个严重的bug到网上,当用户反馈这个bug后, 我们对它进行了深入的分析和重现,最终所有人一致认为,这个bug能够发生实在是机缘巧合,因为它需要多个条件同时发 生才有可能触发,比如"XX算法开关必须打开.XX算法开关又必须关闭.XX参数必须取某个特定值.用户的使用环境必须是 XX个场景.硬件必须是使用XX接口板.软件必须是XX版本.XX的带宽恰巧又不够...",在用户那里,这些条件有一条不 满足,就不

软件测试中的人才培养浅谈

软件测试是对开发人员已经发布出来的软件进行验证和测试,以保证软件的质量.和其他工作一样,也需要相应的工作人员实现已规划好的测试计划. 本文将从测试人才招聘.测试人才的应用.绩效考核和职业规划几个方面对软件测试中的人才培养进行描述. 1.测试人才招聘 招聘是为已经确定的工作岗位物色适合的人选的过程.在这个过程中,首先需要明确职位描述.技术知识能力要求.完成这份工作所需要具备的基本素质和其他具 体的特殊的要求.职位描述包括岗位职责和将来的工作任务.技术.知识和能力要求是必须掌握了相应的技术,知识和能

论黑盒测试与白盒测试在软件测试中的不同作用

摘要:黑盒测试着眼于外部结构,不考虑内部结构,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明:而白盒测试着眼于内部结构,对软件的过程性细节做细致的检查. 关键词:黑盒测试:白盒测试:测试用例 一.引言 随着软件市场的成熟,人们对软件作用的期望值也越来越高,我国的软件企业已越来越意识到软件测试的重要性,逐渐加大软件测试在整个软件开发的系统工程中的比重. 软件测试并非传统意义上产品交付前单一的"找错"过程,而是贯穿于软件过程的始终,是一个科学的质量控制过程.而对于任何工程产

总结设计中已有的复用思想

网页制作Webjx文章简介:设计中的的重复使用. 技术上有软件复用的理论,作用在于缩减软件开发和维护的花费,其中包括了代码的复用.设计的复用.分析的复用和测试信息的复用.复用的思想是相通的,广告设计.建筑设计.工业设计.交互设计和信息架构等领域中都有所体现,只是在各个领域中表现形式和运用方式不同. 日常生活中最低俗但有效的广告设计复用恐怕要数脑白金的广告,每年都是同样的人物角色和广告词.设计优秀有绝对伏特加的广告,对酒瓶外形的不同展现方式,达到的效果是即使只有酒瓶的线条,也能让人联想起产品. 建

软件测试中的黑天鹅(二) 黑天鹅发生的前后

1.历史与三重迷雾 在"认识软件测试中黑天鹅"一文中,我描述了什么是软件测试中的黑天鹅及其特点,本文将 探讨测试中的黑天鹅发生之前.之后.以及正在发生之中的故事. <黑天鹅>一书的作者Nassim指出"历史是模糊的.你 看到了结果,但看不到导致历史事件发生的幕后原因."其实,测试何尝不是这样,假如把测试看成一个盒子,这个盒子也 是模糊的,你看不到盒子里面是什么,整个机制是如何运行的. 书中描述:"对待历史问题,人类思维会犯三个毛病,我 称之为三

MaxCompute 中的Code Generation技术简介

前言       在<数据库系统中的Code Generation技术介绍>中,我们简单介绍了一下Code Generation技术及其在大规模OLAP系统,特别是大规模分布式OLAP系统中的重要性.MaxCompute采用了Code Generation技术来提高计算效率.在MaxCompute2.0中,我们又引入了基于LLVM的JIT(Just In Time) Code Generation技术.结合向量化的执行引擎,基于SIMD技术的执行效率优化等方式,较之MaxCompute 1.0

CSS中的滑动门技术

css 原文作者:Douglas Bowman 原文出自:A List Apart 中文翻译:54player.com nobita 版权说明:本文中文翻译版权归译者54player.com nobita所有.需要转载发表的,请先与作者联系 在CSS中,一个经常被人们讨论的先进之处即背景图像的可层叠性,并允许他们在彼此之上进行滑动,以创造一些特殊的效果.根据CSS2.0当前的规定,每一个背景图像都需要各自的HTML元素.在许多情况下,典型的标记已经为一般的接口组件提供了多种元素以供我们使用. 标

Ajax基础必读:AJAX中的一些关键技术

ajax ajax架构中主要涉及的技术:client: javascript解析xml, 操纵DOM修改html页面,javascript是"OO"的语言.server: servlet + dao, 实现service接口即可 下面是client中主要的代码:1.JS中封装解析xml的代码,以及实例应用. Quote //类的构造,传入xml文档和需要处理的标签名称function DataSet(xmldoc, tagLabel) {this.rootObj = xmldoc.ge

CSS中的滑动门技术研究

css 在CSS中,一个经常被人们讨论的先进之处即背景图像的可层叠性,并允许他们在彼此之上进行滑动,以创造一些特殊的效果.根据CSS2.0当前的规定,每一个背景图像都需要各自的HTML元素.在许多情况下,典型的标记已经为一般的接口组件提供了多种元素以供我们使用. 标签导航栏就是其中的一个例子.过去,我们频繁的使用这些标签,并已成为了一种非常流行的站点导航方式.现今,在CSS已被广泛支持的前景下,我们可以为我们站点制作出更高质量和更好外观的标签导航栏来.你也许知道CSS可以用来"驯服"无