2011年第3期 计算机光盘软件与应用 Computer CD Software and Appl icat ions 工程技术
浅谈软件测试中回归测试 樊学东 (西安外事学院,西安710077)
摘要:回归测试尽管繁琐、重复,但这是一种必须要做的测试,是否采取自动化测试工具,或是其他测试方式,是本 文要讨论的问题。本文就回归测试的本质出发,探讨其关键性、重要性及其测试方法,有其学术和现实意义。
关..【词:软件测试;回归测试 中图分类号:TP311.52 文献标识码:A 文章嫡号:1007—9599(2011)03—0047-02
Regression Testing of Software Testing Fan Xuedong (Xi’an Foreign Affairs University。Xi。an 71 0077,China)
Abstract:Regression testing despke the tedious,repetitive,but it must do the test,whether to take automated testing tools,or other test method is the problem discussed in this article.In this paper,the nature of regression testing,discusses the key,importance and testing methods,have their academic and practical significance. Keywords:Software testing;Regression testing
一、
概述
所谓回归测试就是当软件发生改变时,重新测试已经通过测 试的测试区域,以验证修改的正确性及其影响。在软件开发生命 周期中,软件发生改变,就会带来问题。改变可能是源于发现了 错误并做了修改,也有可能是因为集成或维护阶段加入了新模块。 错误跟踪与管理系统不完善;对错误的理解不透彻,只修正了错 误的外在表现,从而造成修改失败;修改还有可能产生副作用, 从而导致软件未被修改的部分产生新的问题;新加入代码还有可 能对原有代码带来影响。因此,我们就必须重新测试,以便确定 修改是否达到了预期的目的。同时,为了验证修改的正确性及其 影响就需要进行回归测试。 回归测试作为软件生命周期的一个组成部分,在整个软件测 试过程中占有很大的工作量比重,软件开发的各个阶段都会进行 多次回归测试。在渐进和快速迭代开发中,新版本的连续发布使 回归测试进行的更加频繁,而在极端编程方法中,更是要求每天 都进行若干次回归测试。因此,通过选择正确的回归测试策略来 改进回归测试的效率和有效性是非常有意义的。 二、测试的大部分工作是做回归测试,软件一旦作了修改就 必须进行 项目的测试组在实施测试的过程中会将所开发的测试用例保 存到“测试用例库”中,并对其进行维护和管理。当得到一个软 件的基线版本时,用于基线版本测试的所有测试用例就形成了基 线测试用例库。在需要进行回归测试的时候,就可以根据所选择 的回归测试策略,从基线测试用例库中提取合适的测试用例组成 回归测试包,通过运行回归测试包来实现回归测试。保存在基线 测试用例库中的测试用例可能是自动测试脚本,也有可能是测试 用例的手工实现过程。回归测试需要时间、经费和人力来计划、 实施和管理。在给定的预算和进度下,需要对测试用例库进行维 护并依据一定的策略选择相应的回归测试包。 (一)首先必须有个管理良好的测试用例库,用例库中的所 有用例必须有效,达到足够的覆盖率。这需要有良好的测试管理 工具,并有相应的资源(时间与人力)去维护这个测试用例库, 使其中没有过时,冗余的测试用例。如何管理组织好测试用例库 是一个值得深入研究的课题,要做好回归测试,组织管理良好的 测试用例库是前提。测试用例库的维护为了最大限度地满足客户 的需要和适应应用的要求,软件在其生命周期中会频繁地被修改 ...——47..—— 和不断推出新的版本,修改后的或新版本软件会添加新的功能或 者变化。同时,被修改的或新增添的软件功能,仅靠重新运行以 前的测试用例不行,必须追加新的测试用例来测试。 测试用例库维护是一个连续的过程,通常可以将软件开发的 基线作为基准,维护的主要内容包括:(1)删除过时的测试用例。 因为需求的改变等原因可能会使一个基线测试用例不再适合被测 试系统,这些测试用例就会过时。(2)改进不受控制的测试用例。 随着软件项目进展,库中的用例会不断增加,会出现对输入或运 行状态十分敏感的测试用例。这些测试不容易重复且结果难以控 制,影响测试效率。(3)删除冗余的测试用例。冗余测试用例的 存在降低了回归测试的效率。所以需要定期的整理测试用例库, 并将冗余的用例删除掉。(4)增添新的测试用例。程序段、构件 或关键的接口在现有的测试中没有被测试,就应该开发新测试用 例。不仅改善了测试用例的可用性,而且也提高了测试库的可信 性,同时还可以将一个基线测试用例库的效率和效用保持在一个 较高的级别上。 (二)回归测试的实质在于它是一个能够检测到回归错误的 受控实验。回归测试包的选择在软件生命周期中,即使一个得到 良好维护的测试用例库,也可能变得相当大,这使每次回归测试 都重新运行完整的测试包变得不切实际。当测试组选择缩减的回 归测试时,有可能删除了将揭示回归错误的测试用例,消除了发 现回归错误的机会。然而,如果采用了代码相依性分析等安全缩 减技术,就可决定哪些测试用例可以被删除而不会让回归测试的 意图遭到破坏。选择回归测试策略应该兼顾效率和有效性两个方 面。常用的选择回归测试的方式包括:(1)再测试全部用例。选 择基线测试用例库中的全部测试用例组成回归测试包,这是比较 安全的方法,它具有最低遗漏和风险,但测试成本最高。往往超 出我们的预算和进度。(2)基于风险选择测试。可以基于一定的 风险标准来从基线测试用例库中选择回归测试包。首先运行最重 要的、关键的和可疑的测试,而跳过那些非关键的、优先级别低 的或者高稳定的测试用例,这些用例即便可能测试到缺陷,其严 重性也仅有三级或四级。(3)基于操作剖面选择测试。若基线测 试用例库的测试用例是基于软件操作剖面开发的,测试用例的分 布情况反映了系统的实际使用情况。回归测试所使用的测试用例 个数可由测试预算确定,优先选择针对最重要或最频繁使用功能 (下转第23页) 2011年第3期 计算机光盘软件与应用 Computer CD Software and Appl ications 信息技术应用研究
中的数据质量。即使相对简单的数据错误也会迅速升级为复杂问 题,降低整个医院的数据质量。 (五)数据存储口径差异 信息中心、病案科、财务科等科室可能都拥有自己的信息系 统和对数据的描述方式,在多个系统中存储数据经常导致数据出 现不一致性问题。 四、提高医疗数据质量的管理工作 如何做好医院信息化过程中医疗数据质量的管理工作,可以 从如下几方面抓起: (一)提高对医疗数据的认识和重视 医院的领导层、各职能部门、信息录入源头都要相互认识到 此项工作的重要性以及关键性。医院所发生的一切业务数据都应 该是医院经营情况的真实反应,是医院合理使用卫生资源和领导 科学决策的事实依据。各级人员只有认识到医疗数据在医院管理 中的重要作用,才会反过来重视数据质量问题。要让医院的每一 位员工都能深刻认识到数据是医院重要的战略资源,医院的一切 决策都来源于医疗数据,没有正确的高质量的数据,就没有正确 的决策。国外有一个谚语“Garbage in,garbage out”(进去的 是垃圾,出来的还是垃圾),试问,我们在作决策时使用的是垃圾 数据,又怎能期待最终得到一个很美好的决策结果呢! (二)信息技术保证医疗数据质量 医院信息系统应采用先进的开发技术,程序开发要注重信息 录入标准化,开发出更加友好的用户界面信息系统,减少操作员 的录入工作量和出现错误的可能性;同时在要求开发公司开发软 件前要充分考虑医院各级用户的需求,防止出现业务处理软件不 能满足用户要求、操作员采取违规操作的现象。应用数据检测、 检查工具,及时的发现数据质量问题,做到及时纠正。 (三)医疗数据操作人员管理 医院信息化的发展,无论其系统怎么先进、设备多么发达, 最终都离不开人的操作。人是医疗数据录入、分析、处理、存储 过程中最活跃的因素。随着医院信息化的不断向前发展,医院各 级管理工作需要进一步的发展和完善,为此对相关操作人员也提 出了更高的要求。 (四)完善的医疗制度管理 客观性、真实性是医院医疗数据的两个重要基本特征。错误 的医疗数据将严重地影响领导作决策,甚至危及患者的生命。因 此,医院要保证医疗数据质量,则一定要对医疗数据的录入及提 取等环节都需要制定严格的规章制度。在医院上下建立起完善的 医疗数据负责制度,并与员工的绩效和奖惩挂钩,还可以成立专’ 门的组织和机构负责数据管理工作。合理的规章制度的建立可以 确保医疗数据不受不良因素的干扰,才能保持其客观性、真实性。 对医疗数据的质量管理,首先,关键在于医院管理人员和各 职能部门对此项工作的高度重视;其次是建立全体员工齐抓共管 的体制建设;再次,医疗卫生、医院数据库、会计、统计、经济 管理等高素质人材队伍的建设及培养,也是此项工作的有力保障。 参考文献: [1】陈远,罗琳,沈祥兴.信息系统中的数据质量问题研究【J1.中 国图书馆学报,2004,1:48.50 【2】丁海龙,徐宏炳.数据质量分析及应用【J】,计算机技术与发 展,2007,17,3:236 I3]麦迪.克斯罗蓬.信息资源管理的前沿领域IMI.沙勇忠.北京: 科学出版社,2005
(上接第47页) 的测试用例,释放和缓解最高级别风险,有助于 发现那些对 可靠性有最人影响的故障。(4)再测试修改的部分。当测试者对 修改的局部化有足够的信心时,可以通过相依性分析识别软件的 修改情况并分析修改的影响,将回归测试局限于被改变的模块和 它的接口 。通常, 个回归错误一定涉及一个新的、修改的或 删除的代码段。在允许的条件下,回归测试 可能覆盖受到影响 的部分。 再测试全部用例的策略是最安全的策略,但过时回归测试不 太可能揭示新的错误,而且由于时间、人员、设备和经费的原因, 不允许选择再测试全部用例的回归测试策略,此时,可选择适当 的策略进行缩减的回归测试。 (三)实际工作中,回归测试需要反复进行,回归测试的基 本过程有了测试用例库的维护方法和回归测试包的选择策略。回 归测试可遵循下述基本过程进行:(1)识别软件中被修改的部分; (2)从原基线测试用例库中,排除所有不再适用的测试用例,确 定那些对新的软件版本依然有效的测试用例,其结果是建立一个 新的基线测试用例库T。 (3)依据一定的策略从T中选择测试用 例测试被修改的软件。 (4)若必要可生成新的测试用例集T1, 用于测试T无法充分测试的软件部分。(5)用T1修改后的软件。 第b和第C步测试验证修改是否破坏了现有的功能,第d和第e 步测试验证修改工作本身。 三、结论 (一)无论采取何种策略,回归测试是必须的一种测试。回 归测试时我们必须采取‘些较为有效的方法。例如安排新的测试 一23一 者完成手lI回归测试,让更有经验的测试者开发新的测试用例, 做一些探索性的测试。但最重要的就是基于实际可行的引进自动 化测试,因为机器不会累。实际中,回归测试的重复将非常令人 厌烦,因此,需要通过自动测试米实现重复的和‘致的回归测试, 提高回归测试效率。 ( )在测试软件时,应用多种测试技术是常见的。测试时, 测试者希望采用多于一种回归测试策略来增加修改软件的信心。 如果回归测试包不能达到所需的覆盖要求,必须补充新的测试用 例。回归测试是重复性较多的活动,容易使测试者感到疲劳和厌 倦,降低测试效率,在实际中可以采用一些策略减轻这些问题。 可以在不影响测试目标的情况下,鼓励测试者创造性地执行测试 用例,变化输入、按键和配置能够有助于激励测试者又能揭示新 的错误。 (三)回归测试需要根据项目、测试资源等实际情况采取有 效计划和组织。其中需要注意的是必须重视回归测试,在测试计 划中有很好的进度安排及选择相应的回归,重视测试用例的维护, 借助于自动化工具。在组织测试时需注意:首先是各测试阶段的 修改一定要在本测试阶段内完成回归,以免将错误遗留到下一测 试阶段。其次,测试期间应对软件版本冻结,将测试发现的问题 集中修改,集中回归。建议将回归测试与兼容性测试结合起来。 在新的配置条件下运行旧的测试可以发现兼容性问题,同时也可 以揭示编码在回归方面的错误。 参考文献: 【1】贺平.软件测试教程.电子工业出版社,2010,1 『21孙玮.实用软件工程.电子工业出版社,20l1,1