写点什么

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

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

关注

评论

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

基于华为云ECS的目标检测与识别的昇腾AI开发体验【华为云至简致远】

sofiya

轻松完成接口测试及接口文档

Xd

Java 后端 接口测试

2022-Java后端工程师面试指南-(MySQL)

自然

8月月更

【华为云至简致远】还在烦恼成本高、运维难?华为云数据库给你一个标准答案!

sofiya

Spring Security OAuth实现GitHub快捷登录

阿提说说

Spring Security OAuth

Promise的点点滴滴

坚果

开源 8月月更

聊聊电源自动切换电路(常用自动切换电路总结)

矜辰所致

电路设计 8月月更 电源自动切换

什么是 Office Open XML 文件格式

汪子熙

xml 微软 Office 8月月更 openOffice

头脑风暴:打家劫舍

HelloWorld杰少

8月月更

未来社区的人车房隐私数据权属确认方法

阿提说说

区块链 物联网 隐私保护

2022秋招前端面试题(三)(附答案)

helloworld1024fd

前端面试

开源一夏 | 这么火的ES,SpringBoot结合ElasticSearch7实现多条件复合查询

知识浅谈

开源 8月月更

jvm(一 )内存区域的划分

想要飞的猪

JVM JVM运行时数据区

mysql进阶(二十八)GRANT REVOKE用法详解

No Silver Bullet

MySQL 签约计划第三季 8月月更 grant revoke

2021-Java后端工程师面试指南-(SpringBoot+SpringCloud)

自然

Spring Boot CLI spring cloud stream 8月月更

华为云数据库,更安全、更方便、更省钱的选择【华为云至简致远】

sofiya

OAuth2的定义和运行流程

阿提说说

spring security Oauth

朴素贝叶斯分类-西瓜分类 python

Five

贝叶斯公式 Python. 8月月更

基于华为云ModelArts和弹性云服务器ECS的AI全流程开发——昇腾工业质检应用实战【华为云至简致远】

sofiya

C51 基本函数、中断函数和库函数的详解

timerring

8月月更

Spring(三、依赖注入)

开源 bean Spring JPA 8月月更

STM32+移远MC20模块采用MQTT协议登录OneNet上传GPS数据

DS小龙哥

8月月更

自己动手制作elasticsearch的ik分词器的Docker镜像

程序员欣宸

elasticsearch 8月月更

docker下,一行命令搭建elasticsearch6.5.0集群(带head插件和ik分词器)

程序员欣宸

elasticsearch 8月月更

一种用于保证多方子系统数据一致性的方法

阿提说说

数据一致性 多方子系统 异构系统

2022秋招前端面试题(四)(附答案)

helloworld1024fd

前端面试

为什么我要说:柯里化 == 闭包+递归?

掘金安东尼

JavaScript 前端 8月月更 柯里化

2022-Java后端工程师面试指南-(Redis)

自然

面试题 reis 8月月更

谈谈程序员如何具备领导力

宇宙之一粟

领导力 8月月更

git 分支

Jason199

git fetch 8月月更

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