技术干货 > 文章详情

黑盒测试和白盒测试的优劣势分析

叶丹7个月前 软件测试

    软件测试是为了发现程序中的错误而执行程序的过程,常用黑盒功能测试法和白盒结构测试法进行测试,那黑盒功能测试法和白盒结构测试法到底是什么样的测试方法?它们有哪些优劣势呢?

黑盒测试和白盒测试 - 麦子学院

黑盒功能测试法

    所谓黑盒功能测试法,就是把要测试的软件看成一个“黑盒子”, 不管其内部结构如何以及用什么算法实现需求提供的功能,而是按照需求的功能化要求,设计相应的测试用例(包括测试的输入数据与条件设置和所预期的软件运行输出结果),通过软件运行后所给出的输出(包括字符形式的输出与图象输出)与所预期的结果进行人工或者自动化比较,来验证被测试软件是否能给出正确的结果, 从而判断该软件是否满足需求。

 

优点:

(1)  能最直观、最直接地反映出所设计的软件是否满足需求;

(2)  即使没有任何测试工具支援,也能靠人工测试的方法完成;

 

缺点:

(1)  难以找出某些特殊类型的错误。例如: 当对应于某组输入该被测软件并不提供任何输出信息时,可能只是改变了某种工作状态,如果其中的源代码处理部分有错误,就比较难找出来;

(2)  无法确定哪些测试用例有效或者无效 (所谓无效, 并不是说单独使用某个测试用例时不能收到任何测试效果,而是在于它和前面已经使用过的测试用例一起使用时,毫无贡献, 只是重复了前面的测试用例已经完成的测试);

(3)  具有无可避免的盲目性。当软件被修改后, 由于不知道哪些测试用例能测试到被直接修改过的模块或者受修改过的模块影响的模块, 于是只好将所有测试用例再从头运行一遍,而且是动态运行,非常费时费力。

 

白盒结构测试法

    与黑盒子功能测试方法相反,白盒结构测试法不管所被测试的软件是否满足需求,是否实现了所设计的功能,而只注重该软件内部的结构, 以便设计足够多的测试用例,使得百分百或者尽可能多的程序组成要素能被测试到最少一次, 从而尽可能地将其中的软件错误暴露出来。

 

优点:

(1)  能够找出许多用功能测试方法找不出来的软件错误;

(B)  可以在整个软件系统还未完成之前就分别对各个单元进行测试;

(C)  可以通过测试用例的有效性分析而实现测试用例的最小化,以便大大地缩短软件修改后的回复测试时间和费用;

(D)  可以同时进行内存泄漏分析;

(E)   可以同时进行分支执行频度分析;

(F)   可以同时进行软件复杂度分析;

(G)  可以同时进行数据和变量分析;

(H)  可以同时进行性能分析;

(I)    可以同时进行动态运行错误定位与执行路径追溯等。

 

缺点:

(1)必须通过专门的测试工具来进行,需要在用户的软件的拷贝上进行插桩(插入纪录点)记录各分支/条件是否被执行过或者执行过多少次的信息;

(2)会使被测试的软件的运行速度减慢;

(3)需要增加被测试软件运行时的资源开销等。

 

     以上就是黑盒测试和白盒测试的一些优缺点,当然软件测试中常用的技术远不止这两种,还有自动化测试、性能测试等等,其他的测试我们将在后面的文章中继续与大家分享。

 

推荐学习:《自动化测试实战

 

19

登录 后参与讨论

没有更多评论了

有一位课程导师想与你聊聊

免费电话咨询