软件测试是一种实际输出与预期输出间的审核或者比较,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。软件测试已成为软件过程中一项至关重要而且不可或缺的部分,或以其自身在软件开发期间的重要地位,或以其在软件测试评估期间的本体地位。在软件开发过程中,任何部分功能的实现都必须辅以测试,有了测试才能更好的继续后边的功能,而没有测试的开发过程正如蒙眼前行,只会相对目标愈行愈远。
软件测试的正确目标:找出并最终修改了程序的错误。因此不要只是为了证明程序能够正确运行而去测试程序;相反,应该一开始就假设程序中隐藏着错误(这种假设对于几乎所有的程序都成立),然后测试程序,发现尽可能多的错误。当然我们不能期望能发现所有的错误,即使是规模很小的程序,一般来说也无法发现其所有错误。所有测试人员应具有正确的期望。为了正确应对这种测试所带来的问题,我们应在测试之前确定一些策略:黑盒测试与白盒测试。、
黑盒测试指将程序视为不可见,测试目标与程序内部机制和结构完全无关,而是测试程序是否按其规范运行。按此策略,测试数据完全来源于软件规范,而判定标准就是“穷举输入测试”。然而根据经验,软件规范往往具有巨大甚至无穷的输入,进行穷举测试就成了一个无底洞,无法实现。因而测试者的目标在于通过有限而特殊的测试用例,最大限度的发现程序存在的问题,以取得最好的测试结果。要实现这个目标,就得对程序作出合理的假设,以确定有意义的用例,这里就需要能窥探程序内部构造。
白盒测试允许我们检查程序内部结构,从中获取测试数据。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是“穷举路径测试”,将程序中的所有可能的控制流路径进行测试,从而得到完整的测试。
程序测试是一项充满创造性和挑战性的工作,测试一个大的程序往往需要的创造性超过了开发者。因此学习本学科是一定要端正态度,不能浅尝辄止,亦不能以经验谈之,应努力掌握科学的方法,以真正获得技能,迎接职场的挑战。