写点什么

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

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

关注

评论

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

DataGrip常用快捷键

fliter

断章取义,不一样的C/C++语言的学习策略

C语言技术网-码农有道

C/C++

新人怎么寻求解决问题的方法

波波

编程 职场 新人

我们迫切需要块状时间

Neco.W

效率 时间分配 时间管理 工作效率 提升效率

聊聊我对开源的理解

zygfengyuwuzu

开源

零基础、非计算机相关专业的如何转型程序员

C语言技术网-码农有道

程序员 转型

终端Terminal:程序员是如何查询天气预报的?

lmymirror

GitHub 工具 命令行 terminal 终端工具

LeetCode 565: Array Nesting

隔壁小王

算法

1分钟理解M2M和IoT概念

老任物联网杂谈

物联网 M2M IoT

死磕Java并发编程(8):CurrentHashMap如何实现高效地线程安全?在Java8中有哪些设计实现的演进?

Seven七哥

Java Java并发 ConcurrentHashMap

SpringIOC源码篇-Bean实例化-Spring如何选择类构造器(1)

申屠鹏会

Java Spring Boot

从草根到百万年薪C/C++程序员的二十年风雨之路

C语言技术网-码农有道

c++ 编程语言 C语言

LeetCode 153. Find Minimum in Rotated Sorted Array

隔壁小王

算法

中年危机,我们如何面对?

石云升

面试考试可用,十大排序算法

我不自豪谁志豪

学习 面试 算法

NIO 看破也说破(二)—— Java 中的两种BIO

小眼睛聊技术

Java 学习 程序员 架构 编程语言

Netty 源码解析(六): Channel 的 register 操作

猿灯塔

早起实操手册

超超不会飞

效率 生活 自律

如何消除写作过程中的痛苦,让写作变成一种享受

董一凡

写作

原创 | 使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (一)什么是单元测试

编程道与术

生活不奖赏心血来潮

池建强

个人成长 写作

Linux初学-01

Flychen

从2009到2020,世界编程语言排行榜分析

C语言技术网-码农有道

编程语言

Python 中怎样合并数据

张利东

Python

Centos的初步配置

玉龙BB

Docker Linux Docker-compose Centos 7

产品周刊 | 第 13 期(20200503)

八味阁

产品 设计 产品经理 产品设计

原创 | 类应该是匀称和均匀的

编程道与术

部署Hexo博客到VPS

ini

IT培训机构那些不得不说的事儿

C语言技术网-码农有道

IT培训机构

企业招聘的需求决定了C/C++程序员的学习方向

C语言技术网-码农有道

C/C++

职场发展的思考

子不语

生涯规划 职业规划

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