敏捷软工之提问回顾与个人总结
经过了一学期的奋战,敏捷软工这门课终于接近尾声。在这门课中,我主要经历了结对项目和团队项目两个项目的训练,整个过程虽然艰辛,但却收获颇丰,也让我对软件工程有了更加深入的思考。
对“阅读提问”的回答
问题一:单元测试应该谁来写?
经过结对项目以及团队项目的训练,我的结论是:单元测试应该由最熟悉这部分代码的人来写,且这个人有责任尽可能地提高对这份代码测试的覆盖率,不能随便测测拉倒。
在团队开发的时候,虽然我们团队有兼职测试的同学,但是我们不能总是指望把这部分工作交给他来做,毕竟我们团队的这位同学也有相当多自己的开发、运维和压测等更重要的任务要做。能够通过自己单元测试发现的问题,就尽量不要再麻烦管测试的同学,不然来回交流反馈 bug 会降低效率,且在 scrum meeting 或者 code review 的时候被反馈自己所写的代码存在低级的质量问题,也是挺尴尬的一件事情。
在经过几次熬夜修 bug 之后,我亲身体会到在写单元测试的时候,一定要想办法提高覆盖率,并且单元测试所检查的后置条件一定要写得细致一些,而要做到这一点则最好让最熟悉代码的同学来写。我印象比较深的一个 bug 是:有一个 API 需要返回所有未过期或者没有给定期限的 Offer 对象,我在最开始单元测试的时候对这个 API 只写了一个测试方法,该测试方法先在测试数据库中插入 3 个 Offer 对象,这 3 个分别是已过期、未过期以及没有指定日期的 Offer,而我在测试的时候只测试了返回回来的 Offer 个数是不是 2,相信细心的读者会发现ÿ