软件的测试

Author: 江苏 陈锐冰 Date: 1992-05-01

        软件测试是为了发现错误而执行软件的过程,它是保证软件质量的关键。是对需求分析、设计和编码的最后复审。根据软件工程的观点,一个软件系统的大部分工作量是花在程序编写出现以后,即测试和维护阶段。其中测试阶段的工作量约占开发期的一半,测试一个大型系统,其工作量可能比设计这个系统的工作量还大。
        测试阶段要考虑的基本问题就是“经济性”,即在一定的研制时间和经费下,通过执行有限个测试用例,尽可能多地发现错误。
        测试用例由输入数据和预期的输出结果两部分组成。
        整个测试过程分为模块测试(单元测试)、联合测试,验证三个阶段。对于程序员来说应该掌握模块测试的方法,模块测试是整个测试过程中最基本的部分。
        测试的方法通常有两种:白盒法和黑盒法。白盒法又称逻辑覆盖法,使用白盒法需要阅读程序内部的逻辑,并以此为基础设计高度用便。白盒法考虑的是测试用便对程序内部逻辑的覆盖程序,最彻底的白盒法是覆盖程序中的每一条路径。黑盒法着眼于程序的外部特性,根据程序的功能说明来设计测试用便。最彻底的黑盒法是穷举各种输入情况,给出无穷多个测试用便。
        无论是白盒法还是黑盒法,要想遍历所有的路径或遍历所有的输入数据,往往是不可能的。因此在实际工作中,常常采取白盒法和黑盒法结合的方式测试。
        值得注意的是,不能认为通过测试以后软件就完全没有错误了。测试只能证明错误的存在,不能证明错误不存在。