优点:
为了产生少量的测试用例, 并且可以测试大部分的情况, 我们可以使用等价类划分的方法 比如对于输入值是范围值, 我们可以使用等价类划分成范围内的和不是范围内的两种等价类
等价类有一种评判标准, 分为强, 弱, 又分为一般和健壮 弱:只单缺陷假设 强:多缺陷假设 一般:考虑有效值 健壮:考虑无效值
也就是对于范围的值, 我们需要取min, min+, normal, max-, max五个值 如果带有鲁棒性的话, 可以增加min-, max+来进行验证
Summary
如下图所示
Alt text
左侧是桩部分,右侧是条目部分,上面是条件部分,下面是行动部分 因此,可以引用条件桩,行动桩,条件条目和行动条目. 条目部分的一列是一条规则。规则指示在规则的条件部分中指示的条件环境下要采取什么行动.
我们列出决策表之后, 还可以对无关项进行合并, 比如 (Y, Y, N)的结果是和(Y, Y, Y)是一样的, 那么我们可以将其合并为(Y, Y, -)
等价分类法和边界值分析法的缺点是没有检查各种输入条件的组合. 要检查输入条件的组合并非易事,因为即使可以将输入条件分成等价类,但它们的组合情况可能很多,如果没有一个系统的方法是难以设计测试用例的. 借助因果图列出输入数据的各种组合与程序对应动作效果之间的阶段联系,构造判定表,由此设计测试用例是生成测试用例的有效办法.
这里我们首先给出因果图的几种类型:
Alt text
Alt text
Alt text 4.与 C1 and C2 = E1
Alt text
给出一些约束:
Alt text
Alt text
Alt text
Alt text
Alt text
因果图的画的时候要注意使用中间节点来使得整个图易于表达
正交矩阵是一种用于测试的系统化的统计方法
给出几种测试实验的类型:
首先引入因子的概念, 因子也就是影响的因素, 拥有自己的定义域, 范围等 然后是水平的概念, 水平是给定相应因子的值的集合的数目
正交矩阵(正交表)是该方法的核心, 定义为:
其中Runs是矩阵的行数, Factors是矩阵的列数(因子的数目), Levels是因子的最大取值
关于试验次数给出计算的方法:
场景测试是基于用例来进行分析的
现在的软件都是由事件的触发来控制流程, 事件触发的情景便形成了场景 同一个事件不同的触发顺序和处理结果形成了事件流 将该思想引入软件测试之中, 生动描绘出事件触发时候的情景, 有利于测试
关于事件流:
三步法生成测试用例:
提供了对应用基于状态的简单建模方法, 一般以六元组的形式表示
是一个有限的输入集合
是一个有限的输出集合
是一个有限的状态集合
是一个初始状态
是状态转移函数
是输出函数
给出正常的FSM
Alt text
四种错误类型:
Alt text 2.转变错误
Alt text 3.额外状态错误
Alt text 4.丢失状态错误
Alt text
首先给出假设:
关于Chow的W方法, 有以下步骤:
下面对于每一个步骤给出具体的方案:
我们令
是一个最小的并且完整的FSM 描述集合W是一个输入序列的有限的集合, 这些输入序列能够区分M的任意状态对的行为, 每一个W中的输入序列都是有限长度, 给定状态
和
, W包含一个字符串s, 使得
Alt text
如图所示, 我们可以用W中的字符串(输入序列)baaa来将M中的q1和q2区分开来 那么, 接下来我们给出W的具体构造方法
关于Q的k等价划分, 我们记作
, 是n个有限集合
的集合, 使得
状态如果属于
就称为k等价的 如果u属于
, 同时v属于
, i ≠ j, 那么u和k就称为k可区分的 我们以构建1-等价划分为例, 首先给出FSM
Alt text
首先我们对输入输出进行简单的划分, 得到
Alt text
我们可以继续构建2-等价划分, 我们对P1表进行重写, 得
Alt text
状态下标后面多了一个划分组的索引, 进而的得到P2表
Alt text
重复该过程, 我们最终可以得到
Alt text
那么如何利用一堆表来找到区分状态的序列呢? 举个例子, 我们如果想找到q2和q3的区分序列, 就需要找到在Pi中q2和q3同一个划分, 但是p(i+1)就不同了, 找到这样的i值 很容易得到P1和P2, P1中的不同输入也就是区分序列了, 但是P1中对于所有输入都可以区分, 我们选择z = a 进一步我们需要q1和q5的的区分序列, P1中我们继续选择a, 更新z = z.a = aa, 由于该转变无法继续区分序列了, 到这里会结束 我们可以计算一下输出
这就是最小的可区分序列了, 我们可以遍历所有状态对, 最后生成W集合
, 初始化的状态, 是测试树的根, 假设测试树已经被构造到水平k, 第k+1的水平将会被构建 在水平k选择一个节点n, 如果从1到k水平中出现出现过, 那么n就是叶子节点并且不能被继续展开, 如果n不是叶子节点, 那么我们将其扩展, 增加节点n的一个分支通向一个新的节点m, 如果
, 这个分支将会被标记为x, 这个步骤对k水平的所有节点做一遍
Alt text
Alt text
对于m=n, 易得
特别地
Alt text
我们按如下步骤对实现进行测试: