写点什么

使用 Clover 的 Test Optimization 进行更快的测试

  • 2008-11-22
  • 本文字数:1045 字

    阅读完需:约 3 分钟

最近发布的 Clover 2.4 引入了一个叫做“Test Optimization”的新特性,该特性会加快 CI 构建并减少开发者等待测试的时间。它使用了“per-test”覆盖数据只运行受代码改变影响的测试。

Atlassian 发布了其流行的代码覆盖分析工具 Clover 2.4 版,增加了一个名为“ Test Optimization ”的新特性,他说到:

Clover 可以优化测试的运行,极大地降低测试代码改变所需的时间。典型地,只要代码发生了改变,完整的测试套件都会运行。通过使用 Test Optimization,Clover 会根据具体的改变决定要运行的最佳测试子集。只测试你所需要的会提供更快的反馈,而这一切并不会降低测试质量。

在衰退测试套件中计算代码改变所产生的影响是需要时间的,而降低该时间会极大地提升团队的生产率。很多人都认为这就是团队为何要努力保持其单元测试的快速执行的原因,确实是这样的。但有很多原因导致即使团队保证了每个单元测试的快速执行,其整个应用所累积起来的测试套件依然要花费很多时间去运行。

改进这种情况的一个合理的办法就是只运行受代码改变影响的测试。手工完成这项工作不仅要花费很多时间,还会频频导致“测试丢失”,最终失去了优化测试运行带给我们的好处。Clover 的这个新特性为团队提供一种方式来完成这个任务而无需手工操作,同时将“测试丢失”的风险降到最低。

Brendan Humphreys 详细描述了 Clover 是如何完成这个工作的

作为一个代码覆盖工具,Clover 度量每个测试的代码覆盖率——也就是说,它会度量哪些测试运行了哪些代码。通过这种方式,针对某个源代码文件,Clover 可以精确判断出哪些测试适合它。Clover 使用该信息与源文件的修改信息来构建适合于改变的源代码文件的测试子集。接下来这个子集被传到测试运行器中,同时传递的还有上次构建时失败的测试以及之后新加的测试。

根据 Humphrey 所述,Test Optimization 还拥有一些策略以调整测试运行的顺序,他说这可以提升测试运行的效率。关于这些策略:

我们还可以使用一些策略调整 Clover 组合的测试集的顺序:

  • 失败优先(Failfast)——Clover 按照失败的可能性大小运行测试,这样任何失败都会尽可能快的出现。
  • 随机——随机运行测试可以很好的去掉内部测试的依赖。
  • 正常——不会重新排序。测试按照他们传递到测试运行器的顺序运行。

Humphreys 接下来谈到了其 FishEye 团队对该新特性试用 10 天的结果,他说他们的“测试执行时间降低了 25%”。

请花些时间了解一下 Clover 的新版本,尤其是 Humphrey 的感受来看看它是否有助于你的团队。

查看英文原文: Faster Test Runs With Clover’s Test Optimization

2008-11-22 00:401114
用户头像

发布了 88 篇内容, 共 267.0 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

你有一份「写作跨年」邀请函请查收 | 28天写作计划

TGO鲲鹏会

写作 技术创作 28天写作 内容创作 热门活动

react源码解析6.legacy模式和concurrent模式

buchila11

React React Hooks

Linux学习指南《Linux一学就会》带你玩转Linux

侠盗安全

Linux linux运维 运维工程师 云计算架构师

开发好能重构的代码,都是这么干的

华为云开发者联盟

接口 重构 代码 并发 注释

react源码解析5.jsx&核心api

buchila11

React React Hooks

新思科技BSIMM12报告显示开源、云、容器安全活动增长显著

InfoQ_434670063458

新思科技 软件安全 BSIMM

文本分类:Keras+RNN vs 传统机器学习

华为云开发者联盟

机器学习 深度学习 keras RNN 文本分类

2022第十五届北京国际大数据产业博览会

InfoQ_caf7dbb9aa8a

Linux一学就会之Vim编辑器的使用和Xmanager工具的使用。

学神来啦

vim Linux centos 运维 ext4

【IT运维小知识】虚拟化vCenter是什么意思?有啥优势?

行云管家

Java&Go三种HTTP客户端性能测试

FunTester

Java 性能测试 测试框架 Go 语言 FunTester

2022北京智博会AIOTE 2022第十五届北京国际AI人工智能产品展览会

InfoQ_caf7dbb9aa8a

2022北京智博会AIOTE 第十五届(北京)国际智慧城市、物联网、大数据博览会

InfoQ_caf7dbb9aa8a

详解预训练模型在信息检索第一阶段的应用

百度Geek说

后端 预训练 信息检索

2022北京智博会AIOTE 第十五届(北京)国际智慧城市、物联网、大数据博览会

InfoQ_caf7dbb9aa8a

Nocalhost 为 KubeSphere 提供更强大的云原生开发环境

CODING DevOps

Kubernetes DevOps 云原生 集群 Nocalhost

大厂算法面试之leetcode精讲12.堆

全栈潇晨

算法 LeetCode

【最全攻略】玩转2021LIGHT开发者云大会

恒生LIGHT云社区

技术 开发 行业 行业大会

技术分享| Sip与WebRTC互通-SRProxy开源库讲解

anyRTC开发者

音视频 WebRTC SIP 视频会议 SRProxy

dart系列之:数学什么的就是小意思,看我dart如何玩转它

程序那些事

flutter dart 程序那些事 11月日更

建立合格的跨职能团队,你需要知道这些!

禅道项目管理

团队 合作共赢

混合云管理软件用哪个品牌好?咨询电话多少?

行云管家

2022第十五届北京国际智慧工地展览会

InfoQ_caf7dbb9aa8a

恒源云(GPUSHARE)_云GPU服务器如何登陆Windows实例?

恒源云

人工智能 深度学习 算力

2022第十五届北京国际AI人工智能产品展览会

InfoQ_caf7dbb9aa8a

2022北京智博会AIOTE 2022第十五届北京国际人工智能产品展览会

InfoQ_caf7dbb9aa8a

前端开发中需要掌握的开发框架React

@零度

大前端 React

大数据开发hadoop入门基础之sqoop

@零度

大数据 hadoop sqoop

Rust 元宇宙 8—— 脚本

Miracle

rust 脚本 元宇宙

大厂算法面试之leetcode精讲11剪枝&回溯

全栈潇晨

LeetCode 算法面试

数据分析从零开始实战,Python、Pandas与各类数据库

老表

Python 数据库 数据分析 pandas 11月日更

使用Clover的Test Optimization进行更快的测试_Java_Mike Bria_InfoQ精选文章