测试用例设计实战 2

by 飞儿

目录

  • 黑盒测试用例设计方法
  • 测试用例设计综合实战
  • 面试测试用例设计思路

黑盒测试用例设计方法

因果图定义

  • 因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况

  • 制约关系、组合关系

  • 什么样的输入组合–什么样的输出结果

  • “因”——输入条件

  • “果”——输出结果

因果图适用场景

  • 描述多种条件的组合
  • 产生多个动作

因果图中的基本符号

因果图中的约束条件

因果图法基本步骤

  • 找出所有的输入条件(因)
  • 找出所有的输出条件(果)
  • 明确所有输入条件之间的制约关系以及组合关系
  • 明确所有输出条件之间的制约关系以及组合关系
  • 找出什么样的输入条件组合会产生哪种输出结果
  • 把因果图转换成判定表
  • 为判定表中的每一列表示的情况设计测试用例

因果图法举例

交通一卡通自动充值软件系统

需求解释

系统只接收 50 或 100 元纸币,一次只能使用一张纸币,一次充值金额只能为 50 元或 100 元

  • 若按 50 元按钮,并选择充值 50 元,完成充值后退卡,提示充值成功
  • 若按 50 元按钮,并选择充值 100 元,提示输入金额不足,并退回 50 元
  • 若按 100 元按钮,并选择充值 50 元,完成充值后退卡,提示充值成功,找零 50 元
  • 若按 100 元按钮,并选择充值 100 元,完成充值后退卡,提示充值成功
  • 若按投币按钮后在规定时间内不选择充值按钮,提示错误
  • 若选择充值按钮后不按投币按钮,提示错误

找到所有输入条件编号

  1. 选择 50 元

  2. 选择 100 元

  3. 选择充值 50 元

  4. 选择充值 100 元

找到所有输出条件编号

a. 完成充值、退卡

b. 提示充值成功

c. 找零

d. 提示错误

画图分析输入和输出的关系

条件 1、3 组合 – 输出 a、b

图转化为表格

分析输入和输出的关系

  • 条件 1、4 组合 – c、d
  • 条件 2、3 组合 – a、b、c
  • 条件 2、4 组合 – a、b
  • 条件 1 单独出现 – c、d
  • 条件 2 单独出现 – c、d
  • 条件 3 单独出现 – d
  • 条件 4 单独出现 – d

转化为表格

判定表法

  • 因果图只是一种辅助工具,通过分析最终得到判定表,再通过判定表编写测试用例。
  • 画因果图非常麻烦,影响测试效率,可以直接写判定表,进而编写测试用例。

判定表的组成

  • 条件桩:问题的所有条件
  • 动作桩:问题的所有输出
  • 条件项:针对条件桩的取值
  • 动作项:条件项的各种取值情况下的输出结果

判定表设计步骤

  1. 列出所有的条件桩和动作桩
  2. 确定规则数:条件取值个数^条件数
  3. 填入条件项
  4. 填入动作项。得到初始判定表
  5. 简化判定表

判定表举例

判断三角形

  • 输入三个正整数 a、b、c,分别作为三角形的三条边,通过程序判断三条边是否能构成三角形?
  • 如果能构成三角形,判断三角形的类型(等边三角形、等腰三角形、一般三角形)。

场景法概述

场景法就是模拟用户操作软件时的场景,主要用于测试系统的业务流程。

用例场景定义

  • 基本流:按照正确的业务流程来实现的一条操作路径
  • 备选流 :导致程序出现错误的操作流程

场景法用例设计步骤

  • 根据需求规格说明,画出功能模块流程图;
  • 根据流程图,描述出程序的基本流及备选流;
  • 根据基本流和备选流生成不同的场景,构造场景列表;
  • 对每一个场景生成相应的测试用例;
  • 对生成的所有测试用例重新复审,去掉多余的测试用例;
  • 测试用例确定后,为每一个测试用例确定测试数据值

场景法案例

对淘宝网购物流程设计测试用例

画流程图

正交法

正交法

正交排列法能够使用最小的测试过程集合获得最大的测试覆盖率。当可能的输入数据或者输入数据的组合数量很大时,由于不可能为每个输入组合都创建测试用例,可以采用这种方法。

正交法的局限性

  • 目前常见的正交排列表只有前面附录文件中给出的几种
  • 即使是已有的正交排列表,基本都要求每个控件中取值的个数要相等,这在实际软件中很少遇到。

测试方法的选择

  • 需要输入数据的地方,考虑采用等价类划分法,将无限测试变成有限测试
  • 在任何情况下都必须采用边界值分析法
  • 关注它的主要功能和业务流程、业务逻辑是否正确实现,考虑使用场景法
  • 如果程序的功能说明中含有输入条件的组合情况,则一开始就应考虑选用因果图和判定表法
  • 对于参数配置类的软件,需要考虑参数之间的组合情况,考虑使用正交排列法选择较少的组合方式
  • 采用错误推断法再追加测试用例

测试用例的粒度

  • 测试用例可以写的很简单,也可以写的很复杂
  • 最简单的测试用例是测试的纲要,仅仅指出要测试的内容
  • 测试用例写的过于简单,则可能失去了测试用例的意义
  • 最复杂的测试用例则会指定输入的每项数据,期待的结果即检验方法,具体到界面元素的操作步骤,指定测试的方法和工具等
  • 测试用例写得过于复杂或详细,会带来两个问题:一个是效率问题,另一个是维护成本问题。另外,测试用例设计的过于详细,留给测试执行人员的思考空间就比较少,容易限制测试人员的思维。

测试用例设计综合实战

登录测试用例设计

登录需求讲解

  • 帐号是手机号或者邮箱
  • 手机号仅限制为国内常用的号段
  • 密码必须为 数字+英文 的形式,字段为 8-12 个字符
  • 点击登录按钮,发起登录请求
  • 请求成功,跳转到首页
  • 点击忘记密码跳转到找回密码页

测试用例编写步骤

  1. 划分功能模块
  2. 正向功能验证
  3. 单个功能项验证
  4. 功能之间交互验证
  5. 隐形需求

输入项设计要点

  • 数据长度验证
  • 数据类型验证
  • 是否必填验证
  • 限制约束验证

需求分析

  • 业务规则
  • 主流程
  • 异常处理
  • 数据约束

面试测试用例设计思路

思路

  • 需求分析
  • 界面
  • 功能
  • 易用性
  • 兼容性
  • 性能
  • 安全性

课后作业

使用思维导图设计测试用例:

  • 雪球行情–自选股–自选设置