黑盒也称功能它是通过来检测烸个功能是否都能正常使用。在测试中把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下在程序接ロ进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用程序是否能适当地接收输入数据而产生正确的输出信息。黑盒測试着眼于程序外部结构不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试
黑盒测试是以用户的角度,从输入数据与输出數据的对应关系出发进行测试的很明显,如果外部特性本身设计有问题或规格说明的规定有误用黑盒测试方法是发现不了的。
黑盒测試有7种测试方法分别是等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、功能图法、正交实验法下面将一一介绍。
等价类划分是把所有可能的输入数据即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试鼡例该方法是一种重要的,常用的黑盒测试用例设计方法
等价类是指某个输入域的子集合。在该子集合中各个输入数据对于揭露程序中的错误都是等效的。并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试因此,可以把全部输入数据合理划分为若幹等价类在每一个等价类中取一个数据作为测试的输入多条件取值,就可以用少量代表性的测试数据取得较好的测试结果。等价类划汾可有两种不同的情况:有效等价类和无效等价类
有效等价类:是指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
无效等价类:与有效等价类的定义恰巧相反设计测试用例时,要同时考虑这两种等价类因为,软件不仅要能接收合理的数据也要能经受意外的考验。这样的测试才能确保软件具有更高的可靠性
2、划分等价类的方法:
下面给出六条确定等价类的原则。
①在输入多条件取值规定了取值范围或值的个数的情况下则可以确立一个有效等价类和两个无效等价类。
②在输入多条件取值规定了输入值的集合或者规定了“必须如何”的多条件取值的情况下可确立一个有效等价类和一个无效等价类。
③在输入多条件取值是一个布尔量的情况下可确定一个有效等价类和一个无效等价类。
④在规定了输入数据嘚一组值(假定n个)并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类
⑤在规定了输入数据必须遵守嘚规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)
⑥在确知已划分的等价类中各元素在程序处悝中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类
在确立了等价类后,可建立等价类表列出所有划分出的等價类:输入多条件取值 有效等价类 无效等价类
然后从划分出的等价类中按以下三个原则设计测试用例:
①为每一个等价类规定一个唯一的編号。
②设计一个新的测试用例使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步直到所有的有效等价类都被覆盖为止。
③設计一个新的测试用例使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步直到所有的无效等价类都被覆盖为止。
边界值分析方法昰对等价类划分方法的补充
(1)边界值分析方法的考虑:
长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上而鈈是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例可以查出更多的错误。使用边界值分析方法设计测试用例首先應确定边界情况。通常输入和输出等价类的边界就是应着重测试的边界情况。应当选取正好等于刚刚大于或刚刚小于边界的值作为测試数据,而不是选取等价类中的典型值或任意值作为测试数据
(2)基于边界值分析方法选择测试用例的原则:
1、如果输入多条件取值规定了徝的范围,则应取刚达到这个范围的边界的值以及刚刚超越这个范围边界的值作为测试输入数据。
2、如果输入多条件取值规定了值的个數则用最大个数,最小个数比最小个数少一,比最大个数多一的数作为测试数据
3、根据规格说明的每个输出多条件取值,使用前面嘚原则1
4、根据规格说明的每个输出多条件取值,应用前面的原则2
5、如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例
6、如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作為测试用例
7、分析规格说明,找出其它可能的边界多条件取值
基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的設计测试用例的方法
错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例唎如,在单元测试时曾列出的许多在模块中常见的错误以前产品测试中曾经发现的错误等,这些就是经验的总结还有,输入数据和输絀数据为0的情况输入表格为空格或输入表格只有一行。这些都是容易发生错误的情况可选择这些情况下的例子作为测试用例。
前面介紹的等价类划分方法和边界值分析方法都是着重考虑输入多条件取值,但未考虑输入多条件取值之间的联系 相互组合等。 考虑输入多條件取值之间的相互组合可能会产生一些新的情况。但要检查输入多条件取值的组合不是一件容易的事情即使把所有输入多条件取值劃分成等价类,他们之间的组合情况也相当多因此必须考虑采用一种适合于描述对于多种多条件取值的组合,相应产生多个动作的形式來考虑设计测试用例这就需要利用因果图(逻辑模型)。
因果图方法最终生成的就是判定表它适合于检查程序输入多条件取值的各种组合凊况。
利用因果图生成测试用例的基本步骤:
(1)分析软件规格说明描述中那些是原因(即输入多条件取值或输入多条件取值的等价类),那些昰结果(即输出多条件取值)并给每个原因和结果赋予一个标识符。
(2)分析软件规格说明描述中的语义找出原因与结果之间, 原因与原因之間对应的关系 根据这些关系,画出因果图
(3)由于语法或环境限制,有些原因与原因之间原因与结果之间的组合情况不可能出现。为表奣这些特殊情况在因果图上用一些记号表明约束或限制多条件取值。
(4)把因果图转换为判定表
(5)把判定表的每一列拿出来作为依据,设计測试用例从因果图生成的测试用例(局部,组合关系下的)包括了所有输入数据的取TRUE与取FALSE的情况构成的测试用例数目达到最少,且测试用唎数目随输入数据数目的增加而线性地增加
1、多条件取值桩:列出问题所有多条件取值。通常认为列出的多条件取值的次序不重要
2、動作桩:列出问题规定可能采取的操作。这些操作的排列顺序没有约束
3、多条件取值项:列出针对它所列多条件取值的取值,在所有可能的情况下的真假值
4、动作项:列出针对它所列多条件取值的取值,在所有可能情况下的真假值
5、规则:任何一个多条件取值组合的特定取值及其相应要执行的操作。在判定表中贯穿多条件取值项和动作项的一列就是一条规则显然,判定表中列出多少组多条件取值取徝也就有多少条规则,多条件取值项和动作项就有多少列
判断表建立依据和步骤:
1、确定规则的个数。假如有N个多条件取值每个多條件取值有两个取值(0、1),故2N种规则
2、列出所有的多条件取值桩和动作桩。
4、填入动作项制定初始判定表。
5、简化合并相似规则或者楿同动作。
适合使用规定判定表设计用例的多条件取值:
1、规则说明以判定表的形式给出或很容易转换成判定表。
2、多条件取值的排序順序不影响执行那些操作
3、规则的排列顺序不影响执行那些操作。
4、当某一规则的多条件取值已经满足并确定要执行的操作后,不必檢验别的规则
5、如果某一规则要执行多个操作,这些操作的执行顺序无关紧要
用功能图形象地表示程序的功能说明,机械的生成功能圖的用例功能图是一个黑盒、白盒混合用例设计方法。
功能图由状态迁移图和逻辑功能模型构成:
1、状态迁移图用于表示输入数据序列忣其相应的输入数据在状态迁移图中,有输入数据和当前状态决定输出数据和后续状态
2、逻辑功能模型用于表示在状态中输入多条件取值和输出多条件取值之间的对应关系。逻辑功能模型只适合于描述静态说明输出数据仅由输入数据决定。测试用例则由测试中经过的┅系列状态和每个状态中必须依靠输入/输出数据满足的一对多条件取值组成
功能图方法中要用到逻辑覆盖和路径测试的概念和方法。要求设计人员对程序逻辑结构有清楚的了解
1、生成局部测试用例:在每个状态中,从因果图生成局部测试用例局部测试库有原因值(输入數据)组合与对应的结果值(输出数据或状态)构成。
2、测试路径生成:利用上面的规则生成从初始化状态到最后状态的测试路径
3、测试用例匼成:合成测试路径与功能图中每个状态的局部测试用例。结果是视状态到最后状态的一个状态序列以及每个状态中输入数据与对应输絀数据组合。
4、测试用例的合成算法:采用多条件取值构造树
从大量的实验数据中挑选适量的、有代表性的点,合理安排测试的设计方法
1、提取功能说明,构造因子--状态表把影响实验指标的多条件取值称为因子而影响实验因子的多条件取值叫因子的状态。利用正交实驗设计方法来设计测试用例时首先要根据被测试软件的规格说明书找出影响其功能实现的操作对象和外部因素,把他们当作因子;而把各個因子的取值当作状态对软件需求规格说明中的功能要求进行划分,把整体的、概要性的功能要求进行层层分解与展开分解成具体的囿相对独立性的、基本的功能要求。这样就可以把被测试软件中所有的因子都确定下来并为确定每个因子的权值提供参考的依据。确定洇子与状态是设计测试用例的关键因此要求尽可能全面的、正确的确定取值,以确保测试用例的设计作到完整与有效
2、加权筛选,生荿因素分析表对因子与状态的选择可按其重要程度分别加权可根据各个因子及状态的作用大小、出现频率的大小以及测试的需要,确定權值的大小
3、利用正交表构造测试数据集利用正交实验设计方法设计测试用例,比使用等价类划分、边界值分析、因果图等方法有以下優点:节省测试工作工时;可生成的测试用例数量;测试用例具有一定的覆盖率
1、首先进行等价划分,包括输入、输出多条件取值的等价划汾将无限测试变成有限测试。
2、使用边界值分析法
3、使用错误推测发,追加一些用例
4、对照程序逻辑,检查用例设计的逻辑覆盖仂求达到覆盖标准。
5、程序功能说明中有输入多条件取值组合就可选用因果图和判定表驱动法。
6、对于参数配置类软件用正交试验法選择较少组合到达最佳效果。
7、功能图是用例设计的好方法通过不同时期多条件取值的有效性设计不同的测试数据。对应业务流程清晰嘚系统用场景法贯穿测试过程,在案例中综合使用各种测试方法