Git库上的代码突然出现问题,想快点确定哪次提交导致的问题,要怎么做?
这种事经常发生,但是估计没人想要做这种问题定位,不但没有技术含量,而且无聊。比较有效的方案是:
- 确定范围,可以参考每日编译的版本和测试结果。如果没有的话,可以以周为单位或者几天为单位,按时间间隔线性递减;
- 在范围内采用使用二分查找,每次取范围内的中间点版本,重新BUILD和测试;
- 重复步骤2,直到定位到问题版本为止;
为了保证问题的快速定位,日常的功夫要做足,通过下面的工程化实践来解决:
- 每日编译 / 按commit编译,生成软件版本;
- 自动化部署到测试环境;
- 自动化测试,记录测试结果和版本信息;如果有问题发生,邮件主送代码提交者,并抄送全员;
- 至少保留最近一个30天的历史记录;
- 所有开发者都可以访问上述信息;
- 工具支撑:
- 针对问题,编写一个自动化的测试用例
- 一个通用工具根据二分法切换版本,并BUILD版本
- 将软件安装到测试环境,执行上面的测试用例,根据测试结果决定后续操作;
- 测试通过:向时间增加方向取版本;
- 测试失败:向时间减小方向取版本;
- 重复上面的步骤,直到找到最近一次失败的版本为止(结束条件:前一个版本成功,后一个版本失败,这个失败的版本就是我们要找的版本);