写点什么

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

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

关注

评论

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

为什么要做团建TB?(6/28)

赵新龙

28天写作

网易应用创新开发者大赛成功在杭举办,十强队伍现场比拼

网易云信

人工智能 音视频 直播

Redis 的事务支持 ACID 么?

码哥字节

redis 事务 ACID 签约计划第二季

多级缓存 && 分库分表

空空

架构设计

热门Scrum敏捷看板工具

顿顿顿

项目管理 Scrum 敏捷开发 研发管理 产品研发

动图图解GC算法 - 让垃圾回收动起来!

码农参上

垃圾回收 垃圾回收算法 签约计划第二季

Linux一学就会之Centos8软件包的管理和安装之yum管理软件包

学神来啦

Linux centos 运维 rpm yum

换个角度思考勒索攻击事件

华为云开发者联盟

漏洞 勒索 攻击 安全检测 蜜罐检测

使用Harbor作为Rainbond默认容器镜像仓库,扩展Rainbond镜像管理能力

北京好雨科技有限公司

企业如何做好员工安全意识提升

腾讯安全云鼎实验室

基于HTML、CSS、JS的小游戏/工具制作过程及完整源码

海拥(haiyong.site)

28天写作 内容合集 签约计划第二季 12月日更 技术专题合集

Python代码阅读(第67篇):获取列表中的去重后的元素

Felix

Python 编程 列表 阅读代码 Python初学者

和合共赢,DataPipeline与麒麟软件完成产品兼容性互认证

DataPipeline数见科技

中间件 数据库中间件

【混合云】部分混合云管理平台大汇总

行云管家

云计算 公有云 混合云 云管平台

单库单应用 && 内容分发

空空

架构设计

查询分离

空空

架构设计

2021商业评论管理行动力峰会

大咖说

商业 直播

浅谈Java编译优化之常量折叠技术

码农参上

编译器优化 签约计划第二季

目前市面上堡垒机的品牌有哪些?采购时候需要考虑哪些?

行云管家

网络安全 等保 堡垒机 等级保护

蒙娜丽莎Rap的秘密!这个AI算法绝不能错过!!!

百度开发者中心

AI

春松客服入驻Rainbond开源应用商店

北京好雨科技有限公司

Smack库 XMPP Tigase异常SASLErrorException

Changing Lin

12月日更

ipvs localhost 为何不正常

Geek_f24c45

k8s IPVS kube-proxy

偷天换日,用JavaAgent欺骗你的JVM

码农参上

字节码插桩 代理 探针 签约计划第二季

弹性伸缩 && 多机房

空空

架构设计

微服务

空空

架构设计

一文讲透数仓临时表的用法

华为云开发者联盟

数据库 sql Local GaussDB(DWS) 临时表

【讲坛实录】知识图谱的探索与应用

星环科技

知识图谱

会用泛型,但你知道什么是泛型的类型擦除吗?

码农参上

Java泛型 签约计划第二季

编译优化后,for循环中i++和++i究竟哪个效率高?

码农参上

字节码 编译优化 签约计划第二季

安全攻防实战系列MSF

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

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