对如果进行有效测试设计, 分为以下几点作说明:
- 测试设计概述
- 测试场景分析
- 测试对象分析
- 测试类型分析
- 交互分析与规程设计
- 自动化设计与环境分析
1. 测试设计概述
#1.1 定义: 测试设计技术是从特定的测试依据中得到测试用例用来实现特定测试覆盖的标准化方法.
#1.2 测试设计能够解决的问题
测试设计能够解决的问题
- 有效减少测试用例的数目
- 避免测试用例之间的冗余
- 满足测试覆盖率的要求
- ......
#1.3 测试分析设计技术全景图
测试设计技术 - 等价类
- 等价类又分为有效等价类和无效等价类
- 有效等价类是指对于系统的规格说明来说是合理的, 有意义的输入数据构成的集合
- 无效等价类是指对于系统的规格说明来说是不合理或无意义的输入数据所构成的集合
- 无效等价类中的值会导致错误信息, 有效等价类的值会按照预期的执行. 在进行测试覆盖时, 要同时考虑这两种等价类. 因为, 软件不仅要能接收合理的数据, 也要能经受以外的考验, 这样的测试才能确保软件具有更高的可靠性
测试设计技术 - 边界值
- 边界值分析方法就是对输入或输出的边界值进行测试的一种黑盒测试方法
- 经验告诉我们, 大量的错误是发生在输入或输出范围的边界上, 边界值分析就是在划分的等价类区域的边界及其附近进行测试数据的选取, 选取原则就是选取正好等于/刚刚大于或刚刚小于边界值的数据作为测试数据
测试设计技术 - 判定表
- 采用表格的形式, 列出所用条件和所有结果的组合, 做到无遗漏的覆盖
- 判定表适合与条件各自独立, 互不影响的情况
- 判定表使用的技巧在于, 把条件划分清晰, 对条件进行合理的组合, 使得到的规则数最小
测试设计技术 - 因果图
- 因果图法是运用图形的方式对多个输入间的组合以及输入、输出之间的因果关系进行分析, 从而识别有效的组合形成用例, 去除无效冗余的组合用例
- 因果图方法通常都是和判定表结合使用, 因果图的输出就是判定表的输入, 或者说因果图方法最终生成的就是判定表
- 较复杂的逻辑关系, 使用因果图较清晰
测试设计技术 - 正交法
- 正交表示一整套规则的设计表格, 其构成包括三个要素:
- 1 )行数:正交表行的个数
- 2 )因素数:正交表列的个数
- 3 )水平数:任何单个因数能够取得的值的最大个数
- 正交满足的特征:
- 1 )每列中不同数字出现的次数相等, 即每个因素的每个水平出现的次数是完全相同的, 在表中任何一列都有1、2、3,且在任一列的出现次数均相等
- 2 )任意两列(两个因素)其横向组成的数字对中, 每种数字出现的次数相等
正交法举例
#1.4 测试设计的方法
#2 测试场景分析
#2.1 定义:
在特定的上下文环境中、特定的参与者, 对系统实施特定的刺激作用下, 系统产生相应的行为或响应。
场景由特定的环境、参与者、刺激、被影响的系统、响应等属性共同组合的集合。
#2.2 场景分析的目的
- 将被测试特性细分为功能独立的场景, 再针对各个场景进行设计, 从而从整体上降低测试设计的复杂度
- 场景分析的目的实际上是要搞清楚业务或功能的运行上下文是什么, 完成什么样的功能, 对开发和测试工作的开展起到指导和约束的作用
- 从系统内部处理过程着手进行分析, 找出需要测试和观察的内容,筛除不需要测试和观察的内容,减少用例数量
#2.3 场景分析原则 - 5W1H1E
- 在5W1H1E原则基础上, 需要增加和客户交流与确认的环节, 客户需求是产品之源
- 场景分析是个功能方法, 它可以在需求分析、设计、编码各个阶段进行
- 场景分析与测试类型无关, 大部分测试类型都可以采用场景分析工程方法
例子:呼叫
本地呼叫, 忙时呼叫0.29元/分钟, 闲时呼叫0.19元/分钟。
其他呼叫0.39元/分钟
忙时: 08:00 - 21:00
闲时: 21:00 - 08:00
场景分析 - 忙闲时呼叫
#3 测试对象分析
测试对象分析 - 测试建模
步骤1: 确定被测对象的范围
- 目的
- 确定被测系统的边界
- 只有确定了边界, 才能知道模型中应该画哪些
步骤2: 划分功能点
- 目的
- 被测特性应该画几个模型?
- 模型之间如何分工: 每个模型应该侧重哪些内容?
步骤3: 建立模型
目的
把每个模型的需求点合理的组织为模型
主要功能模型
数组组合模型覆盖
- 适用于只关注系统的输入、输出, 不关注中间处理过程的系统
- 一般要求测试因子间相互独立, 时序上也没有依赖关系
- 正交矩阵覆盖和Paire-Wise没有高楼数据的优先级与重要程度
- 覆盖的强弱并不完全代表用例间的包含关系
流程模型覆盖
- 适用于关注系统内部各个环节的处理顺序的系统
- 适用于由顺序结构、分支结构、循环结构描述的系统
- 流程模型既适用于白盒测试同样适用于黑盒测试
状态图模型覆盖
- 系统运行的状况可以通过状态进行描述
- 系统输出由当前被测对象状态和触发条件共同决定
- 状态 - 多为名词、形容词 触发条件多为动词
到现在我们可以看下如果就目前的分析生成用例了
第一步: 使用状态图, 描述系统功能
第二步:选择覆盖技术
第三步:创建逻辑用例