写点什么

使用 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:401140
用户头像

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

关注

评论

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

深入了解 Python MongoDB 查询:find 和 find_one 方法完全解析

小万哥

Python 数据库 程序人生 软件工程 后端开发

Head First Java(第二版·中文版)PDF

程序员李木子

【网易智企】《MCtalk·CEO对话》正式上线!首期对话高成资本

网易云信

人工智能 SaaS AIGC

【思考-衡量成员在团队的价值】

虚实的星空

团队 日常思考

【思考-责任与决策】

虚实的星空

日常思考

谷歌推广该选择SEO还是Ads?谷歌技巧分享及实战

九凌网络

全新加密叙事,以Solmash为代表的 LaunchPad 平台如何为用户赋能?

西柚子

Java多线程编程实战指南(核心篇)PDF

程序员李木子

Effective Java中文版(第3版)PDF

程序员李木子

全新加密叙事,以Solmash为代表的 LaunchPad 平台如何为用户赋能?

股市老人

全新加密叙事,以Solmash为代表的 LaunchPad 平台如何为用户赋能?

石头财经

全新加密叙事,以Solmash为代表的 LaunchPad 平台如何为用户赋能?

BlockChain先知

全网最详细MVCC讲解,一篇看懂

Java随想录

Java MySQL 数据库 MVCC

左耳听风 - 成长中的问题「读书打卡 day 06」

Java 工程师蔡姬

读书笔记 程序员 个人成长 读书 职业发展

全新加密叙事,以Solmash为代表的 LaunchPad 平台如何为用户赋能?

加密眼界

无缝打通易快报与电子签章系统,合同管理也能如此简单!

聚道云软件连接器

案例分享

高精度恒流/恒压(CC/CV)原边反馈功率转换器

芯动大师

Java多线程编程实战指南(设计模式篇)PDF

程序员李木子

免费下载高质量PPT模板,这12个优质模板网站值得推荐!

彭宏豪95

效率工具 PPT 在线白板 PPT模板 办公软件

半小时实现GPT纯血鸿蒙版

不在线第一只蜗牛

人工智能 AI技术 鸿蒙开发 GPT

SRM源码供应商招标采购管理系统

金陵老街

源码 Vue Java' spring-boot SRM系统

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