规模化软件开发中如何治愈自动化测试不稳定的顽疾?(下)
685
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
背景简介
本文是《规模化软件开发中如何治愈自动化测试不稳定的顽疾?》的续篇,介绍了Slack团队如何解决自动化测试不稳定的问题。他们通过项目“Project Cornflake”进行了多次尝试,总结了不稳定测试与失败测试的关系,并提出了两种方案。
方案一:自动隔离不稳定的测试用例
Slack团队首先尝试在测试用例不稳定率触及阈值时,自动过滤不稳定测试用例的结果。他们开发了一个系统,检测不稳定测试用例并计算其不稳定概率,超过阈值的用例会被隔离,使测试任务标记为通过。
实施效果
方案实施后,PR分支测试稳定性从71%提高到88%,主分支构建稳定性从61%提高到90%。然而,该方案逐渐暴露出以下弊端:
- 不稳定测试可能流入主分支,导致调查困难。
- 开发人员可能误以为测试已修复,造成混淆。
- 对后台依赖性过高,影响本地开发体验。
最终,团队决定放弃该方案,并转向更有效的解决方法。
方案二:停用不稳定的测试用例
Slack团队改进后决定直接停用不稳定的测试用例,而不是过滤测试结果。他们将失败检测、测试隔离和通知流程进行整合,具体步骤包括:
- 检测测试失败并区分不稳定测试与失败测试。
- 自动创建Jira问题单并提交PR禁用测试用例。
- 通过Slack通知开发团队相关问题。
实施效果
方案二实施后,主分支稳定性提高到96%,测试任务失败率降至3.85%,并节省了553小时的人工排查时间。开发人员反馈积极,团队工作效率和信心显著提升。
后续优化与未来计划
尽管方案二运行稳定,但开发人员在重新启用测试时遇到困难。Slack团队计划进一步优化系统,包括:
- 实时通知开发团队不稳定测试情况。
- 定期重新运行隔离的测试,并自动启用稳定测试。
- 简化修复不稳定测试的流程。
总结
通过两种方案的实践与优化,Slack团队成功提高了测试系统的稳定性,为规模化软件开发提供了宝贵的经验。未来,他们将继续完善平台,更好地支持开发者需求。
软件质量报道
本公众号致力于健康、安全、绿色的软件生态,分享软件质量管理、软件测试的思想、方法、技术与优秀实践,追踪软件质量领域的热点,及时报道软件质量管理的成功案例或质量事故,以及分享深度思考、有温度的技术文章等,努力成为您工作中的朋友。
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
白皮书上线