Java白盒测试

时间:2013-02-22 19:55:20

标签: java testing white-box

如何在Java应用程序上进行白盒测试? 这是否意味着我必须逐班测试?

从我的研究中我知道:

  

白盒测试是一种内部的软件测试方法   已知测试项目的结构/设计/实施   测试员。测试人员选择输入来练习路径   代码并确定适当的输出。编程知识和   实施知识至关重要。白盒测试是   测试超出用户界面并进入a的细节   系统

白盒测试应该是什么样的?

2 个答案:

答案 0 :(得分:8)

摘要: 现代白盒测试使用复杂的自动化工具来帮助开发人员设计出良好的测试并以有意义的方式衡量代码覆盖率。广泛使用(如果是基本的)示例包括CoberturaEMMAEclEmma and JaCoCo

  

如何在java应用程序上进行白盒测试?

传统上,黑盒测试意味着另一个团队(不是开发人员)负责测试软件,他们在这样做时没有查看源代码。

即使转向单元测试,设计测试的常用方法是使用或多或少的黑盒输入域表征,,即只测试边界条件和几乎没有任意“正常”的输入值。

然而,很明显,这种方法可能无法运用该功能的某些分支。一个优秀的开发人员将打开代码并说“嘿,我需要添加一个输入来练习该分支。”

现代白盒测试通过自动化流程使这一想法更进一步,产生这样的输出,以显示方法的哪些部分尚未由JUnit(来自NetBeans插件TikiOne)执行):

The NetBeans plugin TikiOne using the JaCoCo library to reveal branches my tests fail to cover.

  

白盒测试应该是什么样的?

摘要中提到的代码覆盖率工具尝试自动执行确保您行使代码的每一行或每个分支的过程。当集成到Jenkins这样的持续集成环境中时,它使您的团队不仅可以持续关注您的测试是否正在通过,而且是否符合您的覆盖目标(来自NetBeans插件TikiOne ):

The NetBeans plugin TikiOne summarizing the poor quality of my test coverage for several classes.

在软件工程研究中,白盒测试可以比计算线条更加复杂。已经开发了各种各样的工具和数学技术来帮助您确保为测试提供的输入正确涵盖代码的所有可能行为。

例如,使用复杂布尔谓词的飞机自动驾驶系统的警告系统可能会使用植根于形式逻辑的白盒测试标准,以确保我们通过控制器覆盖所有逻辑上可能的路径

分析线和分支覆盖率(最常见的标准)是使用图表软件表示的特殊情况,例如control flow graphdata flow diagram。一个好的工具会读取你的代码来生成图形,然后你可以从各种graph coverage criteria中进行选择,通过方法的控制逻辑(分支)自动推荐一组路径,你需要练习这些路径来完成你的测试目标

线和分支是最简单和最常用的(控制)图形覆盖标准(对应于覆盖节点和边缘) - 在一些工具中可以使用更全面(并且难以满足)的度量,如边对和主路径。这些问题不只是“我在每个分支机构至少进行过一次选择”,而是“通过我能够到达那里的各种方式,我是否经历了每个分支。”

程序员仍然可以找到一组输入来实现这些路径,并设计足够小且足够简单的代码,以便通过更全面的标准获得良好覆盖所需的测试数量不会呈指数级增长。但是现在你有正式的,量化的方法来A)告诉你测试的需求,B)告诉你你对项目的测试情况。

  

这是否意味着我必须逐班测试?

白盒测试是设计测试的方法。它可以应用于所有测试级别,包括单元测试,集成测试和系统测试。


有关测试覆盖率标准的详细信息,请参阅

  • Beizer,Boris。 软件测试技术。 Dreamtech Press,2003。

或查看更新的

  • Ammann,Paul和Jeff Offutt。 软件测试简介。剑桥大学出版社,2008年。

答案 1 :(得分:3)

逐类测试通常称为单元测试。有几种流行的工具可以帮助您。从JUnit或TestNG开始。为提供某些功能的每个类或一组类(模块)实现测试。

然后你可以上去,即为更大的模块和整个应用程序编写测试。此类测试通常称为集成测试。