测试基础 测试用例的设计方法

迟宝成 · 2022年05月06日 · 最后由 迟宝成 回复于 2022年05月09日 · 6886 次阅读

设计测试用例的分析方法

测试用例覆盖策略
系统测试时,要先关注主要功能和业务流程是否正确实现,这就需要场景法来完成测试。业务流程测试没有问题,我们再去关注条件的等价类、边界值等细节测试。(先整体后细节)
1.使用场景分析法,梳理出所有功能场景和业务场景(功能场景的组合)
2.使用判定表分析法,根据每个功能场景输入输出条件进行覆盖 (每种条件组合用等价类边界值分析法继续发散覆盖)设计用例
3.使用功能图分析法,根据状态迁移图(控制流程图)设计状态迁移用例;根据逻辑模型使用判定表分析法(每种条件组合用等价类边界值分析法继续发散覆盖)进行设计局部用例;迁移用例和局部用例结合覆盖所有路径
4.使用错误推测法,基于经验和直觉,针对程序可能发生错误设计用例

  1. 场景分析法
    1.1 定义
    测试人员把自己当成最终用户,尽可能真实的模拟用户在使用此软件的操作情形
    1.2 使用场景
    业务比较复杂的软件系统都适合使用场景法,场景法是基于软件业务的测试方法
    1.3 注意点
    重点模拟两类操作,用户正确操作的业务过程—验证软件的业务功能是否正确实现;
    模拟用户错误操作的情形—验证软件的异常处理能力(健壮性)
    1.4 使用方法
    基本流(有效流、正确流):模拟用户正确的业务操作流程就是基本流
    备选流(无效流、错误流):模拟用户错误的操作流程就是备选流
    1.5 举个例子
    生成 D0 打款单,D0 重打款,实时清算,实时分账

  2. 等价类分析法
    2.1 定义
    是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。
    2.1.1 等价类:
    是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。等价类划分可有两种不同的情况:有效等价类和无效等价类。
    2.1.2 有效等价类
    是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
    2.1.3 无效等价类
    与有效等价类的定义恰巧相反。无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。
     设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性
    2.2 使用场景
    该方法是一种重要的,基本都会用到的用例设计方法
    2.3 注意点
    划分等价类的标准:
    完备测试避免冗余;
    集合划分,子集互不相交,子集的合集是整个集合
    同一类中选择一个测试用例,同一等价类中处理相同映射到相同的处理路径
    2.4 使用方法
    2.4.1 根据输入条件和输出条件进行等价类的划分
    1) 列出所有输入条件,根据每个输入条件写出有效等价类和无效等价类
    2) 列出所有输出条件,根据每个输出条件写出有效等价类和无效等价类
    2.4.2 确立等价类之后,可建立等价类表。丛划分出的等价类中按照以下三个原则设计测试用例
    为每一个等价类规定一个唯一编号
    设计一个测试用例,使其尽可能覆盖所有等价类,重复这一步直至覆盖所有等价类
    设计一个测试用例,是其仅覆盖一个尚未被覆盖的无效等价类,重复这一步直至覆盖所有无效等价类

2.5 举个例子

3.边界值分析法
3.1 定义
边界值分析法就是对输入或输出的边界值进行测试。
3.2 使用场景
通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界
3.3 注意点
方法:使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据
4.判定表
4.1 定义
判定表将复杂问题按照各种可能的情况列举出来,简明避免有遗漏
组成:

条件桩:列出所有问题的所有条件
动作桩:列出问题规定可能才去的动作
条件项:列出针对它左列条件的取值,所有情况下都有真假值
动作项:列出条件项的各种取值情况下应该采取的动作
4.2 使用场景
当输入条件较多并且符合以下要求
1) 输入条件的排列顺序无关紧要
2) 输出结果的排列顺序无关紧要
3) 先测哪种组合后测哪种组合无关紧要
4) 每种组合是独立的
4.3 注意点
判定表中可能会存在重复的规则需要进行化简
规则:任何一个条件组合的特定取值及其相应的要执行的操作称为规则,每一列都是一条规则
化简:规则合并有多条规则具有相同的动作,并且条件项存在极其相似的关系
优点:它能把复杂的问题按各种可能的情况一一列举出来,简明而易于理解,也可避免遗漏。
缺点:不能表达重复执行的动作,例如循环结构。

4.4 举个例子

化简

5.因果图
5.1 定义
利用图解法分析输入的各种组合情况,从而设计测试用例的方法
5.2 使用场景
适合于检查程序输入条件的各种情况,与判定表相同
等价类分析方法着重考虑输入条件,但没有考虑输入条件的各种组合,输入条件之间的制约关系,多个输入条件组合起来可能出错的情况却被忽视了
5.3 注意点
我们要利用因果图(逻辑模型)把各种条件组合表示出来

1) 因果图中使用了简单的逻辑符号,以直线联接左右结点。左结点表示输入状态(或称原因),右结点表示输出状态(或称结果)。
2) Ci 表示原因,通常置于图的左部;ei 表示结果,通常在图的右部。Ci 和 ei 均可取值 0 或 1,0 表示某状态不出现,1 表示某状态出现
3) 关系
①恒等:若 ci 是 1,则 ei 也是 1;否则 ei 为 0。
②非:若 ci 是 1,则 ei 是 0;否则 ei 是 1。
③或:若 c1 或 c2 或 c3 是 1,则 ei 是 1;否则 ei 为 0。“或” 可有任意个输入。
④与:若 c1 和 c2 都是 1,则 ei 为 1;否则 ei 为 0。“与” 也可有任意个输入。
4)  约束
输入状态相互之间还可能存在某些依赖关系,称为约束。例如, 某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。在因果图中,用特定的符号标明这些约束。

A.输入条件的约束有以下 4 类:
① E 约束(异):a 和 b 中至多有一个可能为 1,即 a 和 b 不能同时为 1。
② I 约束(或):a、b 和 c 中至少有一个必须是 1,即 a、b 和 c 不能同时为 0。
③ O 约束(唯一);a 和 b 必须有一个,且仅有 1 个为 1。
④R 约束(要求):a 是 1 时,b 必须是 1,即不可能 a 是 1 时 b 是 0。
B.输出条件约束类型
输出条件的约束只有 M 约束(强制):若结果 a 是 1,则结果 b 强制为 0。
5.4 使用方法
1) 根据需求文档, 分析出是原因和结果, 并给每个原因和结果赋予一个标识符。
2) 找出原因与结果之间, 原因与原因之间对应的关系,画出因果图。
3) 由于语法或环境限制, 有些原因与原因之间,原因与结果之间的组合情况不可能出现,为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件。
4) 把因果图转换为判定表。
5) 把判定表的每一列拿出来作为依据,设计测试用例
5.5 举个例子
要求:第一列字符必须是 A 或 B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息 L;如果第二列字符不是数字,则给出信息 M。
解答:
1) 根据题意,原因和结果如下:
原因:
1——第一列字符是 A;
2——第一列字符是 B;
3——第二列字符是一数字。
结果:
21——修改文件;
22 ——给出信息 L;
23——给出信息 M。
2) 其对应的因果图如下:
11 为中间节点;考虑到原因 1 和原因 2 不可能同时为 1,因此在因果图上施加 E 约束。

3) 根据因果图建立判定表。

表中 8 种情况的左面两列情况中,原因①和原因②同时为 1,这是不可能出现的,故应排除这两种情况。表的最下一栏给出了 6 种情况的测试用例,这是我们所需要的数据。
6.正交排列
6.1  定义

L:代表正交表
n:表示正交表有几行,实验的次数(需要测试的组合的个数)
n 值是固定的,一旦正交表确定 n 值就是固定的。
k:表示正交表的列数
根据因素(输入条件)个数进行确定
m:表示正交表中每个因素水平数的最大值
根据因素的取值个数来确定 m 值
6.2 使用场景
如果组合的数量巨大(一般超过 20 种),没有必要将所有组合都测试,可以通过正交排列法将组合中最优,最少的组合进行测试。使用最少的抽样数据达到最广的,覆盖率最高的统计结果
6.3 注意点
正交排列法和判定表法的主要异同:
1) 都是用来测控件的组合问题
2) 判定表法适合测组合数量较少的情况
3) 正交排列法适合测组合数量较多的情况
4) 判定表(因果图)会反映控件之间的限制和组合关系
5) 正交排列表只需反映控件之间的组合关系。
6.4 使用方法
1) 分析需求--- 列出需要组合的因素以及每个因素的取值(excel)
2) 选择一个合适的正交表  
选择正交表,确定正交表的 m 值和 k 值
M(元素的取值个数):3
K(元素取值个数):4
正交表:3 的 4 次幂
3) 应用正交表
根据实际情况确定抽样数量,一行就是一条测试用例
 

6.5 举个例子
 

 

7.功能图分析方法
7.1 定义
一个程序的功能说明通常由动态说明和静态说明组成,动态说明描述了输入数据的次序或转移的次序.静态说明描述了输入条件与输出条件之间的对应关系。用功能图(状态迁移图&逻辑功能模型)形象地表示程序的功能,机械地生成功能图测试测试用例
7.2 使用场景
一种灰盒测试用例设计方法,程序复杂,存在大量组合情况时应用该分析方法
7.3 注意点
状态迁移图来用来描述动态说明,由输入数据和当前状态决定输出数据和后续状态;逻辑功能模型用来描述静态说明,表示在状态中输入和输出条件的对应关系。
状态迁移图若使用节点代替,可转换成控制流程图形式,转化为路径测试问题。
为了把转台转移(测试路径)的测试用例和逻辑模型 (局部测试用例) 的测试用例组合起来,从功能图生成使用的测试用例,定义以下规则:在一个结构化的状态迁移中,定义三种形式的循环:顺序,选择和重复。
7.4 使用方法
生成局部测试用例:在每个状态中,从因果图生成局部测试用例
测试路径生成:利用上面的规则生成从初始状态到最后状态的测试路径
测试用例合成:合成测试路径与功能图中每个状态的局部测试用例。结果是初始状态到最后状态的一个状态序列,以及每个状态中输入与输出数据的结合
7.5 举个例子
根据流程图进行测试设计
8.错误推测
8.1 定义
基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法。
错误推测方法的基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例
9.使用各种测试方法的综合策略:
1) 在任何情况下都必须使用边界值分析方法,经验表明用这种方法设计出测试用例发现程序错误的能力最强。
2) 必要时用等价类划分方法补充一些测试用例。
3) 用错误推测法再追加一些测试用例。
4) 对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准,应当再补充足够的测试用例。
5) 如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法。

共收到 4 条回复 时间 点赞

谁看完了麻烦用一句话给我说下楼主说了啥

迟宝成 关闭了讨论 05月07日 11:05
迟宝成 重新开启了讨论 05月07日 11:06

楼主说写用例卷起来

评审: 你这个点测到了吗? 不行,必须要全覆盖

自娱自乐 回复

全覆盖从单测做起,单测用例都给我按照这个方法设计,分支全给我覆盖了

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册