黑盒测试VS白盒测试

2020-06-12 15:15:53 浏览数 (1)

引言

这篇文章是我从stackoverflow上翻译过来的,如果以后遇到好的文章我还会继续翻译。

问题

哪种类型的测试对测试来说最重要的?为什么?

回复一:

黑盒测试

是从测试对象的外部视角推导出测试用例,这些测试可以是功能性的,也可以是非功能性的,尽管通常是功能性的,测试设计者选择有效的和无效的输入来验证正确的输出。测试者不知道测试对象的内部结构。

白盒测试

使用系统内部结构视角基于内部结构来设计测试用例。它需要编程技能来验证软件的所有路径。测试人员选择测试用例输入,通过代码执行路径然后确定适当的输出。在电气硬件测试,电路中的每一个节点都要被探测和测量;例如电路测试(ICT)

我认为两者都很重要,但是他们通常在开发和测试那里是分开的。

内部结构知识对测试者来说很重要吗?我听到一些观点认为有测试意识能帮助他们更好的测试,但我也听过这样的说法,即时这些知识可以帮助功能测试,对代码进行测试,而不是预期的解决方案。

作者回复:

黑盒测试

特点:测试功能

依据:需求规格说明书

举例:等价类划分、边界值测试

优点:能站在用户的立场上进行测试

缺点:不能测试程序内部特定部位和程序方法

黑盒测试把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,针对“软件界面”和”软件功能“进行测试,只检查功能是否符合需求规格说明书能正常使用。因此黑盒测试又叫功能测试或数据驱动测试。

黑盒测试主要是为了发现以下错误:

是否有不正确或者遗漏了的功能;

在接口上,输入能否正确的接受?能否输出正确的结果?

是否有数据结构错误或外部信息(例如数据库文件)访问错误?

性能上是否能够满足要求?

是否有初始化或终止性错误?

黑盒的测试用例技术设计有三种:边界值分析、等价类划分、错误推测法。

白盒测试

特点:测试程序接口和结构

依据:软件程序设计

举例:逻辑覆盖

优点:对程序内部进行特定部位进行覆盖测试

缺点:无法坚持程序外部特征

白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看作一个打开的盒子,他允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为”结构测试“或”逻辑驱动测试“。白盒测试是按照程序内部的结构来测试程序,通过测试检验产品内部动作是否按照设计规格说明书的要求正常进行,检验程序中的每条通道是否都按照规定正常工作。

白盒测试主要是想对程序模块进行以下检查:

对程序模块的所有独立的执行路径至少测试一遍;

对所有的逻辑判定,取”真“与”假“的两种情况都能至少测一遍;

在循环的边界和运行的界限内执行循环体;

测试内部数据结构的有效性,等等;

静态白盒测试 :即代码审查,正式审查和检验设计和程序代码;

动态白盒测试 利用查看代码功能和实现方式得到的信息来设计和执行测试,也叫结构测试;

白盒的测试用例技术包括逻辑覆盖和基本路径测试:

逻辑覆盖:是以程序内在逻辑结构为基础的测试用例设计技术,这一方法要求测试人员对程序的逻辑结构有清楚的了解。

基本路径测试:在程序控制流程图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。

黑盒测试和白盒测试是两种不同的测试方法,他们都有自个的优缺点,只有在实战中灵活运用才能达到最佳的测试效果。

Q: 关于“黑盒与白盒测试”,你还有哪些问题和想法?

欢迎评论、转发。

0 人点赞