• 0
  • 0
分享
  • 回归测试的关键性和重要性及测试方法——软件测试圈
  • 恬恬圈 2023-01-30 15:01:38 字数 3151 阅读 1121 收藏 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、回归测试需要根据项目、测试资源等实际情况采取有效计划和组织。其中需要注意的是必须重视回归测试,在测试计划中有很好的进度安排及选择相应的回归,重视测试用例的维护,借助于自动化工具。

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


作者:李红    

来源:http://www.51testing.com/html/29/n-7191529.html

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 前言:本篇讲堂是紧接【安全测试工具-进阶篇[身份验证漏洞]】的内容。例牌,先说下安全测试工具的更新情况【工具地址:https://gitee.com/samllpig/SafeTool-51testing】服务平台,增加HTTP服务监听模块集成平台,增加模糊测试插件,并实现四种模糊测试算法,普通模式、单点模式、草叉模式和集束模式。普通模式:单个字典,单个测试点单点模式:单个字典,多个测试点,顺序使用字典草叉模式:  多个字典,多个测试点,顺序使用字典集束模式:  多个字典,多个测试点,组合使用字典,笛卡尔积算法实现 学员收获:掌握常见的密码重置...
            0 0 66
            分享
          • 作为软件开发从业者,API 调试是必不可少的一项技能,在这方面 Postman 做的非常出色。但是在整个软件开发过程中,API 调试只是其中的一部分,还有很多事情 Postman 无法完成,或者无法高效完成,比如:API 文档定义、API Mock、API 自动化测试等等。Apifox 就是为了解决这个问题而生的。接口管理现状一、常用解决方案使用 Swagger 管理 API 文档使用 Postman 调试 API使用 MockJs 等工具 Mock API 数据使用 JMeter 做 API 自动化测试二、存在的问题1、维护不同工具之间数据一致性非常困难、低效。并且这里不仅仅是工作量的问题,...
            12 11 742
            分享
          •   1.同一个手机号申请一个产品在后台查看借款订单信息同一时间内有两条订单信息。  这个问题在测试过程中是随机出现的,在我的测试手机上出现的概率相对比较大,但在Android开发手机上复现的概率较低,开发难以定位,我猜测可能是短时间内多次触发了APP的提交按钮,导致该问题出现。最后建议后端开发加了一个限制,短时间内多次点击提交按钮,后台只显示第一条提交信息,且后期再没发现这个问题。  2.专题详情页,当后台配置的RGB值为(99,99,90)。在Android&IOS APP上查看专题详情,专题摘要显示不出来(数据是有的,此RGB周围的值和字体颜色相似)。  (1)该问题不应该是bug...
            0 0 824
            分享
          • 起因网上大都是好久之前旧版的demo,而且demo就只是demo。简单写下用法,很少有结合实际的需求进行讲解。需求只使用几个测试账号,模拟N个用户进行数据的上传。比如我有3个账号,要模拟100个用户的压测,只是调用3次登录接口,拿到3个用户的token后,这100个用户循环调用这3个账户的token进行一系列操作。代码及运行结果1、定义一个运行类继承HttpUser,user_password_list存放所有测试的账号密码,key_token_list存放所有账号登录后的token2、定义一个任务类,继承SequentialTaskSet后,任务会顺序执行。onstart方法每个模拟用户只会...
            1 1 2329
            分享
          • 一、功能测试1、链接测试  (1)测试所有链接是否按指示的那样确实链接到了该链接的页面;(2)测试所链接的页面是否存在;(3)保证Web应用系统上没有孤立的页面(所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问)。2、表单测试(1)注册、登陆、信息提交等,必须测试提交操作的完整性,以校验提交给服务器的信息的正确性;(2)用户填写的出生日期与职业是否恰当,填写的所属省份与所在城市是否匹配等;(3)检验默认值的正确性;(4)如表单只能接受指定的某些值,测试时跳过这些字符,看系统是否会报错。3、Cookies测试(session测试同)(1)Cookies是否起作用;(2)Coo...
            0 0 1405
            分享
      • 51testing软件测试圈微信