程序编码工作逐步接近尾声,接踵而来的就是功能测试、模块测试、集成测试、系统测试等。对于系统测试,开发人员大都不愿意去做的,因为这是一项既繁琐、又无成就感的工作,但是这有时一件必不可少的工作,因为一套没有经过严格测试的系统,就像给病人输入的血液没有经过任何的病毒检测,里面是否有艾滋病毒、乙肝病毒、梅毒等等一概不管,那这个病人的生命就只能是听天由命了。
所以系统测试再繁琐也要是需要人来做的。初步的功能测试和模块测试工作自然是由我带一个团队成员来完成,可我发现个问题,我只要输入一些数据到系统中,开始做测试工作,就会自然地进入到一种自我欣赏系统的状态中,一圈数据测试下来,只能找到少量的程序错误。
Bug大体上可以分为两类,第一类是程序错误,例如:由于数据边际校验不强而引起系统异常死机,程序显示不正确等;第二类是功能性错误,即程序本身没有错误,但是某些数据的计算方法不正确,或数据更新不完整。对于第一类错误,我还好测试些,毕竟出现问题后系统就有出错提示,一目了然。但对于第二种错误,我根本无法察觉,例如一套产品的应该是270美元,但计算出来是250美元,我很难直接判断出这个价格是正确的结果还是有问题。但对于有丰富经验的业务员来说,他们一眼就可以看出来,因为这些价格他们太熟悉了。考虑到在测试过程中很难发现第二类错误,所以我就和郑总商量,看能否找人来协助我们做这部分的测试工作。郑总还算配合,很快就派那个管销售的总管来与我们一起做项目的测试。当然,他也不可能真的经常来我们这里一起测试,只有我们每次把需要测试的模块通过邮件发给他,然后他再把发现的错误发回给我们。我们就这样合作,他一有空就测试程序,然后把错误报告发给我,我将修改好的程序发送给他,他最后再做一次错误修正后确认测试。为了我们的测试能基于相同数据,我们之间还经常交换数据库,固定以某段数据为测试基础。初略估计,这个测试阶段他的工作量也应该不小,因为大部分的Bug都是这一类功能性的错误导致的。
系统经过营销总管和我们的多次测试和修改后,健壮性得到了显著的提高。在测试期间郑总本人也亲自来协助我们做上线前的最后测试工作。我和他协商后,制定的计划是:测试数据库放在他的电脑上(以后再配备专用的数据库服务器),首先在营销部的5台电脑上安装客户端程序。即本套系统先由营销部来做实战测试,因为他们的业务中使用到的模块最多,数据所走到流程也最全。当系统测试没有问题后,再全面推广到公司的所有机器上。
系统程序经过营销部的实际测试也日趋完善,项目也基本接近完成。与郑总商量后,决定系统在秋季广交会前在整个公司的范围内上线。由于前面的系统测试工作做得非常充分,所以系统上线后并未遇到任何技术上的问题,仅是某些部门和个人提出了一些小的功能修改意见。至此系统算是基本上线成功,但还有最后一次大考,那就是秋季广交会。