写点什么

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

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

关注

评论

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

走!跟着浪潮云洲去挖矿

云计算

趣说开源|学生如何参与开源社区?

SphereEx

数据库 开源

架构实战营-模块二作业

俞立夫

架构实战营

MySQL 系列教程之(五)DDL 操作:建库建表

若尘

MySQL 数据库 8月日更

Python入门:ChainMap 有效管理多个上下文

华为云开发者联盟

Python 字典 上下文 映射 ChainMap

如何将知识引入机器学习模型提升泛化能力?

华为云开发者联盟

机器学习 算法 数据 模型 物理学

Android ANR应用无响应

W🌥

android 8月日更

AOC萌新探索:搭建和体验在线AOC环境

华为云开发者联盟

Python 网络 自动化运维 AOC 网络设备

手撸二叉树之递增顺序搜索树

HelloWorld杰少

数据结构与算法 8月日更

数据加密和BCrypt哈希算法应用 | StartDT Tech Lab 15

奇点云

【SpringBoot技术专题】「JWT技术专区」SpringSecurity整合JWT授权和认证实现

码界西柚

spring security springboot JWT 8月日更

Compose 中的主题

Changing Lin

8月日更

MySQL安全加固方法分享

Simon

MySQL 数据库 数据安全

Go语言:如何通过Go来更好的开发并发程序 ?

微客鸟窝

Go 语言

FastApi-15-文件上传-3

Python研究所

FastApi 8月日更

为什么区块链是互联网的100倍?

CECBC

基于java springboot体育馆预约微信小程序源码(毕设)设计开发

清风

Java 小程序 源码 毕业设计

Hadoop生态系统

Mike

堡垒机、防火墙以及跳板机分别是什么?

行云管家

云计算 运维 防火墙 堡垒机 跳板机

技术加持、服务先行:北鲲云超算平台助力生命科学领域研究与发展

北鲲云

区块链技术:为什么说波卡能加速区块链行业的发展?

CECBC

30个Kafka常见错误小集合

王知无

2021,编程语言如何选择?

程序员鱼皮

Java c++ Python JavaScript Go 语言

Hadoop安装与常用操作命令

Mike

百亿级分布式文件系统之元数据设计

焱融科技

云计算 技术 分布式 高性能 文件存储

导播上云,把 “虚拟演播厅” 搬到奥运村

阿里云CloudImagine

阿里云 视频处理 视频直播 视频云 云导播

能源区块链研究 | 加密行业碳抵消有助于大众接纳比特币吗?

CECBC

“遇见”未来“编程”语言,面向组件编程,送给在校学生

清风

Java 小程序 毕业设计

零代码以“王者荣耀”为例解析设计七原则

华为云开发者联盟

软件 设计原则 王者荣耀 单一职责

出现吧,Python Web 菜谱系统的首页,不会前端技术,也能做

梦想橡皮擦

8月日更

【LeetCode】有效的字母异位词Java题解

Albert

算法 LeetCode 8月日更

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