软件项目开发中占用时间多的毫无疑问是软件测试阶段。软件测试是一个发现和修改bug的好时机,总所周知:我们不管采用什么技术和方法,都无法避免软件故障。而软件测试是对软件需求分析、设计规格说明和编码的终审,是软件质量保证的关键步骤。虽然说它并不能完全消除软件的故障,但是经过测试能保证经过最少的人力和物力发现并改正软件中潜在的各种故障和缺陷,在很大程度上提高软件质量。
软件测试之所以重要,一是因为在软件开发过程中会产生一些问题,如果这些问题不在发现时就解决,则会导致不可预计的后果。二是因为开发者在开发软件时往往会带有主观意识,这会导致他们认为自己的程序没有什么问题,但事实上是有问题的。三是因为一些细微的故障不经过测试是不能发现的,但这些不易发现的故障会导致难以预料的后果。比如说千年虫问题,这就是因为没有在发现问题时解决,所以付出了巨大的代价来修复这个问题。而爱国者导弹防御系统的一个小小系统时钟错误就导致系统被拖延100多个小时。这些事实都是反映软件测试重要的有力的依据。
软件测试主要有四个步骤,先对系统单元进行测试,然后将已经测试的模块组装进行测试,再进行确认测试,最后检验开发的软件能否与系统的其他部分协调工作,即系统测试。在测试时使用频率最多的为黑盒测试和白盒测试。黑盒测试主要包括等价类划分法、边界值分析法、、因果图法和决策表法。白盒测试主要包括控制流测试法、数据流测试法、程序插装法和程序变异法。
软件测试是是软件开发必不可少的一个步骤,也是对软件质量最重要的影响因素之一,只有做好了测试工作,软件的质量才能接近理想的效果。