左小白的技术日常
Github
2020/08/10
Author: guoqzuo

为什么要写单元测试

20/04/30日发版,持续到到今天凌晨2点左右,测试发现有个bug:时间区间组件DatePicker前面一个时间没有显示,而这里应该显示最近一周的时间区间,现在只显示了后面一个时间。

但测试环境测试、UAT测试都是过了的,怎么突然就有问题了呢?于是看同事的代码定位问题,发现根据当前时间计算最近一周的日期逻辑有问题,只是简单粗暴的把 day 减了 6 天,之前一直是4月中下旬,大于6,所以没有出问题,这次正好是5月1号, 1 - 6 就是 -5 了, 时间拼接为 2020-05-0-5,这就导致有bug了。还好今天是5月1号,不然测不出这个bug就会导致后面生成环境的bug了。

从发现问题到定位问提、解决问题,大概用了5-10分钟左右。最后用当前时间戳 - 6 * 24 * 3600 * 1000 来解决。

我们一般在写程序时,很难发现自己逻辑上的bug,假设我们这里有写单元测试,考虑了很多种情况,那就可以避免这个问题。但现实是,我们目前大部分人都没有这个习惯,只要测试过了,就基本以为没问题了。但对于那种测试都测试不出来的在特定时间才会触发的bug,真的很可能造成线上bug,完全依赖于个人写代码时的逻辑严谨性。

怎么让自己写的代码更严谨,出问题的几率更小呢?那就是写单元测试。这样我们会考虑更多的特殊场景、而不是靠人肉测试。