• 1
  • 0
分享
  • 成本效益:前后比较回归测试(译)
  • 枫叶 2022-10-24 10:06:41 字数 1970 阅读 591 收藏 0

摘要:

通过比较生产和测试代码版本之间的多个API响应来进行测试的方法非常有效,可以在一个版本一个版本

地生成所需的结果。但是,需要改进和改变,以满足不断变化的需要。对于大多数(若不是所有)技术解决

方案来说都是如此;“边际效用递减定律”的经济学原理也适用于软件。一种最初引入时让利益相关者兴奋

不已的技术解决方案可能很快就会过时。需要修改或新的解决方案来匹配不断发展的期望。

概述

通过比较生产和测试代码版本之间的多个API响应来进行测试的方法非常有效,可以在一个版本一个版本

地生成所需的结果。但是,需要改进和改变,以满足不断变化的需要。对于大多数(如果不是所有)技术解决方

案来说都是如此;“边际效用递减定律”的经济学原理也适用于软件。一种最初引入时让利益相关者兴奋不已的

技术解决方案可能很快就会过时。需要修改或新的解决方案来匹配不断发展的期望。从好的方面来看,这使我

们周围的世界不断改善。

为了解决由于紧密耦合和遗留代码而导致的关键业务工作流泄漏问题,使用生产和测试版本的代码创建并

行设置,并从相同的生产备份恢复数据库;每个工作流步骤在两个设置中并行完成,然后在工作流里程碑处比较

所有报告。因为每次设置的数据都是相同的,所以这些差异是代码更改的直接结果。然后验证预期的和未预期

的更改的差异。

这种方法带来了两个挑战:

  • 保持平行设置

  • 没有生产数据测试

这种解决方案非常有效地发现关键流中的所有问题,这些问题是在验证操作的特定结果的特性测试中遗漏

的。与此同时,这是一个代价高昂的解决方案。由于需要并行设置,测试的h/w和许可证成本成倍增加。另一

个限制是使用生产数据备份。使用生产数据所获得的信心是无与伦比的,但随之而来的是规模问题,例如当客

户机数量增加时,使用一个复杂的客户机数据集进行测试是不够的。很多时候客户不喜欢这样,或者由于组织

政策,不能为测试共享数据。

使用单一设置而不是并行设置

使用多个设置可以比较多个版本,但实际上测试通常是比较产品和被测试版本。最初的想法是为多次运行使用一个设置—每个版本一个设置,然后保存响应并比较结果。因此,可以使用生产版本准备安装,并运行工作流的步骤,并保存API响应以进行比较。然后用测试版本刷新设置,然后执行工作流步骤,并在里程碑处并行比较API响应。这个选项失败了,因为它增加了一倍的测试时间。在截止日期前发布将变得非常困难。

为了进一步优化这一点,API响应被保存在代码存储库中,用于上一个版本。让我们更详细地阐述。发布分支是为将要发布的特性而裁剪的,GitLab管道负责在测试服务器上部署构建并触发测试套件。测试套件执行API调用,并将响应与来自前一个版本构建的已有保存的响应进行比较。报告响应中的差异以进行手动验证—检查差异是由于更改实现所预期的结果,还是由于意外更改而需要进行代码修复。如果这是预期的更改,则在回购中更新保存的响应,如果差异是意外的,则记录错误以修复问题。

该解决方案在资源和时间方面具有成本效益,使用的设置只需要一个,对于每个连续的版本只需要一个设置和执行。但它也有一个缺点,即只能对保存响应的一个版本进行比较。

使用非生产数据

使用生产数据进行测试可以提供额外的信任级别;任何测试人员都不想放弃这种特权。对于单个客户端,例如在受控组织中,这是相当简单的,并且可以使用生产数据进行测试。然而,对于许多其他情况,生产数据并不容易获得。很多时候,客户端的数据策略不允许与服务提供者共享数据,或者只能让组织中固定的一组人访问数据。换句话说,可能有各种各样的原因导致无法获得用于测试的生产数据。此外,随着客户机数量的增长,并且在跨越多个客户机的测试中需要覆盖多个场景,任何单个生产备份都不能覆盖所有场景。这就需要生成测试数据。在我们正在讨论的解决方案中,并行执行之间的数据非常需要保持一致。如果数据不一致,则无法对响应进行比较。

为了解决这个问题并保持使用生产数据的可信度(在某种程度上),可以创建一个混淆脚本。使用编排工具[如Jenkins],将恢复生产备份,执行脚本以模糊化数据,并创建新的备份。第二个备份用于测试。这第二次数据备份成为我们的基础,从下一次迭代开始,它被用于准备测试设置,而混淆脚本不会执行。相反,需要执行添加新数据的脚本。新的数据是为了提高覆盖率和覆盖新的功能。该过程的另一个步骤是将模式更改作为新版本的一部分执行。这将保持测试备份到最新版本。

结论

这些步骤的组合解决了并行回归测试的问题。比较多个版本之间的响应的方法揭示了潜在的事件和生产问题。与测试操作的预期反应相比,这验证了所有其他内容,以捕获泄漏到生产中的不需要的更改。测试与关键业务工作流相关的所有内容的基本主题为稳定发布提供了基础。客户对产品的信心增强了,这也导致了业务的扩展。使用单一的设置和生成的数据使这种方法的使用更加实际。

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 1. qa 是如何工作的,如何保证产品质量的?首先制定质量保证计划->根据过程清单和产品清单对组织级和项目级内容进行检查->不符合项记录在不符合项问题记录表中、反馈项目精力,跟踪问题知道问题解决->编写质量保证报告,反馈给公司领导2.你是如何进行组织级项目的检查?首先,明确组织级的角色有哪些?如 epg、cr、ot等,再针对每个角色的过程和产品进行检查EPG角色:根据《过程检查单》对EPG过程进行检查,EPG工作内容包括(过程管理)和(过程资产开发),查看改进过程是否按照《过程改进计划》进行,是否建立组织财富库,是否定期召开过程改进会议,是否编写《EPG月度报告》;[管理性能...
            0 0 2986
            分享
          • 1、微信支付的流程2、微信的接口文档https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_13、新建一个spring-boot的项目4、导入需要的依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/200...
            0 0 1223
            分享
          •   一、自动化测试简介  1、什么是自动化测试  软件测试是软件产品开发过程中不可或缺的环节,众所周知,软件测试的分类方法非常多,根据不同的分类,测试可以分为很多种不同的测试方式。如果根据不同的测试点分类,可以将测试分类划分为功能测试、性能测试,这也是我们最常见的的软件测试范畴。而我们的自动化测试,一般意义上来说,是指对功能、性能进行脱离手工的自动化的测试。  对于自动化测试,更广泛的意义,是对界面功能的自动化测试。因此,按照对软件测试的自动化程度,可以分为手工测试、自动化测试。再进一步细分,界面自动化测试,又可根据平台的不同,分为Web自动化测试、移动端自动化测试,而他们的测试工具及框架基本...
            0 0 3360
            分享
          • Fintech概念正受到不少互联网金融公司的热捧,主要是指代那些可用于撕裂传统金融服务方式的高新技术。越来越多的企业开辟了新的部门去研究各种各样能让自己产品增值的科技类产品。尤其是在很多互联网金融公司,业务分析师BA(Business Analyst),又称产品经理受到大家的追捧,虽然身处西二旗等ITer聚集地,但是他们做的工作与金融街上的白领们并无不同,他们是无所不懂的金融达人,顶着各个海外名校金融数学系的Master光环,手持CFA,CPA,FRM,AFP/CFP,CIIA,ACCA等等。既然是在IT公司做需求分析的工作,除了需要出具需求说明书,然后将需求翻译成程序员能够理解的说明文档,不...
            0 1 2163
            分享
          • web兼容性概述定义:软件兼容性测试是指检查软件之间能否正确地进行交互和共享信息。随着用户对来自各种类型软件之间共享数据能力和充分利用空间同时执行多个程序能力的要求,测试软件之间能否协作变得越来越重要。软件兼容性测试工作的目标是保证软件按照用户期望的方式进行交互。平台的兼容性:硬件平台:pc手机pad等,操作系统:AndroidiOSWindowsmaclinux。浏览器:谷歌浏览器火狐浏览器IE浏览器等。web兼容性测试:以浏览器兼容性为主,操作系统和分辨率为辅。明确需求:根据用户需求去找浏览器,市场占有率的浏览器(浏览器最近的三个版本)操作系统:安装虚拟机。浏览器市场占有率浏览器内核阵营操...
            0 0 703
            分享
      • 51testing软件测试圈微信