第二篇测试技术
第5章黑盒测试案例设计技术
1、测试用例
就是将软件测试的行为活动作一个科学化的组织归纳
2、等价类分析法
等价类:是指某个输入域的子集合。分为有效等价类、无效等价类
有效等价类:指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能
无效等价类:与有效等价类的定义相反。
划分等价类的6个原则:
1)、在规定了取值范围或值的个数时,可确立1个有效等价类和2个无效等价类
2)、在规定了输入值的集合或者规定了“必须如何”时,可确立1个有效等价类和1个个无效等价类
3)、在输入条件是一个布尔量时,可确定1个有效等价类和1个无效等价类
4)、在规定一组值(假定N个),并且程序要对每个值分别处理,可确立N个有效等价类和1个无效等价类
5)、在规定了输入数据必须遵守的规则时,可确立1个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)
6)、在确知已愺分的等价类中,各元素在程序处理中的方式不同时,应将该等价类进一步地划分为更小的等价类。
确定测试用例步骤:
1)为每个等价类规定一个唯一的编号
2)、设计一个新的测试用例,使期尽可能多地覆盖沿未覆盖的有效等价类。重复这一步,最一使所有有效等价类均被测试用例所覆盖。
3)、设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步使所有无效等价类均被覆盖。
3、边界值分析法
边界值分析:是一种补充等价划分的测试用例设计技术,它不是选择等价类的任意元素,而是选择等价类边界的测试用例。
边界值设计测试用例原则:
1)、如果输入条件规定了值范围,则应取刚达到这个范围的边界值,以及刚刚超越这个范围边界的值作为测试输入数据
2)、如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据
3)、根据规格说明的每个输出条件,使用前面的原则1)。
4)、根据规格说明的每个输出条件,使用前面的原则2)。
5)、如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
6)、如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上的值作为测试用例。
7)、分析规格说明,找出其他能的边界条件。
4、错误推测法
错误推测法:是基于经验和直觉推测程序中所有可能存在的各种错误,有针对性地设计测试用例的方法。
5、因果图法
因果图法:是从用自然语言书写的程序规格说明的描述中找出因(输入条件)和果(输出结果或程序状态的改变),通过因果图转换为判定表
因果图设计方法:
1)、分析程序规格说明的描述中的原因、结果是哪些,原因为输入条件,结果为输出条件。
2)、分析程序规格说明的描述中语议的内容,将其表示成连接各个原因与各个结果的“因果图”
3)、标明约束条件。
4)、把因果图转换成判定表
5)、为判定表中每一列表示的情况设计测试用例。
6、判定表驱动法
判定表:是分析和表达多逻辑条件下执行不同操作的情况的工具。
条件桩(Condition Stub):列出了问题得所有条件.通常认为列出得条件的次序无关紧要
动作桩(Action Stub):列出了问题规定可能采取的操作.这些操作的排列顺序没有约束
条件项(Condition Entry):列出针对它左列条件的取值.在所有可能情况下的真假值.
动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作.
7、正交试验法
正交试验法:是从大量的试验数据中挑选适量的、有代表性的点。从而合理地安排测试的一种科学的试验设计方法。
指标:通常把判断试验结果优劣的标准叫做试验的指标;
因子:所有影响试验指标的条件;
因子的状态:影响试验因子的,叫做因子的状态。
8、功能图法
一个程序的功能说明通常由动态说明和静态说明组成。动态说明描述了输入数据的次序号转移的次序。清太说明手描述了输入条件与输出条件之宰的对应关系。
功能图方法:是用功能图形象地表示程序的功能说明并机械地生成功能图的测试用例。
功能图模型:由状态迁移、逻辑功能模型组成。
9、场景法
用例场景用来描述流经用例的路径,从用例开始到结束扉这条路径上所有基本流和备选流。
下面是场景法的基本设计步骤
1)、根据说明,描述出程序的基本流及各项备选流
2)、根据基本流和各项备选流生成不同的场景
3)、对每一个场景生成相应的测试用例
4)、对生成的所有测试用例重新复审,去掉多余的测试用例,测试用例确定后,对每一个测试用例确定测试数据值
可以确定以下用例场景:
场景1基本流
场景2基本流备选流1
场景3基本流备选流1备选流2
场景4基本流备选流3
场景5基本流备选流3备选流1
场景6基本流备选流3备选流1备选流2
场景7基本流备选流4
场景8基本流备选流3备选流4
例:
有一个在线购物的实例,用户进入一个在线购物网站进行购物,选购物品后,进行在线购买,这时需要使用帐号登录,登录成功后,进行付钱交易,交易成功后,生成订购单,完成整个购物过程。
第一步我们来确定基本流和备选流:
基本流 | 登录在线购物网站,选择物品,登录帐号,付钱交易,生成订购单 |
备选流1 | 帐号不存在 |
备选流2 | 帐号或密码错误 |
备选流3 | 用户帐号余额不足 |
备选流4 | 用户帐号没有钱 |
备选流x | 用户退出系统 |
第二步我们根据基本流和备选流来确定场景:
场景1-成功购物 | 基本流 | |
场景2-帐号不存在 | 基本流 | 备选流1 |
场景3-帐号或密码错误 | 基本流 | 备选流2 |
场景4-用户帐号余额不足 | 基本流 | 备选流3 |
场景5-用户帐号没有钱 | 基本流 | 备选流4 |
第三步我们来设计用例
对于每一个场景都需要确定测试用例。可以采用矩阵或决策表来确定和管理测试用例。
下面显示了一种通用格式,其中各行代表各个测试用例,而各列则代表测试用例的信息。
本例中,对于每个测试用例,存在一个测试用例ID、条件(或说明)、测试用例中涉及的所有数据元素(作为输入或已经存在于数据库中)以及预期结果。
例如,在下面的矩阵中,V(有效)用于表明这个条件必须是VALID(有效的)才可执行基本流,而I(无效)用于表明这种条件下将激活所需备选流。下表中使用的“n/a”(不适用)表明这个条件不适用于测试用例。
测试用例ID | 场景/条件 | 帐号 | 密码 | 用户帐号余额 | 预期结果 |
1 | 场景1:成功购物 | V | V | V | 成功购物 |
2 | 场景2:帐号不存在 | I | n/a | n/a | 提示帐号不存在 |
3 | 场景3:帐号或密码错误(帐号正确,密码错误) | V | I | n/a | 提示帐号或密码错误,返回基本流步骤3 |
4 | 场景3:帐号或密码错误(帐号错误,密码正确) | V | I | n/a | 提示帐号或密码错误,返回基本流步骤3 |
5 | 场景4:用户帐号余额不足 | V | V | I | 提示帐号余额不足请充值 |
6 | 场景5:用户帐号没有钱 | V | V | I | 提示帐号余额请充值 |