• 10
  • 10
分享
  • 软件回归测试的真实含义
  • 北极 2022-01-29 15:54:58 字数 1521 阅读 866 收藏 10

  常言道,名正则言顺。对于一个概念,如果它没有恰当的名字,就会增加理解的难度,甚至容易引起歧义。

  在这些年,不管是写公众号还是与同行交流,我都发现软件测试中的一个重要概念存在着“名不正,言不顺”的问题。这个重要概念就是回归测试。

  到底什么是回归测试?为什么叫回归测试?据我观察,许多的答案都不能让人信服。今天,是时候为“回归测试”正个名了。

  要理解“回归测试”,先要理解“回归”。回归,是常用的汉语词汇。它有两种含义。第一种是归还,返回的意思。例如:香港回归祖国,北回归线,回归初心等。这种含义大家都非常熟悉。

  另外一种含义,熟悉的人就少一些。它来自数学领域,表示研究随机变量相互关系的统计分析方法。例如:回归分析,线性回归等。

  这时候你会发现,不管哪一种含义都无法用来解释回归测试。于是,有人干脆就含糊其辞地把回归测试解释成“重复的测试”,“检测二次出现的/回归的bug的测试”等。

  这些解释看似有些道理,但是离回归测试的真正含义还有距离。要理解回归测试这一舶来品的真正含义,需要回到它的原始出处。

  回归测试翻译自英文“Regression Test”。什么是Regression呢?这也是一个多义词。它既有数学上回归的意思(例如Regression Analysis,回归分析),也有衰退,退化的意思(例如Economic Regression,经济衰退)。

  说到这里,回归测试的含义也就明朗了。它其实是衰退测试的意思。正如维基百科所定义的:Regression testing is re-running tests to ensure that previously developed and tested software still performs after a change. If not, that would be called a regression.

  根据这个定义,回归测试的目的是保证本来能够正常工作的软件在发生变化(change)的情况下不产生衰退。所有引起软件衰退的bug叫做regression bug(有时候直接叫regression)。回归测试可以暴露regression bug。当这种bug被发现并修复了,软件就不会发生衰退(regression)。

  触发回归测试的变化(change)是多样的。它既可以是增加一个新功能,也可以是修复一个bug,还可以是修改软件配置。无论哪一种变化,都不应该导致软件衰退:即本来能够正常工作的部分(不管是功能点还是性能指标)被破坏。

  通常来说,实现回归测试的方法是重新执行测试用例。根据执行结果是否成功,来鉴别软件是否发生衰退。回归测试与重复测试有关系,但不能将二者划等号。毕竟,回归没有重复的含义,并且重复测试不仅用于回归测试,还可以用于稳定性测试。

  将回归测试理解为"发现再次出现的bug"也不准确。因为regression bug并不是re-happened bug。regression bug是导致软件衰退的bug。这种bug完全可能是第一次出现的,是全新的bug。没有道理认为它们一定曾经出现过。

  或许有人会质疑,有必要这样抠字眼么?的确,不去深究这些含义,并不影响我们写个回归测试用例,建个回归测试job。但是根据我的经验,它会影响我们阅读这一领域的相关英文博客和论文。

  根据上面的分析,我想回归测试的含义已经很明确了。回归测试之所以容易被误解,原因是翻译不精确。如果翻译成“衰退测试”或“退化测试”,就好理解得多了。

  或者,我们将错就错,给“回归”增加第三种含义,以表示“衰退”,“退化”的意思?

 

来源:百度文库

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 常用的Python自动化测试框架有Robot Framework、Pytest、UnitTest/PyUnit、Behave、Lettuce。软件测试的自动化在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。自动化测试以人为驱动的测试行为转化为机器执行的一种过程。实现软件测试自动化用到一些Python自动化测试框架:一、Robot FrameworkRobot Framework主要被用在测试驱动类型的开发与验收中。虽然是由Python开发而来但也可以在基于.Net的IronPython和基于Java的Jython上运行。作为一个Python框架Robot还能够兼...
            0 0 725
            分享
          •   欧盟反垄断主管玛格丽特-维斯塔格(Margrethe Vestager)表示,欧盟对苹果公司的App Store及其涉嫌不遵守该地区新法律的行为存在多个问题,并表示在必要时会实施罚款。此前有传言称,欧盟即将对苹果公司开出罚单,指控其继续阻止竞争对手推广替代服务。现在,欧盟竞争事务专员玛格丽特-维斯塔格(Margrethe Vestager)证实,欧盟正在对苹果公司进行调查。  她在CNBC 节目中说:"嗯,我们有一些有关苹果公司的问题,[而且]我觉得这些问题令人惊讶且非常严重。"  "我可以说,这不是我们对这样一家公司的期望,"她继续说道。"...
            0 0 307
            分享
          •  我在一家做微信营销的公司干技术 leader,带 40 多个人,公司名就不说了。在这个位置上做了好几年,把团队从小带大,公司虽然不算风口浪尖上的高增长业务,但技术这块儿也从来没出过什么问题,我还是蛮自豪的。带团队时间久了,就能发现整个 Team 都渐渐疲了。前两年老板还专门买了个系统搞 OKR,现在也不大提了;Scrum 我们也搞了,用起来也就那样;项目管理工具试了好几个,禅道、Worktile、现在用 Coding,反正有一个能用的就行;微服务化改造从去年开始在吭哧吭哧搞,我们自己搞得觉得很厉害,但业务部门那边就觉得没啥差别,搞不懂你们研发部门每天在弄些什么,赶紧做我们提的需求要...
            0 1 943
            分享
          • 在当今软件开发领域中,泛型是一种强大的编程特性,它能够在不牺牲类型安全的前提下,实现代码的复用和灵活性。Java作为一种老牌的面向对象编程语言,在其长期的发展过程中,已经积累了丰富的泛型经验和应用场景。而Go语言作为一种相对较新的编程语言,也在不断探索和发展其泛型特性,以满足现代软件开发的需求。本文将对Java和Go语言的泛型进行比较和介绍,探讨它们的实现方式、语法特点以及适用场景,帮助读者更好地理解和应用泛型编程。随着Go语言1.18版本的发布,泛型正式成为了Go语言的一部分,填补了原本的短板。通过引入类型参数,使得函数和数据结构可以接受任意类型的参数,从而提升了代码的可复用性和灵活性。这项...
            0 0 1047
            分享
          •   北京亦庄官方宣布,北京小米机器人技术有限公司正式乔迁至北京亦庄小米汽车工厂。  据介绍,目前小米机器人公司正推进仿人机器人在自有制造系统的分阶段落地。短期内小米机器人是一个专用智能机器人,应用在智能制造的某些场景中,未来将向更多场景拓展。  小米集团高级副总裁、手机部总裁曾学忠表示:“未来扎根北京亦庄这片创新宝地,我们希望能与行业伙伴携手合作,持续推动机器人产业的发展,一个由智能机器、仿人机器人和人类专家共同组成的‘人机一体化时代’一定会加速到来。”  小米机器人公司于 2023 年 4 月在北京亦庄注册成立,成为小米集团专注于仿生机器人技术创新与产品研发、产业化的唯一主体。目前,小米已发...
            0 0 311
            分享
      • 51testing软件测试圈微信