• 1
  • 0
分享
  • 回归测试的关键性和重要性及测试方法——软件测试圈
  • quinn 2022-09-28 14:38:38 字数 3099 阅读 1677 收藏 0

一、概述

所谓回归测试就是当软件发生改变时,重新测试已经通过测试的测试区域,以验证修改的正确性及其影响。在软件开发生命周期中,软件发生改变,就会带来问题,改变可能是源于发现了错误并做了修改,也有可能是因为集成或维护阶段加入了新模块。

错误跟踪与管理系统不完善,对错误的理解不透彻,只修正了错误的外在表现,从而造成修改失败;修改还有可能产生副作用,从而导致软件未被修改的部分产生新的问题;新加入的代码还有可能对原有代码带来影响。因此,我们就必须重新测试,以便确定修改是否达到了预期的目的。同时,为了验证修改的正确性及其影响就需要进行回归测试。

回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。在渐进和快速迭代开发中,新版本的连续发布使回归测试进行更加频繁,而在极端编程方法中,更是要求每天都进行若干次回归测试。因此,通过选择正确的回归测试策略来改进回归测试的效率和有效性是非常有意义的。

二、测试的大部分工作是做回归测试

软件一旦作了修改就必须进行项目的测试组在实施测试的过程中会将所开发的测试用例保存到“测试用例库”中,并对其进行维护和管理。当得到一个软件的基线版本时,用于基线版本测试的所有测试用例就形成了基线测试用例库。在需要进行回归测试的时候,就可以根据所选择的回归测试策略,从基线测试用例库中提取合适的测试用例组成回归测试包,通过运行回归测试包来实现回归测试。

保存在基线测试用例库中的测试用例可能是自动测试脚本,也有可能是测试用例的手工实现过程。回归测试需要时间、经费和人力来计划、实施和管理。在给定的预算和进度下,需要对测试用例库进行维护并依据一定的策略选择相应的回归测试包。

1、首先必须有个管理良好的测试用例库,用例库中的所有用例必须有效,达到足够的覆盖率。这需要有良好的测试管理工具,并有相应的资源(时间与人力)去维护这个测试用例库,使其中没有过时,冗余的测试用例。

如何管理组织好测试用例库是一个值得深入研究的课题,要做好回归测试,组织管理良好的测试用例库是前提。测试用例库的维护为了最大限度地满足客户的需要和适应应用的要求,软件在其生命周期中会频繁地被修改和不断推出新的版本,修改后的或新版本软件会添加新的功能或者变化。同时,被修改的或新增添的软件功能,仅靠重新运行以前的测试用例不行,必须追加新的测试用例来测试。

测试用例库维护是一个连续的过程,通常可以将软件开发的基线作为基准,维护的主要内容包括:

(1)删除过时的测试用例。因为需求的改变等原因可能会使一个基线测试用例不再适合被测试系统,这些测试用例就会过时。

(2)改进不受控制的测试用例。随着软件项目进展,库中的用例会不断增加,会出现对输入或运行状态十分敏感的测试用例。这些测试不容易重复且结果难以控制,影响测试效率。

(3)删除冗余的测试用例。冗余测试用例的存在降低了回归测试的效率。所以需要定期的整理测试用例库,并将冗余的用例删除掉。

(4)增添新的测试用例。程序段、构件或关键的接口在现有的测试中没有被测试,就应该开发新测试用例。不仅改善了测试用例的可用性,而且也提高了测试库的可信性,同时还可以将一个基线测试用例库的效率和效用保持在一个较高的级别上。

2、回归测试的实质在于它是一个能够检测到回归错误的受控实验

回归测试包的选择在软件生命周期中,即使是一个得到良好维护的测试用例库,也可能变得相当大,这使每次回归测试都重新运行完整的测试包变得不切实际。当测试组选择缩减的回归测试时,有可能删除了将揭示回归错误的测试用例,消除了发现回归错误的机会。然而,如果采用了代码相依性分析等安全缩减技术,就可决定哪些测试用例可以被删除而不会让回归测试的意图遭到破坏。选择回归测试策略应该兼顾效率和有效性两个方面。常用的选择回归测试的方式包括:

(1)再测试全部用例。选择基线测试用例库中的全部测试用例组成回归测试包,这是比较安全的方法,它具有最低遗漏和风险,但测试成本最高。往往超出我们的预算和进度

(2)基于风险选择测试。可以基于一定的风险标准来从基线测试用例库中选择回归测试包。首先运行最重要的、关键的和可疑的测试,而跳过那些非关键的、优先级别低的或者高稳定的测试用例,这些用例即便可能测试到缺陷,其严重性也仅有三级或四级。

(3)基于操作剖面选择测试。若基线测试用例库的测试用例是基于软件操作剖面开发的,测试用例的分布情况反映了系统的实际使用情况。回归测试所使用的测试用例个数可由测试预算确定,优先选择针对最重要或最频繁使用功能的测试用例,释放和缓解最高级别风险,有助于尽早发现那些对可靠性有最大影响的故障。

(4)再测试修改的部分。当测试者对修改的局部化有足够的信心时,可以通过相依性分析识别软件的修改情况并分析修改的影响,将回归测试局限于被改变的模块和它的接口上。通常,一个回归错误一定涉及一个新的、修改的或删除的代码段。在允许的条件下,回归测试尽可能覆盖受到影响的部分。

再测试全部用例的策略是最安全的策略,但过时回归测试不太可能揭示新的错误,而且由于时间、人员、设备和经费的原因,不允许选择再测试全部用例的回归测试策略,此时,可选择适当的策略进行缩减的回归测试。

3、实际工作中,回归测试需要反复进行,回归测试的基本过程有了测试用例库的维护方法和回归测试包的选择策略

回归测试可遵循下述基本过程进行:

(1)识别软件中被修改的部分;

(2)从原基线测试用例库中,排除所有不再适用的测试用例,确定那些对新的软件版本依然有效的测试用例,其结果是建立一个新的基线测试用例库t。

(3)依据一定的策略从t中选择测试用例测试被修改的软件。

(4)若必要可生成新的测试用例集t1,用于测试t无法充分测试的软件部分。

(5)用t1修改后的软件。第b和第c步测试验证修改是否破坏了现有的功能,第d和第e步测试验证修改工作本身。

三、结论

1、无论采取何种策略,回归测试是必须的一种测试。回归测试时我们必须采取一些较为有效的方法。例如安排新的测试者完成手工回归测试,让更有经验的测试者开发新的测试用例,做一些探索性的测试。但最重要的就是基于实际可行的引进自动化测试,因为机器不会累。实际中,回归测试的重复将非常令人厌烦,因此,需要通过自动测试来实现重复的和一致的回归测试,提高回归测试效率。

2、在测试软件时,应用多种测试技术是常见的。测试时,测试者希望采用多于一种回归测试策略来增加修改软件的信心。如果回归测试包不能达到所需的覆盖要求,必须补充新的测试用例。回归测试是重复性较多的活动,容易使测试者感到疲劳和厌倦,降低测试效率,在实际中可以采用一些策略减轻这些问题。可以在不影响测试目标的情况下,鼓励测试者创造性地执行测试用例,变化输入、按键和配置能够有助于激励测试者又能揭示新的错误。

3、回归测试需要根据项目、测试资源等实际情况采取有效计划和组织。其中需要注意的是必须重视回归测试,在测试计划中有很好的进度安排及选择相应的回归,重视测试用例的维护,借助于自动化工具。

在组织测试时需注意:首先是各测试阶段的修改一定要在本测试阶段内完成回归,以免将错误遗留到下一测试阶段。其次,测试期间应对软件版本冻结,将测试发现的问题集中修改,集中回归。建议将回归测试与兼容性测试结合起来。在新的配置条件下运行旧的测试可以发现兼容性问题,同时也可以揭示编码在回归方面的错误。


作者:不喝枸杞的程序员

原文链接:https://blog.csdn.net/qq_20499001/article/details/124040868

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   前言  无论做什么自动化,测试报告一定要有的,它可以清楚的展示出来我们执行用例的情况。便于查看自动化测试结果内容。安静这边了解目前通过python生成的测试报告分别有:HTMLTestRunner、BeautifulReport 、 pytest-html 和Allure,这几种报告内容都是属于不同的模板,本篇文章主要介绍下这如何生成以上四份报告的过程以及对比情况。  HTMLTestRunner  HTMLTestRunner是Python标准库的unittest模块的扩展。它生成易于使用的HTML测试报告。使用时需要下载,然后放到项目目录中  下载地址:http://tungwaiyi...
            12 12 1840
            分享
          •   很多LoadRunner初学者都喜欢把它神化了,认为掌握了这款性能测试的工具,就能做性能测试了,天真的以为它什么都能做,所以用了大量的时间学会了如何使用LoadRunner录制脚本,如何进行关联,如何进行参数化,如何设置集合点……但最后会发现,还是不会做性能测试,你可能会问为什么?  很多人还是有各种各样的问题,比如:知道如何利用得到的分析报告分析出系统存在的瓶颈?对于产生的性能报告不知道怎么去分析?不不知道如何进行性能调优?只会使用 LoadRunner是做不到的?LoadRunner并不是万能的,是死的,它仅仅只是我们做性能测试的一个工具,还得依靠人去操作与分析.总而言之,会使用Loa...
            0 0 803
            分享
          • 读者提问:开源持续测试平台有推荐的吗 ?阿常回答:有,MeterSphere。官网地址:https://metersphere.io/Github地址:https://github.com/metersphere (开源社区)官方文档:https://metersphere.io/docs/index.html教学视频:https://metersphere.io/video.html阿常碎碎念:MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等,全面兼容 JMeter、Selenium 等主流开源标准,能够有效助力开发和测试...
            0 0 978
            分享
          •  一、平摊分析简介平摊分析是算法研究中的一种常用思想。平摊分析中,执行一系列数据结构的操作所需要的时间是通过对执行的所有操作求平均而得出的。平摊分析可以用来证明在一系列操作中,通过对所有操作求平均之后,即使其中单一的操作具有较大的代价,但是其平摊代价还是很小的。平摊分析有三种常用技术,分别是聚集分析、记账方法和势能方法。以上是平摊分析的学术介绍,也许看起来不够直观,不能瞬间秒懂,但是二进制计数器想必大家都有接触,今天就通过二进制计数器来学习平摊分析思想。现在有一个数组A来实现二进制计数器的功能,数组A有K位,A[0]为最低位,A[k-1]是最高位,每一位取值可以为1或0,A可以用来表...
            0 1 4994
            分享
          •   我的第一份工作就是拿的这么多,主要以功能测试为主。但是现在的我是测试开发。  回顾我从功能测试到测试开发的成长路径,基本上是伴随着“3次能力飞跃”实现的。  第一家入职的时候是一家小公司。  刚开始入行的时候,什么也不懂,就是从最简单的手工测试做起。每天做的最多的就是:编写测试用例>提交bug>回归bug。  最开始的时候不懂这些,觉得有所收获,但是3个月后,这些事情搞熟悉了,会有一种浪费时间的感觉。  另外在每次提交bug的时候,都要确认环境,还有一些bug没法复现,一方面老是被开发怼,另一方面也不得不加班。  这个时候我就想,能不能不让开发怼,能不能不加班?  我开始修炼内...
            0 0 974
            分享
      • 51testing软件测试圈微信