什么是白盒测试和黑盒测试?有什么区别?

白盒测试:

指的是实际运行被测程序,不使用用户界面,通过程序的源代码进行测试。这类测试需要从代码语法中发现内码在算法、溢出、路径、条件等方面的不足或错误,然后加以改正。

黑盒测试:

也称为功能测试、黑盒测试或基于规范的测试,是在不检查程序源代码,也不清楚软件的源代码程序是如何设计的情况下,使用整个软件或某个软件功能进行严格测试。测试人员可以通过输入他们的数据并查看输出结果来理解软件是如何工作的。应该更适合测试网页游戏。

区别一:根据定义。

白盒测试需要从代码语法中发现内部代码在算法、溢出、路径、条件等方面的不足或错误,然后进行修正。黑盒测试侧重于测试软件功能,不涉及程序的内部结构和内容特征。黑盒测试不能代替白盒测试,它是与白盒测试互补的测试方法,很可能发现白盒测试中不易发现的其他类型的错误。

区别二:从测试的目的来说。

黑盒测试的目的是检测是否有不正确或缺失的功能;就数据或参数而言,输入是否能被正确接收;是否存在数据结构错误或外部信息访问错误;性能是否能满足要求;是否存在初始化或终止错误。白盒测试的目的是通过检查程序在不同点的状态来确定实际状态是否与预期状态一致,而不考虑其功能。

区别三:检测方法

白盒测试是穷举路径测试,黑盒测试是穷举输入测试。这两种方法基于完全不同的观点,反映了事物的两个极端。它们各有侧重,各有优势,但不能互相替代。在现代测试理念中,这两种测试方法并不是完全分离的,而是交替使用的。

扩展数据

白盒测试的优势:

1.能仔细考虑软件的实现。

2.你能检测出代码中的每个分支和路径吗?

3.揭示隐藏在代码中的错误。

4.彻底测试代码。

白盒测试的缺点:

1.昂贵的

2.无法检测代码中的缺失路径和数据敏感性错误。

3.不验证规格的正确性

黑盒测试的优势:

1.对于子系统甚至系统,效率比白盒测试更高。

2.测试人员不需要知道实现的细节(特定的编程语言)

3.测试人员和程序员是相互独立的?

站在用户的角度,很容易理解和接受测试。

5.有助于暴露规范中不一致或含糊之处的问题?

6.测试用例可以在规范完成后立即进行。

黑盒测试的缺点:?

1.只测试了一小部分输入,所以几乎不可能测试所有可能的输入。

2.没有清晰简洁的规格说明,很难设计测试用例。

3.如果测试人员没有被告知开发人员已经执行的用例,测试数据中就会有不必要的重复。

4.许多程序路径尚未经过测试。

5.不能直接测试具体的程序段,可能会比较复杂,可能会隐藏更多的问题。

6.大多数与研究相关的测试都是针对白盒测试的。

参考资料:

百度百科-黑盒测试白盒测试