白盒测试:在测试类书籍中,白盒测试有多种称法,如玻璃盒测试,透明盒测试,开放盒测试,结构化测试,基于代码的测试,逻辑驱动测试等。白盒测试是一种测试用例设计方法,在这里盒子指的是被测试的软件,白盒,顾名思义即盒子是可视的,你可以清楚盒子内部的东西以及里面是如何运作的,因此白盒测试需要你对系统内部的结构和工作原理有一个清楚的了解,并且基于这个知识来设计你的用例。
黑盒测试:又叫功能测试,这是因为在黑盒测试中,主要关注于被测软件的功能实现,而不是内部逻辑。
黑盒测试发现以下类型的错误:
1)功能错误或遗漏
2)界面错误
3)数据结构或外部数据库访问错误
4)性能错误
5)初始化和终止错误。
灰盒测试:介于白盒和灰盒之间的测试。最常见的灰盒测试时集成测试。
(1)白盒测试和黑盒测试的优缺点比较:
比较 | 优点 | 缺点 |
白盒测试 |
迫使测试人员仔细的思考软件的实现。 可以检测代码中的每条分支和路径。 揭示隐藏在代码中的错误。 对代码的测试比较彻底。 最优化。 |
昂贵。 无法测试代码中遗漏的路径和数据敏感性错误。 不验证规格的正确性。 |
黑盒测试 |
测试效率高。 测试人员不需要了解详细的细节,包括特定的编程语言。 测试人员和编码人员是彼此独立的。 从用户的视角进行测试,很容易被大家理解和接受。 有助于暴露任何规格不一致或有歧义的问题。 测试用例可以在规格完成之后马上进行。 |
只有一小部分可能的输入被测试到,要测试每个可能的数据流几乎是不可能的。 没有清晰和简明的规格,测试用例是很难设计的。 如何测试人员不被告知开发人员已经执行过的用例,在测试数据上会存在不必要的重复。 会有很多程序路径没有被测试到。 不能直接针对特定的程序段,这些程序可能非常复杂(因此可能隐藏更多的问题)。 |
通过白盒测试与黑盒测试的比较,可以看出,白盒和黑盒这两类测试的出发点是不同的:
白盒测试考虑的是测试软件的代码,它不保证完整的需求规格是否被满足。
而黑盒测试只考虑需求规格,它不保证实现的所有部分是否被测试到。黑盒测试会发现遗漏的缺陷,指出规格的部分没有被完成。
(2)黑盒和白盒测试的常用技术
黑盒和白盒测试的常用技术,参考下面的图中内容。