张玮
摘 要:白盒测试和黑盒测试都是软件测试设计的方法。黑盒测试把系统理解为一个“内部不可见的盒子”,因此不需要明白它的内部结构。黑盒测试一般关注的是对功能需求的测试。白盒测试设计允许你观察“盒子”内部,让你了解其内部结构和运作原理,并使用对这些知识的了解来指导测试用例的设计。为了完全测试一个软件,不可或缺任何一种测试。
关键词:软件测试;白盒测试;黑盒测试
软件测试是使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。软件测试通常是在软件投入生产性运行之前进行的,它是对软件需求分析、设计规格说明和编码的最终复审,是软件质量控制的关键。在软件测试中有两大基本测试方法:白盒测试和黑盒测试。在传统的软件测试活动中基本上都可以找到这两类方法。
1 白盒测试
1.1 什么是白盒测试
白盒测试又叫做玻璃盒测试、透明盒测试、开放盒测试等。在这里,盒子指的是需要被测试的软件,白盒,顾名思义即盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。因此,白盒测试需要对系统内部的结构和工作原理有一个清楚的了解;并且基于这个知识来设计你的用例。
使用白盒测试方法产生的测试用例能够:保证一个模块中的所有独立路径至少被使用一次;对所有逻辑值均需测试true和false;在上下边界及可操作范围内运行所有循环;检查内部数据结构以确保其有效性。
1.2 白盒测试技术
白盒测试技术一般可分为静态分析和动态分析两类技术。静态分析是一种不通过执行程序而进行测试的技术。静态分析的关键功能检查软件的表示和描述是否一致,没有冲突或者没有歧义。它瞄准的是纠正软件系统在描述、表示和规格上的错误。因此,是任何进一步测试执行的前提。静态分析技术不需要软件的执行,而动态分析从其本身来看则更像是一个“测试”,因为它包含了系统的执行。当软件系统在模拟的或真实的环境中执行之前、之中和之后,对软件系统行为的分析是动态分析的主要特点。动态分析包含了程序在受控的环境下使用特定的期望结果进行正式的运行。它显示了一个在检查状态下是正确还是不正确。
有人提出,“我们应该更注重于保证程序需求的实现,为什么要花费时间和精力来担心(和测试)逻辑细节?”答案在于软件自身的缺陷。当我们设计和实现主流之外的功能、条件或控制时,错误往往开始出现在我们工作中;程序的逻辑流有时是违反直觉的,这意味着我们关于控制流和数据流的一些无意识的假设可能导致设计错误,只有路径测试才能发现这些错误;当一个程序被翻译为程序设计语言源代码时,有可能产生某些笔误,很多将被语法检查机制发现。但是,其他的在测试开始后才会被发现。
2 黑盒测试
2.1 什么是黑盒测试
黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试是与白盒测试截然不同的测试概念,也是在软件测试中使用得最早、最广泛的一类测试。
黑盒测试注重于测试软件的功能需求,主要试图发现以下几类错误:功能不正确或遗漏;界面错误;输入和输出错误;数据库访问错误;性能错误;初始化和终止错误等。
2.2 黑盒测试技术
黑盒测试意味着测试数据的选择和测试结果的解释是以软件功能属性为基础的。黑盒测试不应当由程序作者来执行,因为他知道太多的程序内部知识。在新的测试方法中,由第三方来执行黑盒测试。
通常,黑盒测试技术一般可分为没有用户参与的黑盒测试和有用户介入的黑盒测试。尽管黑盒测试时围绕着用户需求文档进行的,但是黑盒测试不一定必须要用户来参与测试。在绝大多数没有用户参与的黑盒测试中,最常见的测试有:功能性测试、容量测试、安全性测试、负载测试、标杆测试、可靠性测试等。此外,还有两类测试必须要有用户参与的测试,外场测试和实验室测试。
3 白盒测试和黑盒测试的比较
既然我们已经做了白盒测试,为什么还要进行黑盒测试呢?因为白盒测试在测试的早期采用,而黑盒测试主要用于测试的后期。黑盒测试故意不考虑控制结构,而只注意信息域。黑盒测试并不是白盒测试的替代品,而是用于辅助白盒测试发现其他类型的错误的。白盒测试只考虑测试软件产品,它不保证完整的需求规格是否被满足。而黑盒测试只考虑测试需求规格,它不保证实现的所有部分是否被测试到。黑盒测试会发现遗漏的缺陷,指出规格的哪些部分没有被完成。而白盒测试会发现代理方面的缺陷,指出哪些实现部分是错误的。白盒测试比黑盒测试成本要高得多。它需要在测试可以被计划前产生源代码,并且在确定合适的数据和决定软件是否正确方面需要花费更多的工作量。
[参考文献]
[1]郑人杰.《软件测试》.人民邮电出版社,2011.
[2]库波.《软件测试技术》.中国水利水电出版社,2010.
[3]苟英.《软件测试技术基础》.中国水利水电出版社,2013.
[4]贺平.《软件测试教程》.电子工业出版社,2010.