之前在Chrome 插件 030RateViewer 0.02版更新中提到通过这次功能的追加而感受到测试以及测试case的重要性。
其实关于测试这个话题,早就有不少人写过相关的文章了。我自然也没少看,可就是没放在心上也不当回事。所以这次便吃到了苦头。
这是因为在这个 030RateViewer 插件的开发过程中,有1/4的时间是浪费在无效的测试上的。而造成这一结果的,就是因为实现没有事先写好测试case(从而最终导致我晚睡了一个半小时)。由这一惨痛的教训,让我理解到了测试case的重要性。
说来惭愧,其实自己挖的一些坑从来就没认真写过测试case或者说就从没写过。一是因为做的东西大都以前端为主,前端的最大特点就是所见即所得。每次只要F5一下,就能看到效果,边看边改(而在用了webpack之后连F5都不需要按了)。也就没了写测试case的习惯。二来则是,大学时学过一阵子Java,看到要写什么测试case就很头疼(虽然有JUnit)。总之就是不爱写case,基本就是脚踩西瓜皮,想到什么测什么。
所以这一次在造数据测试的时候由于case设置的问题,导致没有出现预期的效果。因此造成在排查过程中在程序逻辑上花费了大量时间,而实际上程序逻辑并没有问题。其次,由于没有落笔,在这次的测试过程中,分支测试就变得模糊不清,测到哪了也不知道,造成返工重测浪费了时间。虽然是勉勉强强弄完了,不过事后想来,测试的面很可能还不全面,这也是不写测试case所造成的。
再有一点就是时间估算的问题。其实对于这一次要添加的功能,大致是心中有数的。所以最初估算大概一个下午左右的时间就能完成(14点~18点,包括查阅文档、功能实现以及测试),而实际上我是在晚上的22点左右才完成的。除去当中吃饭以及发呆的时间,大约在6个小时左右。正好印证了以前看过的一句话程序员的实际时间 = 程序员自己估算的时间 * 1.5
。
现在想来,这1.5倍的时间里,就是因为该做的事情没做好而浪费的。因此在今后自己的一些项目中,还是应该认真写好测试case(逻辑特别简单的除外),而不去偷这个懒。
网友评论