软件测试技术及其过程
从是否需要执行被测软件的角度,将软件测试分为静态测试和动态测试。
静态测试是指被测试程序不在机器上运行,而是采用人工检测和计算机辅助静态分析
的手段对程序进行检测,主要方法包括人工测试和计算机辅助静态分析。相对动态测试,
静态测试可以更早地进行。静态分析的查错和分析功能是其他方法所不能替代的,静态分
析能发现文档中问题。目前,静态测试已被当做一种自动化的、主要的代码校验方法。但
静态测试不能检测程序的实际执行情况,无法得到程序的执行结果。
动态测试是实际运行被测程序,输入相应的测试用例,判定执行结果是否符合要求,
从而检验程序的正确性、可靠性和有效性。一般意义上的测试主要是指动态测试。为了使
测试发现更多的错误,需要运用一些有效的方法:一种是黑盒测试,即测试产品的功能;
一种是白盒测试,即测试产品内部结构及处理过程。动态测试是一种经常运用的测试方法,
无论在单元测试、集成测试中,还是在系统测试、验收测试中,都是一种有效的测试方法。
但动态测试不能发现文档问题,必须等待程序代码完成后进行,发现问题相对迟得多,一
旦发现问题,必须重新设计、重新编码,必然增大不良质量的成本。
从测试是否针对系统的内部结构和具体实现算法的角度,将软件测试分为黑盒测试、白盒测试。
黑盒测试,也称功能测试或数据驱动测试。黑盒测试是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用。测试时,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息的完整性。“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。
白盒测试,也称结构测试或逻辑驱动测试。白盒测试是已知产品内部工作过程,通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,主要用于软件验证。“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法 是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误,因为穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。 灰盒测试,确实是介于黑盒测试和白盒测试之间的,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态。有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率 会很低,因此需要采取这样的一种灰盒的方法。灰盒测试结合了白盒测试盒黑盒测试的要素。它考虑了用户端、特定的系统知识和操作环境。它在系统组件的协同性环境中评价应用软件的设计。