测试用例
始黑盒测试方法之前,我们先了解测试用例的相关知识点。
测试用例的定义
测试用例是为某个特殊目标而编制的一组测试输入,执行条件,以及预期结果。
测试用例在软件测试中的作用
- 指导测试的实施 在实施测试时测试用例将作为测试的标准,测试人员一定要按照测试用例并严格按用例项目和测试步骤逐一实施测试。
- 规划测试数据的准备 通常情况下,测试数据是与测试用例分开的,测试人员需要按照测试用例配套准备一组或若干组原始数据。
- 编写测试脚本的“设计规格说明书” 在自动化测试中,测试用例就是测试脚本的规格说明书。
- 评估测试结果的量度基准
- 分析缺陷的标准 通过收集缺陷,对比测试用例和缺陷数据库,分析新缺陷是漏测还是缺陷复现。
设计测试用例的步骤
- 测试需求分析 从软件的需求文档中,找出待测试软件或模块的需求,通过自己的分析和理解,将其整理成为测试需求,已清楚测试对象具有哪些功能。
- 业务流程分析 业务流程图可以帮助理解软件的处理逻辑和数据流向,从而指导测试用例的设计工作。
- 测试用例设计
- 测试用例评审 为了确认测试过程和方法是否正确,是否有遗漏的测试点,需要进行测试用例的评审。参加测试用例评审的人员有:测试用例的设计者,测试负责人,项目经理等。
- 测试用例更新完善 根据软件产品新增功能或更新需求后,测试用例也要进行相应的修改更新。
设计测试用例的基本准则
- 测试用例的代表性
能够代表并覆盖各种合理的和不合理的、合法的和非法的、边界的和越界的以及极限的输入数据、操作和环境设置等。
- 测试结果的可判定性
即测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果。
- 测试结果的可再现性
即对同样的测试用例,系统多次执行的结果应当是相同的。
测试用例是执行测试的最小实体。
黑盒测试方法
等价类划分法
基本思想
把程序的输入域划分成若干个子集,然后从每个子集中选取少量具有代表性的数据作为测试用例。
等价类的划分
- 有效等价类
- 指对程序的规格说明来说,是由合理的,有意义的输入数据构成的集合
- 作用 :检验程序是否实现了规格说明书中所规定的功能和性能。
- 无效等价类
- 对规格说明而言,无意义的、不合理的输入数据所组成的集合
- 作用 :检验程序对错误输入的处理能力。
根据是否对无效数据进行测试,可将等价类测试分为两种:标准等价类测试(不测试无效数据)和健壮等价类测试(测试无效数据)。
- 标准等价类测试 : 测试用例的数量和最大有效等价类中元素的数目相等。
- 健壮等价类测试:对有效输入,测试用例从每个有效等价类中取一个值;对无效输入,一个测试用例有一个无效值,其他值均取有效值。
在健壮等价类测试中,根据是否采用单故障假设分为:强健壮等价类测试(没有单故障假设)和弱健壮等价类测试(采取单故障假设)
单故障假设是什么呢?
有两个或两个以上故障同时出现而导致软件失效的情况很少。因此我们可以假设:软件缺陷都是因为一个因素引起的。我们在设计多输入无效输入的测试用例时,仅让一个输入为无效值即可。
划分等价类的方法
设计测试用例的步骤
- 划分等价类
- 建立等价类表
- 设计测试用例
注: 在设计测试用例时,新的测试用例,尽可能多的覆盖尚未被覆盖的有效等价类;新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类。
边界值分析法
针对大量软件故障往往发生在输入定义域或输出值域的边界上的情况,我们使用边界值分析法。边界值分析法是对等价类法的补充。且边界值分析法有较好的测试回报率。
在任何情况下都必须采用边界值分析法,这种方法设计出的测试用例发现程序错误的能力最强。
边界值分析关注的点:比最小值稍小(min-),最小值(min),比最小值稍大(min+),典型正常值(nom),比最大值稍小(max-),最大值(max),比最大值稍大(max+)。 下面结合例子来看
例:有二元函数f(x,y),其中x∈[1,10],y∈[1,20]。则采用边界值分析法设计的测试用例
{ <1,10>, <2,10>, ><9,10>, <10,10>, <5,10>, <5,1>, <5,2>, <5,19>, <6,20>, }这里给出的弱标准性测试的测试用例。弱健壮性测试用例中需要考虑无效等价类,即需要加入<0,10>,<11,10>,<5,0>和<5,21>这四个测试用例。
因果图法
等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。因此有了因果图法。
因果图的定义
因果图是一种描述输入和输出之间关系的图,图中的基本符号主要有:节点和弧线。节点表示原因或结果的状态
- 因果图中原因和结果之间的关系
恒等 :若c1是1,则e1也为1,否则e1为0;
非 :若c1是1,则e1为0,否则e1为1;用符号“~”表示
或:若c1或c2或c3是1,则e1是1,否则e1为0,“或”可有任意个输入;用符号“V”表示
与:若c1和c2都是1,则e1为1,否则e1为0,“与”也可有任意个输入。用符号“∧”表示
- 输入状态之间的关系
E约束(异):a和b中最多有一个可能为1,即a和b不能同时为1;
I约束(或):a、b、c中至少有一个必须是1,即a、b、c不能同时为0;
O约束(唯一): a和b必须有一个且仅有一个为1;
R约束(要求):a是1时,b必须是1;
因果图的基本步骤
-
分析程序规格说明书描述的语义内容,找出“原因”和“结果”,将其表示成连接各个原因与各个结果的“因果图”。
-
由于语法或环境限制,有些原因与原因之间或与结果之间的组合情况不能出现,用记号标明约束或限制条件。
-
将因果图转换成判定表。
-
根据判定表中每一列设计测试用例。
注:判定表中的每一列对应一条测试用例,可以忽略不可能的情况。
决策表法
决策表法是最为严格,最具逻辑性的测试方法。
决策表的组成
- 条件桩 :列出问题的所有条件
- 条件项 :针对条件桩给出的条件列出所有可能的取值
- 动作桩 :列出问题规定的可能采取的操作
- 动作项 :指出在条件项的各组取值情况下应采取的动作
- 规则 :贯穿条件项和动作项的一列就是一条规则
构造决策表的步骤
- 列出所有的条件桩和动作桩
- 确定规则的个数
- 填入条件项
- 填入动作项,得到初始决策表
- 简化决策表,合并相似规则
决策表的化简
若表中有两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并。如下图所示:
合并后的条件项用符号“-”表示,说明执行的动作与该条件的取值无关,称为无关条件。
场景法
现在的软件几乎都是用事件触发来控制流程的,象GUI软件、游戏等。事件触发时的情景并形成了场景,而同一事件不同的触发顺序和处理结果就形成了事件流。这种在软件设计方面的思想可以引入到软件测试中,可以生动地 描绘出事件触发时的情景,有利于设计测试用例,同时使测试用例更容易理解和执行。
基本流 :在测试一个软件的时候,在场景法中,测试流程是软件功能按照正确的事件流实现的一条正确流程
备选流 :出现故障或缺陷的过程时,可选择的其他路线。
场景法的基本设计步骤
- 根据说明,描述出程序的基本流及各项备选流
- 根据基本流和各项备选流生成不同的场景
- 对每一个场景生成相应的测试用例
- 对生成的所有测试用例重新复审,去掉多余的测试用例,测试用例确定后,对每一个测试用例确定测试数据值
正交实验法
正交实验设计是研究多因素多水平的一种设计方法。在强标准等价类测试和强健壮等价类测试中,需要的测试用例过多,我们可以采用正交实验法,挑出部分有代表性的点进行实验。这些点具有均匀分散,整齐可比的特点。
正交表可以在网上查找到的,我们只需根据自己的测试对象套用正交表即可。常用正交表查询:http://support.sas.com/techsup/technote/ts723_Designs.txt。
正交表的性质
- 在每一列中,不同的数字出现的数字相等
- 任意两列中数字的排列方式齐全而且均衡
如下图的正交表表示:它需要做4次实验,最多可观察3个因素,每个因素均为2水平。记为:L4(23 )
接下来看什么是因素?水平?
因素 :在一项试验中,凡欲考察的变量称为因素(变量)。
水平:在试验范围内,因素被考察的值称为水平(变量的取值)。
正交实验法测试用例设计基本步骤
- 确定因素与水平,既有哪些变量,每个变量的取值有哪些
- 选择一个合适的正交表
- 把变量的值映射到表中
- 把每一行的各因素水平的组合作为一个测试用例
- 补充认为重要但没有在表中出现的组合