关于测试技术,测试朋友们谈得多的莫过于黑盒测试、灰盒测试、白盒测试了,再有是自动化测试及一些专项测试,如性能测试、安全测试、内存泄漏测试等。在项目的初期,对测试需求的分解往往处于粗线条阶段,但测试工作开展的技术应用上需尽早决策,以便安排资源尽早开展测试。接下来介绍常用到的测试技术及如何裁剪应用。

  黑盒测试不等于手工测试

  一般而言,任何一个测试项目,都不会不用黑盒测试,其中的原因有技术原因也有非技术原因,包括以下几个方面:

  第一,黑盒测试是站在用户使用场景中进行的测试,在贴近用户使用的同时,能验证实现是否满足需求的定义。

  第二,入门容易,对测试人员技术要求起点并不高,在研发的成本与质量及市场供求关系上能较快找到一个平衡点,这也是为什么很多创业初期的公司只要求进行黑盒功能测试的原因。但是黑盒测试虽然入门容易(门槛低),但并不意味着黑盒测试没有技术含量。目前业界很多测试朋友,特别是一些新人,存在这种认识误区。黑盒测试并不等同于手工测试,同样可用写测试代码,或脚本运行程序,或监控程序的运行,或获取程序的后台数据等方式来完成某项测试任务。笔者认为,要成为一个黑盒测试专家,技术上对广度的要求比白盒测试专家(主要在代码分析的深度上)要更高。

  第三,在某些情况下,手工黑盒测试效率更高,可以很快地发现Bug,如当软件不稳定时,以及测试一些特性方面时,如UI布局的效果、易用性测试等。还有一些情况只能用黑盒测试,如用户体验测试。美国软件测试大师James Bach在他的《软件测试经验与教训》一书中曾提到“手工黑盒测试可以发现85%的软件缺陷”。根据笔者多年的实践证明,事实确实如此,所以在部署测试策略时,黑盒测试是首先要考虑的测试方法,且投入比重方面比其他方面的投入要大,这里主要指人力的投入。这也是为什么很多公司黑盒测试人员会占70%~80%,或者更多。

  以上观之,黑盒测试有其显而易见的优点,但在项目的实际测试过程中,如果只用单纯的黑盒测试方法经常会导致过度测试部分业务功能,而另一部分却测试不足,甚至于一直存在某部分测试盲区。因此适当采用白盒测试,作为补充,是制定测试策略中需考虑的事。如何适当采用,下节将进行介绍。

  小贴士:

  黑盒测试:又叫功能测试,把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程,根据规格说明书,通过操作软件验证程序的功能是否与规格说明书规定的一致。

  白盒测试:也称结构性测试,是基于代码的测试,按照程序内部的逻辑结构,检测程序是否能按预定要求进行正确的工作。