带你轻松解密白盒测试(Demo详解)

Posted 程序员二黑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带你轻松解密白盒测试(Demo详解)相关的知识,希望对你有一定的参考价值。

白盒测试DEMO详解

对三类白盒测试技术概念有了宏观了解后,我们将通过一则案例详细演示白盒测试技术的实际应用,帮助你从微观细节中东西白盒测试三类覆盖率的差异。假设我们有如下伪代码片段:


对于语句覆盖率 —— 我们只需一个测试用例来检查代码中所有行。这意味着: 如果我们有测试用例“TestCase_01 (A=40和B=70)”,那么所有代码行都将被执行。

现在问题又来了:
仅仅这个测试用例真的够吗?如果我们将测试用例变为A=33和B=45呢?又会怎么样呢?


很显然因为“语句覆盖”只覆盖了“TRUE”的一面,所以对于上述伪代码片段,只有一个测试用例不足以测试它。作为一个合格的测试人员,我们必须考虑负面情况。为了获得最大的覆盖率,我们需要引入“分支覆盖”,评估“FALSE”条件。由此可见,通过“语句覆盖”我们发现了伪代码中的逻辑问题,从而需要考虑“分支覆盖”。在现实情况下,我们就可以得出这样的结论:对于被测代码片段,需要为条件失败时添加上适当的语句,于是便有了以下的修复结果(更新后的伪代码片段):


鉴于“语句覆盖”不足以测试整个伪代码,我们需要“分支覆盖”来确保最大的覆盖率。
对于“分支覆盖”,我们需要如下两个测试用例来完成这段伪代码的测试,从而确保每行代码都能被有效执行:

通过以上“语句覆盖” VS “条件覆盖”不难得出结论:
(1) 分支覆盖对比语句覆盖能够确保更多的覆盖范围;分支覆盖比语句覆盖更强大;
(2) 100% 分支覆盖率意味着 100%语句覆盖率;
(3) 但是 100%语句覆盖率并不能保证100% 分支覆盖率;
现在让我们转向“路径覆盖”,之前我们提到“路径覆盖”用于测试复杂的代码片段,这些代码片段基本上包含循环语句,亦或是循环和判断语句的组合。我们来看这样一段伪代码片段:

为了确保最大的覆盖率,我们需要4个测试用例。通过观察我们发现,代码片段中有两个分支语句, 对于每个分支判断语句,我们需要分别测试两个分支,一个是真,另一个是假。


因此,对于2个分支判断语句, 需要2个测试用例来测试“为真”的那一侧分支,2个测试用例来测试“为假”的一侧分支,由此可见共需4个测试用例。为了获得完整的覆盖,我们需要以下测试用例:

白盒测试工具

下面给出几款比较热门的白盒测试工具,感兴趣的话可根据实际需求自行研究使用:
[ Veracode ] :一款白盒测试工具,能以较低地成本快速、轻松识别和解决软件缺陷。它支持多种应用程序语言,如.net,c++,JAVA等;
[ EclEmma ] :最初是为Eclipse工作台中的测试运行和分析而设计的, 是一个免费的Java代码覆盖工具;
[ RCUNIT ] :一款免费的专门用于测试C程序的框架;
[ Cfix ] :C/C++单元测试框架之一,唯一目的是使测试套件的开发尽可能简单和容易;
[ GoogleTest ] :谷歌的一款C++测试框架。可以实现参数化测试、致命和非致命失败、死亡测试、XML测试报告生成等功能。支持Linux, Windows, Symbian, Mac OS X等平台;
[ Emma ] :一款易于使用的免费JAVA代码覆盖工具;
[ NUnit ] :一款易于使用的开源单元测试框架,它不需要任何人工干预来判断测试结果。支持所有.net语言,还支持数据驱动测试;
[ CppUnit ] :一个用C++编写的单元测试框架,被认为是JUnit的端口。CppUnit的测试输出可以是XML格式或文本格式,通过用自己的类创建单元测试,并在测试套件中运行测试;
[ JUnit ] :一个简单的单元测试框架,支持Java编程语言的测试自动化。主要支持测试驱动开发并提供测试覆盖率报告;
[ JsUnit ] :被认为是JUnit到javascript的端口,它是一个开源的单元测试框架,支持客户端Javascript;

7总结

文章基于白盒测试的覆盖率,常见白盒测试技术,测试范畴等结合案例为大家普及了一系列测试人员能力提升不得不知的白盒测试技能,文末给出了较受欢迎的白盒测试工具供大家参考。作为测试人员,乃至于测试开发人员,我们熟知仅仅依靠黑盒测试不足以达到最大的测试覆盖率,需要黑盒和白盒测试技术的有效结合来覆盖最大范围的缺陷。在软件研发过程中,如能合理有效地实施白盒测试,势必会对软件质量做出客观的贡献。于此同时对于测试人员而言,如果有机会参与到白盒测试中将会是一次受益匪浅的经历,因为这才是真正意义上的代码及深度测试,也是你技能能力得以体现的最佳场景。

学习资源分享

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

关注我下方公众号免费获取了

以上是关于带你轻松解密白盒测试(Demo详解)的主要内容,如果未能解决你的问题,请参考以下文章

软件测试都需要哪些工具呢?一文带你看清

软件测试都需要哪些工具呢?一文带你看清

07-白盒测试方法-逻辑覆盖法

详解ZStack Cloud 4.4.6:API Inspector带你轻松玩转ZStack Cloud API

『软件测试4』耗子尾汁!2021年了,你还不知道这4种白盒测试方法吗?

实践作业3:白盒测试----学习Junit框架DAY10.