等价类

等价类划分法是把所有可能的输入数据,即程序的输入划分成若干部分(子集),然后从每一个子集中选取少量具有代表性的数据作为测试用例

相关概念

等价

  • 具有相同属性或者方法的事物的集合
  • 这个集合中某个个体所表现的特征与其他个体完全一致
  • 对于某个被测对象的测试输入而言,某个个体能够被接受或被拒绝,则该个体所在集合中的任意个体都应该被接受或被拒绝

    等价划分

  • 有效等价类:针对被测对象而言,合理的、有意义的、系统接受的输入

  • 无效等价类:针对被测对象而言,不合理的、无意义的,系统不能接受的输入

    设计测试用例的步骤

  1. 需求规定了输入域的取值个数或确定了某个范围时,则可确定一个有效等价类及两个无效等价类。比如“用户名长度在[6,18]”,可以得到一个有效等价类“[6,18]”和两个无效等价类“[-∞,6]”、“[18,+∞]”。
  2. 需求规定了某个输入域的集合,或者必须如何的情况下,可以确定一个有效等价类及一个无效等价类。比如“用户名以字母开头”,可以得到一个有效等价类“用户名以字母开头”和一个无效等价类“用户名以非字母开头”。
  3. 需求规定了某个输入域是真假值时,可以确定一个有效等价类和一个无效等价类。比如“用户是否注册”,可以得到一个有效等价类“用户已注册”和一个无效等价“用户未注册”。
  4. 需求规定了输入域是一组值,则可以确定若干个有效等价类及一个无效等价类。比如“用户有白金会员、黄金会员、黑金会员”,可以确定三个有效等价类“白金会员、黄金会员、黑金会员” 和一个无效等价类“非会员”。
  5. 需求规定必须遵守某种规则时,可确定一个有效等价类及若干个从不同角度违反规则的无效等价类。比如“以字母开头”,可以得到一个有效等价类“以字母开头”,无效等价类“以数字开头、以汉字开头、以特殊符号开头等”。

    用例转化

    设计用例尽可能地覆盖有效等价类,而无效等价类均单独设计用例覆盖

边界值

对程序输入或输出的边界值进行分析和测试,是对等价类划分法的一种补充。

相关概念

边界值三点

  • 上点:边界上的点。
  • 离点:离上点最近的点,根据上点的精度确定:如果边界是闭区间,则离点在外;如果边界是开区间,则离点在内。
  • 内点:边界有效范围内的任一点。

    设计测试用例的步骤

    边界值应用规则
  1. 需求规定了取值范围或规定了取值个数时,可以利用该范围的边界内及边界附近的数据进行测试。比如“[6,18]”,可以得到测试点“6、18、5、19、10”。
  2. 需求规定了取值个数,则少于个数一个或者多于个数一个的值进行测试。比如“邀请3人送礼品”,可以得到测试点“2、3、4”。
  3. 需求规定了一个有序集合的时候,可使用该集合的第一个和最后一个值进行测试。比如,“下拉框有5个城市可选择”,可得到测试点“第一个、最后一个城市”。
  4. 如果程序中使用了一个内部数据结构的话,则可以考虑该数据结构的存储边界。比如,Java的Int类型(最大数值为:2^31-1;最小数值为:-2^31),可以得到一个取值范围“[-2^31,2^31-1]”,再根据范围的边界规则得到测试点。

    用例转化

    边界内的点为有效等价类,边界外的点为无效等价类;上点、离点、内点均单独设计用例覆盖

判定表

分析和表述若干输入条件下,被测对象针对这些输入作出的响应一种工具。在遇到复杂业务逻辑时,可以利用该表,理清业务逻辑关系。

相关概念

  • 条件-条件桩:需求定义的所有条件。
  • 条件-条件项:针对它左列条件的取值。
  • 动作-动作桩:需求定义的可能采取的操作。
  • 动作-动作项:在条件项的各种取值情况下应该采取的动作。
  • 规则:动作项和条件项组合在一起,形成的业务逻辑处理规则。在判定表中贯穿条件项和动作项的一列就是一条规则。判定表中列出多少组条件取值,也就有多少条规则。

    设计测试用例的步骤

  1. 理解需求,确定条件桩、动作桩
  2. 设计和优化判定表
  3. 填写动作项
  4. 根据判定表中输出结果的表现,进行判定表的合并(非必须)
  5. 合并条件(简化判定表):如果输出相同,在其对应输入中,有且只有一个条件的取值对动作不产生任何影响则可合并(合并存在一定风险,可能会造成漏测)
  6. 抽取测试用例

    用例转化

    确定判定表无误后,将判定表的横纵交叉点为一个场景,设计用例覆盖。

因果图

因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法。

相关概念

输入与输入关系

  • 异:所有输入条件中最多有一个产生,也可以一个没有。
  • 或:所有输入条件中,最多有一个产生、或者多个、或者所有。
  • 唯一:所有输入条件中,有且只有一个条件产生。
  • 要求:所有输入条件,只要有一个产生,其他跟着也会出现。

    输入与输出关系

  • 恒等:当输入条件发生时,结果一定会出现。

  • 非:当输入条件发生时,结果一定不会发生。
  • 与:当做个输入条件中,只有所有输入条件都发生,结果才会出现。
  • 或:当多个输入条件中,只要有一个发生,结果就会出现。

    设计测试用例的步骤

  1. 分析需求,获取条件和动作
  2. 分析条件与条件,条件与动作之间的关系
  3. 通过关系画出因果图
  4. 将因果图转化为判定表

    用例转化

    确定判定表无误后,将判定表的横纵交叉点为一个场景,设计用例覆盖。

正交试验

正交试验法常见于页面组合设置用例设计和兼容性组合用例设计。用最少的实验覆盖最多的操作,测试用例设计很少,效率高。

相关概念

Ln(mk)
L: 表示正交表
n: 实验行数 且 n = (m-1)*k + 1
k: 因素数 (输入 或 控件数量)
m: 水平数 (输入的取值 或者 每个控件的下拉选项数量)
标准正交表的每个因素的水平数相同。

设计测试用例的步骤

  1. 确定因子(变量)
  2. 确定水平(变量的取值)
  3. 选择一个合适的正交表
  4. 把变量的值映射到表中

    用例转化

    把每一行的各因素水平的组合作为一个测试用例,加上你认为可疑且没有在表中出现的用例组合。

    辅助工具

    可以使用allpairs 生成正交表组合结果

状态迁移

关注被测对象的状态变化,在需求定义中是否有不可到达和非法的状态,是否产生非法的状态转移。

相关概念

状态:被测对象在特定输入条件下所保持的响应形式。

设计测试用例的步骤

  1. 根据需求明确状态节点
  2. 绘制状态迁移图
  3. 绘制状态迁移树
  4. 抽取测试用例

流程分析法(场景设计法)

场景法是一种通过使用“场景”对软件系统的功能点或业务流程进行描述,即针对需求模拟出不同的场景进行所有功能点及业务流程的覆盖,从而提高测试效率并达到良好效果的方法。

相关概念

  • 基本流:通过业务流程输入都为正确的,能够最后达到目标的流程
  • 备选流:通过实现业务流程时,因错误操作或异常输入,导致流程存在反复,但最终能够完成期望业务的流程
  • 异常流:通过实现页面流程时,因错误操作或异常输入,导致业务没有正确完成

    设计测试用例的步骤

  1. 理解需求,确认业务流程(基本流、备选流、异常流)
  2. 绘制流程图,再次明确流程路径
  3. 根据业务流程图,抽取测试路径,每次路径需包含一个从未走过的路径
  4. 细化路径设计测试用例