也谈软件灰盒测试
第一次听说灰盒测试,是在金蝶上班的时候,那时候老大让我们研究灰盒测试,当时一头雾水。来阿里工作一年多自己感觉现在做的工作有点像灰盒测试,于是总结了一下,拿出来给大家分享。
在测试领域众所周知存在黑盒测试和白盒测试,黑盒测试更多是在集成测试阶段进行只关注应用是否符合需求,而不关心代码设计的结构,方式,方法。而白盒测试是针对黑盒测试提出的,前提是知道软件产品内部工作过程。通过测试来检测软件产品内部动作是否按照规格说明书的规定正常进行,通常是在单元测试阶段进行。那么做了这两种测试是否覆盖了软件测试的全部内容,即是否就能保证产品的质量呢。其实是不一定的,或者说如果靠这两种方法来覆盖,投入的代价是比较大的。譬如目前很火的OPEN API的测试,譬如对具备软件平台性质产品的测试。因为通过黑盒手工测试是很难完成的,而白盒测试是在单元测试进行的,显然对产品的测试带来很大的局限性,它也无法测试到产品在集成过程中带来的问题。那么灰盒测试就有它出现的必然性,这就是所谓存在就是合理的。
灰盒测试的特性:
1. 灰盒测试通常是在集成测试前期进行的。灰盒测试通常在程序员做完白盒测试之后(有些书上认为白盒测试是由测试人员进行的,我觉得纯属理想主义),在功能测试人员进行大规模集成测试之前进行的。
2. 灰盒测试是需要了解代码工程的实现的
3. 灰盒测试是通过类似白盒测试的方法进行的,也就是说和白盒测试的方法是相同的,是通过编写代码,调用函数或者封装好的接口进行的。
4. 灰盒测试是由测试人员进行测试的。
灰盒测试和白盒测试的区别
1. 测试的时段不同,白盒测试在单元测试阶段进行,灰盒测试在集成测试前期进行 单元测试方法
2. 测试的关注对象不同,白盒测试更关注内部实现是否按照规格说明书进行,灰盒测试除了需要关注白盒测试关注的内容还更多从业务层面去考虑问题,考虑更多的组合测试业务场景。
3. 范围不同,白盒测试更关注单个代码段,函数的正确性,灰盒测试的对象已经基本能完成一个完整的业务功能。
4. 灰盒测试的代码比较独立,不像白盒测试基本上和程序代码需要做到一一对应。
灰盒测试和白盒测试的相同点
1. 目的相同
2. 方法相同,都是需要通过代码来实现
3. 对测试人员素质要求相同
灰盒测试和黑盒测试的不同点
1. 测试的方法不同。
2. 对测试人员要求不同。灰盒测试要求比较强的编程能力。
3. 测试范围不同,关注的对象不同,黑盒测试是覆盖产品范围最广的测试,是灰盒测试无法取代的。但是灰盒测试是可以被黑盒替代的,只是代价比较大,需要很多的测试用例。
灰盒测试和黑盒测试的相同点
1. 目的相同
2. 测试所处的时间段相近。