以前一直以为,对于一个软件来说,写代码才是重中之重,也是其中最困难的,而软件测试来说相对简单许多。那时候以为:软件测试不就是输入几个测试数据测试一下不就行了吗。时至今日慢慢了解到,对于一个程序来说,代码的书写其实比较简单,测试过程才是其中的重中之重。因为,不管你是谁。编程技巧有多高,编程经验有多么丰富,在写代码的过程中,总会因为这样那样人为或者天然的原因,总会导致一些不可避免的bug,这时候软件测试的重要性就凸显出来了。
软件测试分为两种:黑盒测试、白盒测试。
“黑盒”法是穷举输入测试(不能看到源码),只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。
“白盒”法是穷举路径测试(能够看到程序的源码,顺序结构等),贯穿程序的独立路径数是天文数字,但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。E.W.Dijkstra的一句名言对测试的不彻底性作了很好的注解:“程序测试只能证明错误的存在,但不能证明错误不存在”。
然而,不论是黑盒测试还是白盒测试,由于测试数据的巨大,我们都不可能进行彻底的测试,也就是不可能把一切可能的输入结果均输入一遍来测试软件的稳定性和可承载性,所以,这种类型的“穷举测试”在软件复杂的情况下根本行不通。于是,就有了一些简便测试方法取代了单纯的”穷举测试“,比如等价类等。
时间: 2024-10-28 21:58:17