您的位置:首页 > 其它

黑盒测试、白盒测试、灰盒测试之间区别

2018-01-15 17:02 375 查看
什么是黑盒测试和白盒测试?

任何工程产品(注意是任何工程产品)都可以使用以下两种方法之一进行测试。
黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。

黑盒测试
软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。

黑盒测试主要是为了发现以下几类错误:
1、是否有不正确或遗漏的功能?
2、在接口上,输入是否能正确的接受?能否输出正确的结果?
3、是否有数据结构错误或外部信息(例如数据文件)访问错误?
4、性能上是否能够满足要求?
5、是否有初始化或终止性错误?

具体的黑盒测试方法包括等价类划分、因果图、正交实验设计法、边值分析、判定表驱动法功能测试等。
1、等价类划分 :
等价类划分是一种典型的黑盒测试方法,用这一方法设计测试用例可以不用考虑程序的内部结构,只以对程序的要求和说明,即需求规格说明书依据,仔细分析和推敲说明书的各项需求,特别是功能需求,把说明中对输入的要求和输出的要求区别开来并加以分解。

2、边界值分析 :
软件测试常用的一个方法是把测试工作按同样的形式划分。对数据进行软件测试,就是检查用户输入的信息、返回结果以及中间计算结果是否正确。边界值分析(Boundary
Value Analysis,BVA)是一种补充等价划分的测试用例设计技术,它不是选择等价类的任意元素,而是选择等价类边界的测试用例。
3、错误推测法:是基于经验直觉推测程序中所有可能存在的各种错误,
从而有针对性的设计测试用例的方法. 错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例. 例如, 在单元测试时曾列出的许多在模块中常见的错误.
以前产品测试中曾经发现的错误等, 这些就是经验的总结. 还有, 输入数据和输出数据为0的情况. 输入表格为空格或输入表格只有一行.
这些都是容易发生错误的情况. 可选择这些情况下的例子作为测试用例.
4、因果图:考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例.
这就需要利用因果图(逻辑模型).
  因果图方法最终生成的就是判定表. 它适合于检查程序输入条件的各种组合情况.
 就是使用已经造好了的正交表格来安排试验并进行数据分析的一种方法,目的是用最少的测试用例达到最高的测试覆盖率

白盒测试
软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。

白盒测试主要是想对程序模块进行如下检查:
1、对程序模块的所有独立的执行路径至少测试一遍。
2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。
3、在循环的边界和运行的界限内执行循环体。
4、测试内部数据结构的有效性,等等。

白盒测试方法包括:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖等。

以上事实说明,软件测试有一个致命的缺陷,即测试的不完全、不彻底性。由于任何程序只能进行少量(相对于穷举的巨大数量而言)的有限的测试,在未发现错误时,不能说明程序中没有错误。

灰盒测试

灰盒测试,是介于白盒测试与黑盒测试之间的,可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。

转载地址:http://www.lmwlove.com/ac/id1105
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: