单元测试
单元测试(Unit Test)就是以程序测试程序。—当你在开发软件的时候,你不但撰写了原本的功能,同时也写出每个功能对应的程序码,测试每个功能是否正常运作。
每次在讲到单元测试的时候,总是会有「软件开发过程是否应该要写单元测试」这样的疑问,你会看到有不少人说写单元测试会占用额外的时间,如果开发软件是为了创业,那么目标应该是要尽快完成、尽快上线,才能够尽快了解用户与市场真正的需求。
我想,对这个问题,我们先不要用争辩的方式讨论,我们来换个方式—我们用体验的。我们先不要从别人的意见中判断单元测试好不好、有没有用,我们先来写一次单元测试,再来评价—看看你觉得写单元测试会不会花很多时间?对你有没有帮助?如何?
在上一章结束时,我们要写一个贪食蛇游戏当做练习。我们在这个游戏中,我们于是写了相关的程式,像是控制蛇的移动,还有在蛇吃到水果的时候,尾巴要加长…等等。接下来就是执行、测试,我们把程式跑起来,可能会觉得这条蛇可能哪里怪怪的,可能在吃到水果的瞬间,尾巴并没有立刻变长,而是等蛇再走了一两格才变得比较对,或,尾巴长出去的方向,好像不太对?
我们可以选择用眼睛这类的感官检查程序是否有问题,但是在贪食蛇这个程式中, Timer 每隔0.5 秒就会触发一次,蛇每隔0.5 秒就会移动一格,如果刚吃到水果的时候,因为我们的程式逻辑有问题,尾巴长出去的方向不对,我们只有0.5 秒的时间可以用肉眼捕捉这个问题,那,我们真的有办法在程式出错的时候,有效发觉问题吗?你真的以为,光是贪食蛇这么简单的小游戏,你就不会写出bug 吗?
而假如我们写的程序,其实并不是贪食蛇这种轻松的小游戏呢?