⿊盒测试是把测试对象看做⼀个⿊盒⼦,利⽤⿊盒测试法进⾏动态测试时,需要测试软件产品已经实现的功能是否符合功能设计要求,不需测试软件产品的内部结构和处理过程。
⿊盒测试注重于测试软件的功能性需求,也即⿊盒测试使软件⼯程师派⽣出执⾏程序所有功能需求的输⼊条件。⿊盒测试并不是⽩盒测试的替代品,⽽是⽤于辅助⽩盒测试发现其他类型的错误。
⿊盒测试试图发现以下类型的错误:1. 功能错误或遗漏;2. 界⾯错误;
3. 数据结构或外部数据库访问错误;4. 性能错误;5. 初始化和终⽌错误。
⿊盒技术设计测试⽤例的⽅法有:1. 等价类划分⽅法2. 边界值分析⽅法3. 错误推测⽅法4. 因果图⽅法5. 判定表驱动分析⽅法6. 正交实验设计⽅法7. 功能图分析⽅法
1.等价类划分:
等价类划分法是把所有可能的输⼊数据,即程序的输⼊域划分成若⼲部分(⼦集),然后从每个部分中选取少数代表性数据作为测试⽤例;该⽅法是⼀种重要的,常⽤的⿊盒测试⽤例设计⽅法。1) 划分等价类:
等价类是指某个输⼊域的⼦集合。在该⼦集合中,各个输⼊数据对于揭露程序中的错误都是等效的。并合理地假定:测试某等价类的代表值就等于对这⼀类其它值的测试。因此,可以把全部输⼊数据合理划分为若⼲等价类,在每⼀个等价类中取⼀个数据作为测试的输⼊条件,就可以⽤少量代表性的测试数据。取得较好的测试结果。等价类划分可有两种不同的情况:有效等价类和⽆效等价类。
有效等价类:是指对于程序的规格说明来说是合理的,有意义的输⼊数据构成的集合。利⽤有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
⽆效等价类:与有效等价类的定义恰巧相反。
设计测试⽤例时,要同时考虑这两种等价类。因为,软件不仅要能接收合理的数据,也要能经受意外的考验。这样的测试才能确保软件具有更⾼的可靠性。
2)划分等价类的⽅法:
下⾯给出六条确定等价类的原则。
① 在输⼊条件规定了取值范围或值的个数的情况下,则可以确⽴⼀个有效等价类和两个⽆效等价类。例:输⼊值是学⽣成绩,范围是0~100:
② 在输⼊条件规定了输⼊值的集合或者规定了“必须如何”的条件的情况下,可确⽴⼀个有效等价类和⼀个⽆效等价类。
③ 在输⼊条件是⼀个布尔量的情况下,可确定⼀个有效等价类和⼀个⽆效等价类; 布尔量是⼀个⼆值枚举类型, ⼀个布尔量具有两种状态: true 和 false 。
④ 在规定了输⼊数据的⼀组值(假定n个),并且程序要对每⼀个输⼊值分别处理的情况下,可确⽴n个有效等价类和⼀个⽆效等价类。⑤ 在规定了输⼊数据必须遵守的规则的情况下,可确⽴⼀个有效等价类(符合规则)和若⼲个⽆效等价类(从不同⾓度违反规则)。⑥ 在确知已划分的等价类中各元素在程序处理中的⽅式不同的情况下,则应再将该等价类进⼀步的划分为更⼩的等价类。
3)设计测试⽤例(将等价类转化成测试⽤例):
在确⽴了等价类后,可建⽴等价类表,列出所有划分出的等价类:[输⼊条件] [有效等价类] [⽆效等价类]
然后从划分出的等价类中按以下三个原则设计测试⽤例:① 为每⼀个等价类规定⼀个唯⼀的编号。
② 设计⼀个新的测试⽤例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这⼀步。直到所有的有效等价类都被覆盖为⽌。③ 设计⼀个新的测试⽤例,使其仅覆盖⼀个尚未被覆盖的⽆效等价类,重复这⼀步。直到所有的⽆效等价类都被覆盖为⽌。
2.边界值分析法
(1)边界值分析⽅法的考虑:
长期的测试⼯作经验告诉我们,⼤量的错误是发⽣在输⼊或输出范围的边界上,⽽不是发⽣在输⼊输出范围的内部。因此针对各种边界情况设计测试⽤例,可以查出更多的错误。
使⽤边界值分析⽅法设计测试⽤例,⾸先应确定边界情况。通常输⼊和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚⼤于或刚刚⼩于边界的值作为测试数据,⽽不是选取等价类中的典型值或任意值作为测试数据。(2)基于边界值分析⽅法选择测试⽤例的原则:
1)如果输⼊条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输⼊数据。2)如果输⼊条件规定了值的个数,则⽤最⼤个数,最⼩个数,⽐最⼩个数少⼀,⽐最⼤个数多⼀的数作为测试数据。3)根据规格说明的每个输出条件,使⽤前⾯的原则1)。4)根据规格说明的每个输出条件,应⽤前⾯的原则2)。
5)如果程序的规格说明给出的输⼊域或输出域是有序集合,则应选取集合的第⼀个元素和最后⼀个元素作为测试⽤例。6)如果程序中使⽤了⼀个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试⽤例。7)分析规格说明,找出其它可能的边界条件。
3.错误推测法
错误推测法: 基于经验和直觉推测程序中所有可能存在的各种错误, 从⽽有针对性的设计测试⽤例的⽅法。错误推测⽅法的基本思想:
列举出程序中所有可能有的错误和容易发⽣错误的特殊情况,根据他们选择测试⽤例。例如, 在单元测试时曾列出的许多在模块中常见的错误。 以前产品测试中曾经发现的错误等, 这些就是经验的总结。 还有, 输⼊数据和输出数据为0的情况。 输⼊表格为空格或输⼊表格只有⼀⾏。 这些都是容易发⽣错误的情况。 可选择这些情况下的例⼦作为测试⽤例。
4.因果图⽅法
前⾯介绍的等价类划分⽅法和边界值分析⽅法,都是着重考虑输⼊条件,但未考虑输⼊条件之间的联系, 相互组合等。考虑输⼊条件之间的相互组合,可能会产⽣⼀些新的情况。 但要检查输⼊条件的组合不是⼀件容易的事情, 即使把所有输⼊条件划分成等价类,他们之间的组合情况也相当多。因此必须考虑采⽤⼀种适合于描述对于多种条件的组合,相应产⽣多个动作的形式来考虑设计测试⽤例。 这就需要利⽤因果图(逻辑模型)。
因果图⽅法最终⽣成的就是判定表。 它适合于检查程序输⼊条件的各种组合情况。
1) 利⽤因果图⽣成测试⽤例的基本步骤:
(1) 分析软件规格说明描述中, 那些是原因(即输⼊条件或输⼊条件的等价类),那些是结果(即输出条件),并给每个原因和结果赋予⼀个标识符。
(2) 分析软件规格说明描述中的语义。找出原因与结果之间,原因与原因之间对应的关系。 根据这些关系,画出因果图。
(3) 由于语法或环境, 有些原因与原因之间,原因与结果之间的组合情况不不可能出现。为表明这些特殊情况, 在因果图上⽤⼀些
记号表明约束或条件。
(4) 把因果图转换为判定表。
(5) 把判定表的每⼀列拿出来作为依据,设计测试⽤例。
从因果图⽣成的测试⽤例(局部,组合关系下的)包括了所有输⼊数据的取TRUE与取FALSE的情况,构成的测试⽤例数⽬达到最少,且测试⽤例数⽬随输⼊数据数⽬的增加⽽线性地增加。
前⾯因果图⽅法中已经⽤到了判定表。判定表(DECisionTable)是分析和表达多逻辑条件下执⾏不同操作的情况下的⼯具。在程序设计发展的初期,判定表就已被当作编写程序的辅助⼯具了。由于它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体⼜明确。
2) 因果图标识
原因和结果之间的关系有:
①恒等:若C1是1,则E1也是1;否则E1为0。 ②⾮:若C1是1,则E1是0;否则E1是1。 ③或:若c1或c2是1,则E1是1;否则E1为0。 ④与:若c1和c2都是1,则E1为1;否则E1为0。
3)因果图约束 约束条件符号:
A.输⼊条件的约束有以下4类:
① E约束(互斥/异):a和b中⾄多有⼀个可能为1,即a和b不能同时为1。 ② I约束(或):a、b和c中⾄少有⼀个必须是1,即 a、b 和c不能同时为0。 ③ O约束(唯⼀);a和b必须有⼀个,且仅有1个为1。
B.输出条件约束类型
输出条件的约束只有M约束(屏蔽/强制):若结果a是1,则结果b强制为0。
5.判定表驱动分析⽅法
判定表通常由四个部分组成。
条件桩(ConDItion STub):列出了问题得所有条件。通常认为列出得条件的次序⽆关紧要。动作桩(Action Stub):列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。条件项(Condition Entry):列出针对它左列条件的取值。在所有可能情况下的真假值。动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。
规则:任何⼀个条件组合的特定取值及其相应要执⾏的操作。在判定表中贯穿条件项和动作项的⼀列就是⼀条规则。显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列。
判定表的建⽴步骤:(根据软件规格说明)
① 确定规则的个数。假如有n个条件。每个条件有两个取值(0,1),故有种规则。② 列出所有的条件桩和动作桩。③ 填⼊条件项。
④ 填⼊动作项。等到初始判定表。
⑤ 简化、合并相似规则(相同动作)。
B.Beizer 指出了适合使⽤判定表设计测试⽤例的条件:① 规格说明以判定表形式给出,或很容易转换成判定表。② 条件的排列顺序不会也不影响执⾏哪些操作。③ 规则的排列顺序不会也不影响执⾏哪些操作。
④ 每当某⼀规则的条件已经满⾜,并确定要执⾏的操作后,不必检验别的规则。⑤ 如果某⼀规则得到满⾜要执⾏多个操作,这些操作的执⾏顺序⽆关紧要。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo0.com 版权所有 湘ICP备2023021991号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务