测试更智能而不是更难:通过测试影响分析左右移动测试

试影响分析使开发人员可以轻松地进行更智能的测试,而不是更困难。这里全面介绍了测试影响分析的好处以及为什么开发人员应该将其纳入他们的软件测试例程中。

测试影响分析意味着将测试专门集中在每次迭代期间所做的更改,并自动准确地测试需要测试的内容。利用这项技术的团队可以通过有关需要做什么的即时反馈来优化他们的开发测试工作。

行业调查和报告经常证实,即使在实施敏捷、DevOps 和持续集成/部署等现代开发流程之后,软件测试仍然是一个瓶颈。在某些情况下,软件团队的测试不够充分,必须在开发周期的后期阶段处理错误和安全漏洞,这会产生一个错误的假设,即这些新流程无法兑现其承诺。解决某些类别问题的一种解决方案是右移测试,它依赖于在生产环境中监视应用程序,但它需要坚如磐石的基础设施,以便在出现严重缺陷时回滚新的更改。

结果,组织仍然错过了最后期限,并且质量和安全性受到影响。但还有更好的方法!为了更智能地进行测试,组织正在使用称为 测试影响分析的 技术来准确了解要测试的内容。这种数据驱动的方法支持左移测试和右移测试。

Parasoft 产品免费试用icon-default.png?t=N7T8https://www.evget.com/consult/parasoft/#Aps_contact

敏捷和 DevOps 以及测试瓶颈

任何迭代过程中的测试都是在有限的周期时间内可以完成多少测试的折衷。在大多数项目中,不可能在每次迭代中进行完全回归。相反,执行一组有限的测试,并且确切地测试什么是基于最佳猜测。由于通常没有足够的已完成新功能可供测试,因此测试也会在周期中进行回载。生成的工作量与时间图最终像锯齿一样,如图 1 所示。在每个周期中,仅执行一组有限的测试,直到执行完整回归测试的最后一个周期。

该图显示敏捷流程导致测试活动呈“锯齿状”。 只有完整的回归循环才能做“完整”的测试。

不幸的是,没有一个项目在达到最终周期时具有零错误和零安全漏洞。在此阶段发现缺陷会增加延迟,因为错误会被修复并重新测试。即使 存在 这些延迟,许多错误仍然会进入已部署的产品中,如下所示。

显示严重缺陷的图形。 集成和完整回归测试从来都不是没有错误的。 后期缺陷会导致进度和成本超支。

这种情况导致了所谓的“右移测试”的采用,即组织在部署阶段继续测试其应用程序。右移测试的目的是增强和扩展测试工作,测试最适合部署阶段,例如 API 监控、切换生产中的功能以及从现实操作中检索反馈。

什么是右移测试?

重现真实测试环境以及在测试中使用真实数据和流量的困难导致团队使用生产环境来监视和测试其应用程序。这样做有很多 好处 ,例如,能够使用支持容错和性能改进的实时生产流量来测试应用程序。一个常见的用例是所谓的 金丝雀发布,其中软件的新版本首先发布给一小部分客户,然后随着错误的报告和修复而推广到越来越大的群体。例如,Roku 就是这样做来更新其设备固件的。

右移测试依赖于开发基础设施,该基础设施可以在出现严重缺陷时回滚版本。例如,金丝雀版本中的严重安全漏洞意味着回滚该版本,直到新的更新版本准备就绪,如下图所示:

该图显示了产品积压和回滚,包括春季积压、软件版本的 2-3 周春季工作增量导致严重缺陷。

但使用生产环境来监控和测试软件是有风险的,当然, 右移测试的目的从来不是取代部署前的单元、API 和 UI 测试实践! 右移测试是一种 补充 实践,它将持续测试的理念扩展到生产中。尽管如此,组织很容易滥用这个概念来证明在开发过程中进行更少的单元和 API 测试是合理的。为了防止这种情况发生,我们需要使开发阶段的测试变得更容易、更高效,并生产出质量更高的软件。

通过集中测试来更智能地测试,而不是更困难

大多数软件都没有经过充分测试,测试内容的决定基本上基于开发人员对关键功能的最佳猜测。在 SCRUM 冲刺或其他流程的迭代期间,很难确定要测试什么,因为“测试所有内容”当然不是一种选择。由于时间很短,只能测试由最新功能更新的软件部分,但具体哪些代码受到影响通常是未知的。测试自动化有所帮助,但如果不准确了解测试地点和测试内容,测试覆盖率就会不足。

测试影响分析

这些缺点可以通过使用测试影响分析来克服 ,测试影响分析是对测试覆盖率、代码更改和依赖性的多变量分析,可以准确指出需要测试的代码。此外,这些精确的测试可以安排并自动执行。

测试影响分析在 IDE 内的开发人员级别进行,收集有关哪些测试执行哪些代码的信息,并在开发人员更改代码时在开发人员的 IDE 中应用该信息,使开发人员能够轻松识别和执行需要执行的特定测试。需要运行以验证更改的代码不会破坏任何测试。此外,跟踪哪些受影响的测试已运行、哪些已通过、哪些已失败,可以使开发人员轻松确定哪些测试仍需要运行,或者哪些测试已失败并需要解决。一旦所有测试都已运行并通过,开发人员就知道可以安全地提交代码并继续前进。

测试影响分析在 CI/CD 流程中工作,通过无缝集成到项目的构建系统(例如 Maven 或 Gradle)中,以获得有关更改的即时反馈。测试影响分析确定自基线构建(即最后一次夜间构建)以来哪些代码发生了更改,确定需要运行哪些测试来执行该代码,然后仅运行该测试子集。此工作流程使团队能够设置仅根据最近的代码更改运行测试的 CI 作业,将运行 CI 作业所需的时间从几小时缩短到几分钟。

测试影响分析具有以下主要优点:

  • 了解每个测试涵盖的内容。 通过自动将测试执行数据与测试覆盖率数据关联起来,测试影响分析提供了一种机制,可以根据当前正在开发的代码来识别需要运行哪些测试。用户无需运行不必要的测试即可节省时间,并且团队可以从开发期间和代码签入后的即时反馈中受益。
  • 了解发生了什么变化。开发人员通常不知道要运行哪些测试来验证代码更改,因此他们要么(a)在不运行任何测试的情况下签入代码(这是一种非常糟糕的做法),(b)只运行他们知道的一两个测试(这很容易错过一些),或(c)运行所有测试(这浪费时间)。测试影响分析通过立即识别哪些测试与哪些代码更改相关来解决这个问题,并通过自动执行它们来更进一步。签入的代码变得更加稳定,因为它在签入之前已经过彻底的测试。
  • 重点关注验证更改和受影响的依赖项的测试。识别并运行验证自上次基线构建(通常是夜间构建)以来所有代码更改和受影响的依赖项所需的一组测试,可以显着减少运行 CI 所需的时间。这使得团队能够从真正的 CI 流程中受益。
  • 即时且持续的反馈。 测试影响分析不仅可以识别测试和代码之间的直接依赖关系,还可以识别间接依赖关系,可以帮助团队在检查代码后尽快了解代码是否破坏了任何测试。
概括

为了大大减少开发中的测试瓶颈,并提高测试人员在每次迭代中投入的“锯齿”工作的效率,开发团队可以受益于测试影响分析技术。具有测试影响分析的测试自动化意味着将测试专门集中在每次迭代期间所做的更改,并自动准确地测试需要测试的内容。这些团队通过即时反馈来优化他们的开发中测试工作,包括需要做什么、哪些代码未通过测试以及哪些其他代码受到新更改的影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/333592.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux中的系统安全

一.账号安全 将非登录用户的shell设为/sbin/nologin 系统中用户有三种:超级管理员 普通用户 程序用户 前两种用户可以登录系统,程序用户不给登录 所以称为非登录用户 命令格式: usermod -s /sbin/nologin(改已有用户&#…

‘千问初体验:启程你的首度探索之旅‘,问出你的第一个问题

大家好我是在看,记录普通人学习探索AI之路。 经过前面的铺垫,今天带着大家用通义千问平台提出第一个问题。ChatGPT还需要科学上网对小白很不友好后续在出教程。 同义千问官网:https://tongyi.aliyun.com/qianwen/ 平台中下方的输入框&#…

2023第三季卫星影像区县图如何调用

我们为大家分享了如何按区县购买卫星影像的方法。 这里我们再来分享一下,如何查看调用已购买2023第三季卫星影像中,我们已购买的上海黄浦区区县图。 在后台查看调用区县图 如果你也想按区县购买2023第三季卫星影像,请从以下网址登录。 ht…

案例分享:当前高端低延迟视频类产品方案分享(内窥镜、记录仪、车载记录仪、车载环拼、车载后视镜等产品)

若该文为原创文章,转载请注明出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/135439369 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结…

大模型在现代应用中的多元实例

目录 前言1 GPT-3、GPT-3.5、GPT-4:自然语言处理的新纪元1.1 GPT-3与传统NLP方法的区别1.2 GPT-3.5 和 GPT-4 的进展1.3 技术背后的革新 2 自然语言转换为Python代码2.1 简介2.2 技术原理2.3 应用和优势 3 DALL-E 2(5B)图像生成3.1 简介3.2 技…

连接服务器Mysql出现“Host ‘xxx‘ is not allowed to connect to this MySQL server“解决方法

远程连接提示:Host xxx is not allowed to connect to this MySQL server。是mysql未开启mysql远程访问权限导致。 登录mysql,发现出现了 Access denied for user ‘root’ T’localhost (using password: YES) 此时先找到my.cnf文件,使用命令mysql --…

限制选中指定个数CheckBox控件(2/2)

实例需求:工作表中有8个CheckBox控件(下文中简称为控件),现在需要实现限制用户最多只能勾选4个控件。 在上一篇博客中已经实现了这个需求,其基本思路是用户选中第5个控件时,事件代码将取消勾选最后一个选中…

DP Alt Mode(Alternative Mode)

一、Type-C的DP AlT Mode Type-C 上 配置 Alternative Mode(Alt Mode)。这种配置可以使得其他协议比如DP、HDMI、Thunderbolt™、MHL(mobile high-definition link),以及PCIe等在 Type C线缆上传输。以最流行的DP为例:…

竞赛保研 基于深度学习的人脸表情识别

文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的人脸表情识别 该项目较…

SQL / MySQL 高级知识点

1. 事务 1.1 什么是数据库事务? ​ 数据库的事务(Transaction)是一种机制、一个操作序列,包含了一组数据库操作命令。事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行&…

select 多查询-SQL增删改查补充和limit以及order by

​cnblogs.com/wupeiqi/articles/5713315.html 表内容操作 1、增 1 2 3 insert into 表 (列名,列名...) values (值,值,值...) insert into 表 (列名,列名...) values (值,值,值...),(值,值,值...) insert into 表 (列名,列名...) select (列名,列名...) from 表 2、删 1 2…

前端面试题集合一

Canvas是什么?怎样写Canvas? Canvas是HTML5的一个元素,它使用JavaScript在网页上绘制图形。Canvas是一个矩形区域。它的每一个像素都可以由HTML5语言来控制。使用Canvas绘制路径、框、圆、字符和添加图像有几种方法。 如果要在我们的HTML文…