从哲学观点看,分析问题和解决问题的方法有两种:白盒子方法和黑盒子方法。所谓白盒子方法就是能够看清楚事物的内部,即了解事物的内部结构和运行机制,通过剖析事
物的内部结构和运行机制,来处理问题。所谓黑盒子方法是没有办法或不去了解事物的内部结构和运行机制,而把整个事物看成一个整体——黑盒子,通过分析事物的输入、输出以及周边条件来分析和处理问题。
软件测试具有相类似的哲学思想。根据测试足针对系统的内部结构还是针对具体实现算法的角度来进行,分别称为白盒测试和黑盒测试。
1黑盒测试法(black-box testing)
黑盒测试,也称功能测试或数据驱动测试,如图2-5所示。它不管程序内部结构是什么样的,只是从用户出发,根据产品应该实现的实际功能和已经定义好的产品规格,来验证产品所应该具有的功能是否实现,每个功能是否都能正常使用,是否满足用户的要求。
在测试时,把程序看作一个不能扣开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试人员针对程序接El和用户界面进行测试,只检查程序功能足否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
黑盒测试主要用于发现以下情况:
· 是否有不正确或遗漏了的功能;
· 在接口上t能否正确地接受输入数据,能否产生正确的输出信息;
· 访问外部信息是否有错;
· 性能上是否满足要求;
· 界面是否错误,是否不美观;
· 初始化和终止错误。
黑盒测试方法主要用于软件确认测试。其其体方法有等价类划分、边界值分析、错误推测法、因果图等。
黑盒测试方法着眼于程序外部结构,不考虑内部逻辑结构,针对软件界面和软件功能进行测试。在用黑盒法测试时,必须在所有可能的输入条件和输出条件中确定测试数据。
黑盒测试中不可能做到穷举测试,因此局限于功能测试是远远不够的,还要结合白盒测试方法,进行逻辑和路径测试。
2白盒测试法(white—box testing)
白盒测试,也称结构测试或逻辑驱动测试,也就是己知产品的内部工作过程,清楚最终生成软件产品的计算机程序的结构和语句,按照程序内部的结构测试程序·测试程序内部的变量状态、逻辑结构、运行路径等,枪验程序中的每条通路是否都能按预定要求正确工作,检查程序内部动作或运行是否符合设计规格要求,所有内部成分是否按规定正常进行。主要用于软件验证。白盒测试的主要方法有逻辑覆盖、基本路径测试等。
白盒测试要求全面了解程序内部逻辑结构和处理过程,以检查处理过程的细节为基础,要求对程序的结构特性做到一定程度的覆盖,对所有逻辑路径进行测试,并检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。自盒测试法是穷举路径测试,但贯穿程序的独立路径数可能是一个天文数字,所以也不可能进行穷举测试。企图遍历所有的路径是很难做到的,即使每条路径都测试了,覆盖率达到100%,程序仍可能出错。
. 穷举路径测试绝不能查出程序违反了设计规范,即程序在实现一个不是用户需要的功能。
. 穷举路径测试不可能查出程序中因遗漏路径而出错。
. 穷举路径测试可能发现不了一些与数据相关的错误。
白盒法是“基于覆盖的测试”,应朝着提高覆盖率的方向努力,尽可能多地进行测试,找出那些被忽视的错误。一般来说,白盒测试的原则是:
· 保证每个模块中所有独立路径至少被使用一次。
. 对所有逻辑值均测试为真值(true)和假值(false)。
. 在EF边界及可操作范围内运行所有循环。
· 检查内部数据结构以确保其有效性。
综上所述,白盒测试用例的常见设计方法有逻辑覆盖、循环覆盖和基本路径测试。逻辑覆盖又可分为语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组台覆盖和路径覆盖。这世内容会在第5章、第14章详细介缁。