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