多环境多需求并行下的代码测试覆盖率统计工具实现
马蜂窝技术原创内容,更多干货请关注公众号:mfwtech 测试覆盖率常被用来衡量测试的充分性和完整性,也是测试有效性的一个度量。「敏捷开发」的大潮之下,如何在快速迭代的同时保证对被测代码的覆盖度和产品质量,是一个非常有挑战性的话题。 在马蜂窝大交通、酒店等交易相关业务中,项目的开发和测试实践同样遵循敏捷的原则,迭代周期短、速度快。因此,如何依据测试覆盖率数据帮助我们有效判断项目质量、了解测试状态、提升迭代效率,是我们一直很重视的工作。 Part.1 测试覆盖率统计中的挑战 对于功能测试而言,通常可以通过充分了解需求、完善的测试用例、接口测试、Review 技术方案等来保证测试充分性。但随着业务规模快速发展,业务逻辑越来越复杂,系统级别交互越来越多,这些方法都不能保证所有的代码一定被全部测试过,也给测试人员带来极大挑战。 说到这儿和大家分享一个因为测试覆盖不充分,影响到线上业务的真实案例。事件起因是项目提测阶段一个微服务 Sonar 扫描没通过,开发同学为了修复 Sonar 发现的问题而重构了一部分历史代码,却导致一个原有发券需求的错误。当天下午运营触发发券后 Bug 出现直接导致生单不可用,并且持续了将近一个小时。这里的问题就是发券功能与此次需求无关,开发人员修改代码后测试人员不知道,也没有经过测试,但跟随本次需求一起上线了,测试用例无法覆盖到。