1)等价类划分
等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的bug都是等效的。并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试。因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据,取得较好的测试结果。等价类划分可有两种不同的情况:有效等价类和无效等价类
可参考以下知乎解说:
https://zhuanlan.zhihu.com/p/112810758
2)边界值分析法
是对等价类划分方法的补充。测试工作中,大量的bug是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部,因此针对各种边界情况设计测试用例,可以查出更多的错误
使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据
可参考以下CSDN解说:
https://blog.csdn.net/liangfengchang/article/details/45041147
3)错误猜测法
基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法
错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。例如, 在单元测试时曾列出的许多在模块中常见的错误, 以前产品测试中曾经发现的错误等,这些就是经验的总结。还有, 输入数据和输出数据为0的情况, 输入表格为空格或输入表格只有一行, 这些都是容易发生错误的情况。可选择这些情况下的例子作为测试用例
4)因果图方法
前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系,相互组合等。 考虑输入条件之间的相互组合,可能会产生一些新的情况。 但要检查输入条件的组合不是一件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多。因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例。这就需要利用因果图(逻辑模型)。因果图方法最终生成的就是判定表, 它适合于检查程序输入条件的各种组合情况 (因果图/判定表法比较适合测试组合数量较少的情况,一般少于20种)
• 因(原因):输入条件
• 果(结果):输出结果
• 因果图:就是通过画图的方式来表示输入条件(因)和输出结果(果)之间的关系
实例
5)正交表分析法
可能因为大量的参数的组合而引起测试用例数量上的激增,同时,这些测试用例并没有明显的优先级上的差距,而测试人员又无法完成这么多数量的测试,就可以通过正交表来进行缩减一些用例,从而达到尽量少的用例覆盖尽量大的范围的可能性
正交表是一种特制的表格,一般用Ln(mk)表示,L代表是正交表,n代表试验次数或正交表的行数,k代表最多可安排影响指标因素的个数或正交表的列数,m表示每个因素水平数,且有n=k*(m-1)+1
例如:
对于一个四因素且每个因素均为三水平的试验,如果按照全面试验需要进行3*3*3*3=81次。但是如果用正交试验法选择L9(34)正交表,n=4*(3-1)+1=9次试验就可以覆盖。从这点可以说明用正交试验法能有效地、合理地减少测试用例和工时,节约测试成本
正交表具有以下两个特点
正交表必须满足这两个特点,有一条不满足,就不是正交表
1) 每列中不同数字出现的次数相等。这一特点表明每个因素的每个水平与其它因素的每个水平参与试验的几率是完全相同的,从而保证了在各个水平中最大限度地排除了其它因素水平的干扰,能有效地比较试验结果并找出最优的试验条件
2) 在任意2列其横向组成的数字对中,每种数字对出现的次数相等。这个特点保证了试验点均匀地分散在因素与水平的完全组合之中,因此具有很强的代表性
实例
如何选择合适的正交表
1)单一水平正交表
存在实验次数等于n,并且水平数大于等于m、因素数大于等于k的正交表,我们把这个正交表拿过来套用;
不存在实验次数等于n的正交表,我们就得找出满足实验次数大于n并且水平数大于等于m、因素数大于等于k的正交表。
2)混合水平正交表存在实验次数等于n,并且水平数大于等于max(m1,m2,m3,…)、因素数大于等于(k1+k2+k3+…)的正交表,我们把这个正交表拿过来套用;不存在实验次数等于n的正交表,我们就得找出满足实验次数大于n并且水平数大于等于max(m1,m2,m3,…)、因素数大于等于(k1+k2+k3+…)的正交表。当有2个或2个以上正交表可以被选择时,选取原则是选实验次数最少的那个正交表
☆对于混合正交表,可以使用allpairs工具辅助我们进行选择
譬如,存在 m1 = 5, k1 = 5, m2 = 2, k2 = 1,根据计算公式:n = 5x(5-1) + 1x(2-1) + 1= 22我们发现没有 n = 22 的正交表,那如何选择合适自身的正交表呢? (a)找出满足 n > 22 的正交表 (b)m > max(m1, m2) 即 m > max(5, 2) 且 k >= (k1+k2) = 5+1= 6 (c)选择 n 最小/最简单的正交表: L25(56)
可以用工具allpairs生成正交表,很方便
6)场景分析方法
指根据用户场景来模拟用户的操作步骤,这个比较类似因果图,但是可能执行的深度和可行性更好
(1)用例场景:是通过描述流经用例路径来确定的过程。这个流经过程要从用例开始到结束遍历其中所有的基本流和备选流。
(2)基本流:采用直黑线表示,是经过用例的最简单的路径,也就是功能正常实现的基本流程(流程无任何异常错误,程序从开始直到执行的结束)
(3)备选流:采用不同颜色表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中,也可以起源于另一个备选流,或终止用例,不在加入基本流中。(各种错误情况)
遵循图中每个用例经过的路径,可以确定以下场景:
场景1:基本流
场景2:基本流 备选流1
场景3:基本流 备选流1 备选流2
场景4:基本流 备选流3
场景5:基本流 备选流3 备选流1
场景6:基本流 备选流3 备选流1 备选流2
场景7:基本流 备选流4
场景8: 基本流 备选流3 备选流4
场景分析法设计测试用例步骤
(1)理解业务需求,分析业务基本流和备选流上所有会影响数据流走向的的各种因素,建议从用户操作角度拆分流程中各环节,同时考虑时间、网络等因素
(2)组合场景中可能发生的事件序列
(3)将环境因素和事件序列进行组合并进行分析推导,得到不同的场景
实例
对于每个场景,至少要确定包含执行场景所需的适当条件的测试用例。例如,在下面的矩阵中,V(有效)用于表明这个条件必须是 VALID(有效的)才可执行基本流,而 I(无效)用于表明这种条件下将激活所需备选流。下表中使用的“n/a”(不适用)表明这个条件不适用于测试用例
测试用例一经认可,就可以确定实际数据值(在测试用例实施矩阵中)并且设定测试数据
7)状态图法
通过输入条件和系统需求说明得到被测系统的所有状态,通过输入条件和状态得出输出条件;通过输入条件、输出条件和状态得出被测系统的测试用例。关注被测对象的状态变化,在需求规格说明中是否有不可以达到的状态和非法的状态,是否产生非法的状态迁移
方法流程
1.根据需求明确状态节点
2.绘制状态迁移图
3.绘制状态迁移树
4.抽取测试用例
实例
列出输入事件:
对空闲状态(程序刚启动时的状态)加所有可能的输入,判断产生哪些新状态
对产生的每个状态分别加所有可能的输入,直至不再有新的状态产生
总结最后有如下9个状态
编写测试用例
8)大纲法
大纲法是一种着眼于需求的方法,为了列出各种测试条件,就将需求转换为大纲的形式。大纲表示为树状结构,在根和每个叶子结点之间存在唯一的路径。大纲中的每条路径定义了一个特定的输入条件集合,用于定义测试用例。树中叶子的数目或大纲中的路径给出了测试所有功能所需测试用例的大致数量。在一个程序中涉及多个窗口,每个窗口有多个操作,窗口和窗口之间有一定的联系(或者说操作之间的联系),为了弄清它们之间的联系,使用测试大纲法
使用测试大纲法分析程序
1、列大纲(提纲)分析需求—列出所有的窗口以及每个窗口包含的操作
注意:窗口之间的先后顺序
2、找出窗口和窗口(操作和操作)之间的关系,编写用例
实例
有一个商场信息查询系统,具体界面如下图
分析需求,列出所有窗口以及每个窗口包含的操作(注意每个窗口之间的先后顺序)
(1)主窗口
①选择专卖店类型(3个)
②点击“地图”
③点击“帮助”
(2)“专卖店”窗口
①选择某个专卖店
②点击“主菜单”
③点击“帮助”
(3)“地图”窗口
①点击“打印”
②点击“上一页”
③点击“主菜单”
④点击“帮助”
(4)“帮助”窗口
①点击“上一页”
②点击“主菜单”
找出窗口中不同操作之间的关系,编写测试用例(部分)