产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

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

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

关注

评论

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

如何以极客的方式探索小程序容器技术

Geek_99967b

SaaS应用 小程序转app 跨端运行

Flutter的特别之处

Geek_99967b

SaaS 小程序开发 小程序组件

NFT DeFi基础设施AFKDAO 完成300万美元融资 Hoo Labs等参投

区块链前沿News

Hoo AFKDAO

在黑客马拉松中有什么样的收获?

Geek_99967b

SaaS 黑客松 小程序组件

融云漫话:没有一个人躲得过“视频会议”

融云 RongCloud

微幕小程序,给市场一个新的想象空间

Geek_99967b

小程序容器 小程序开发

下载Spring4.1.x源码并用IntelliJ IDEA打开

程序员欣宸

Java 5月月更

云原生技术新版图——无服务器(Serverless)数据库

亚马逊云科技 (Amazon Web Services)

数据库 Serverless 云原生

分布式协议-Paxos

白裤

PAXOS paxos协议 Basic paxos 5月月更

大厂员工过劳死,打工人该如何自救?

大数据梦想家

大数据 程序员 程序人生

2022 携程提前批大数据一二(oc) 面经

大数据梦想家

大数据 面经分享

我的编程学习经历

留乘船

学习

模板化的封装,降低业务代码开发

Java 架构 业务

Amazon Kinesis Data Streams 实现跨账户应用日志收集

亚马逊云科技 (Amazon Web Services)

日志 Data

云原生平台 Kyma 上创建的 Lambda Function 的技术实现细节介绍

汪子熙

Kubernetes 云原生 SAP Kyma 5月月更

在线HTML转YAML工具

入门小站

工具

亚马逊AWS特约评委揭秘FinClip黑客松获胜秘诀

Geek_99967b

SaaS 小程序容器 小程序开发 小程序组件

抖音日均拦截93%诈骗行为:如何打击互联网诈骗行为

石头IT视角

大厂裁员登上热搜,谈谈我的3点认知

大数据梦想家

大数据 个人成长 程序人生 裁员

读万卷书为何无用?

大数据梦想家

程序员 个人成长 读书感悟

一起来体验小程序应用的独特魅力

Geek_99967b

SaaS应用 finclip 小程序容器

大数据开发面试之26个Spark高频考点

大数据梦想家

大数据 spark 八股文

浅析大模型在自然语言处理方面的应用

算AI

人工智能 机器学习 产品 算法 5月月更

LabVIEW仪器控制:智能直流电源(科睿源KA3003)

不脱发的程序猿

串口通信 工业自动化 直流电源控制软件 LabVIEW仪器控制

Kafka 核心知识点灵魂 16 问

大数据梦想家

大数据 kafka 八股文

过去一年对我帮助最大的三本书

大数据梦想家

个人成长 程序人生 读书总结

解放双手!推荐一款 GitHub 星标 8.2k+的命令行软件管理器,非常酷炫!

沉默王二

GitHub

【变量规则,HTML 转义,非法导入名称】flask框架总结(三)

恒山其若陋兮

5月月更

LabVIEW仪器控制:智能显示屏(数码管显示屏)

不脱发的程序猿

串口通信 工业自动化 LabVIEW仪器控制 数码管显示屏软件 数码管显示屏

Python写实用小工具-实现图片转字符画

okokabcd

Python

使用 Amazon SageMaker 为新用户提供实时音乐推荐

亚马逊云科技 (Amazon Web Services)

Amazon 音乐 实时推送

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