C++ 全栈知识体系C++ 全栈知识体系
✿导航
  • 基础
  • 函数
  • 知识点
  • IO框架
  • 新版本特性
  • 数据库原理
  • SQL语言
  • SQL - MySQL
  • NoSQL - Redis
  • NoSQL - ElasticSearch
  • 算法基础
  • 常见算法
  • 领域算法
  • 分布式算法
  • 数据结构与算法
  • 计算机网络
  • 操作系统
  • 计算机组成
  • 开发
  • 测试
  • 架构基础
  • 分布式系统
  • 微服务
  • 中间件
  • 概念
  • 理论
  • 架构设计原则
  • 设计模式
  • 协议
  • 技术选型
  • 编码规范
  • 流水线构建 - CI/CD
  • 知识点 - Linux
  • 网站 - Nginx
  • 容器化 - Docker
  • 容器编排 - Kubernetes
  • 服务网格 - Service Mesh Istio
  • 常用快捷键 - Shortcut
  • 工具使用 - Tools
  • 开源项目
  • 学习项目
  • 个人项目
  • 项目开发
  • 项目Idea
  • 并发
  • 部署
  • 分布式
  • 知识
  • 问题
  • 编程语言与技术
  • 系统与架构
  • 软件开发实践
  • 数据处理与应用设计
  • 个人
  • 产品
  • 团队
  • 知识体系
  • Vue
关于
✿导航
  • 基础
  • 函数
  • 知识点
  • IO框架
  • 新版本特性
  • 数据库原理
  • SQL语言
  • SQL - MySQL
  • NoSQL - Redis
  • NoSQL - ElasticSearch
  • 算法基础
  • 常见算法
  • 领域算法
  • 分布式算法
  • 数据结构与算法
  • 计算机网络
  • 操作系统
  • 计算机组成
  • 开发
  • 测试
  • 架构基础
  • 分布式系统
  • 微服务
  • 中间件
  • 概念
  • 理论
  • 架构设计原则
  • 设计模式
  • 协议
  • 技术选型
  • 编码规范
  • 流水线构建 - CI/CD
  • 知识点 - Linux
  • 网站 - Nginx
  • 容器化 - Docker
  • 容器编排 - Kubernetes
  • 服务网格 - Service Mesh Istio
  • 常用快捷键 - Shortcut
  • 工具使用 - Tools
  • 开源项目
  • 学习项目
  • 个人项目
  • 项目开发
  • 项目Idea
  • 并发
  • 部署
  • 分布式
  • 知识
  • 问题
  • 编程语言与技术
  • 系统与架构
  • 软件开发实践
  • 数据处理与应用设计
  • 个人
  • 产品
  • 团队
  • 知识体系
  • Vue
关于
  • 开发

    • 常用开发库

      • 常用开发库 - 概述
      • 常用开发库 - Cppcheck
      • 常用开发库 - Cppunit
      • 常用开发库 - Drogon
      • 常用开发库 - FastCGI
      • 常用开发库 - Googletest
      • 常用开发库 - Hiredis
      • 常用开发库 - Jsoncpp
      • 常用开发库 - Log4cpp
      • 常用开发库 - Poco
      • 常用开发库 - Protobuf
      • 常用开发库 - Tinyxml
      • 常用开发库 - Yamlcpp
      • 常用开发库 - ZeroMQ
  • 测试

    • 测试理论

      • 测试理论 - 软件测试的发展
      • 测试理论 - 软件开发过程模型
      • 测试理论 - 测试模型
      • 测试理论 - 软件测试分类
      • 测试理论 - 基本原则及流程
    • 测试用例

      • 测试用例 - 概念
      • 测试用例 - 等价类划分法
      • 测试用例 - 边界值测试法
      • 测试用例 - 判定表法
      • 测试用例 - 因果图法
      • 测试用例 - 正交法
      • 测试用例 - 场景法
      • 测试用例 - 功能图法
    • 测试工具

      • 测试工具 - Postman使用
      • 测试工具 - RobotFramework使用

测试用例 - 判定表法

  • 使用场景
  • 定义
  • 组成
  • 规则及规则合并
    • 规则
    • 化简
    • 测试案例设计
  • 案例
    • 案例1
    • 测试案例设计思想
    • 案例2
  • 小结

概述

使用场景

适合于有多个输入和多个输出,输入和输出之间有相互的组合关系,输入输出之间有相互的制约和依赖关系。

定义

判定表也称决策表,是分析和表达多逻辑条件下执行不同操作的工具.

它能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。判定表适合于处理这类问题。

组成

判定表是由条件桩、动作桩、条件项、动作项四部分组成,如下图.

条件桩条件项
动作桩动作项
  1. 条件桩(Condition Stub):列出了问题得所有条件。通常认为列出的条件的次序无关紧要。

  2. 动作桩(Action Stub):列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。

  3. 条件项(Condition Entry):列出针对它左列条件的取值。在所有可能情况下的真假值。

  4. 动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。

规则及规则合并

规则

任何一个条件组合的特定取值及其相应要执行的操作称为规则。

在判定表中贯穿条件项和动作项的一列就是一条规则。显然判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列。

化简

规则合并有两条或多条规则具有相同动作,并且其条件项之间存在着极为相似的关系。

测试案例设计

步骤:

  1. 明确规则个数
  2. 列出所有条件桩和动作桩
  3. 填入条件项
  4. 填入动作项,等到初始判定表
  5. 简化,合并相似规则

案例

案例1

问题要求:对于功率大于50马力的机器、维修记录不全或运行10年以上的机器,应优先维修.

测试案例设计思想

  1. 明确规则个数

这里有三个条件:大于50马力、维修记录不全、运行10年以上, 每个条件有2种取值,所以有八种规则.

  1. 列出条件桩和动作桩
条件桩功率大于50马力?
维修记录不全?
运行超过10年?
动作桩优先处理
  1. 填入条件项

  2. 填入动作项等到初始判定表

条件桩条件项12345678
功率大于50马力?YYYYNNNN
维修记录不全?YYNNYYNN
运行10年以上?YNYNYNYN
动作桩优先处理?XXXXX
其他处理XXX
  1. 简化判定表

通过初始的判定表我们发现:

  1. 在三个条件中有2个不满足时,剩下的一个完全没有参考价值,可以进行简化.

    只有功率大于50马力、维修记录全的、运行十年以上的才优先处理;

    其他处理的情况是:满足动力大于50马力、维修功能完全、没有运行10年以上中只要满足两项

  2. 简化后为

条件桩条件项12345
功率大于50马力?YYNNY
维修记录不全?YN--N
运行10年以上?-YYNN
动作桩优先处理?XXX
其他处理XX

注意: “-”表示取值与否不影响触发的动作.即,不影响规则

案例2

公交一卡通自动充值系统要求:

  • 系统只接收50或100元纸币,一次只能使用一张纸币,一次充值金额只能为50元或100元。
  • 若输入50元纸币,并选择充值50元,完成充值后退卡,提示充值成功;
  • 若输入50元纸币,并选择充值100元,提示错误,并退回50元;
  • 若输入100元纸币,并选择充值50元,完成充值后退卡,提示充值成功,找零50元;
  • 若输入100元纸币,并选择充值100元,完成充值后退卡,提示充值成功;
  • 若输入纸币后在规定时间内不选择充值按钮,找零,并提示错误;
  • 若选择充值按钮后不输入货币,提示错误

测试案例实现如下

  1. 明确规则个数
规则个数(条件桩)输入50元
输入100元
充值50元
充值100元
  1. 列出条件桩和动作桩
动作桩提示充值成功
充值成功并退卡
退卡
找零
  1. 列入条件项

  2. 填入动作项,等待初始的判定表

输入条件12345678
输入50元YYX
输入100元YYX
充值50元YYX
充值100元YYX
动作桩充值成功并退卡XXX
提示充值成功XXX
找零XXXX
提示错误XXXXX
  1. 简化

这个案例中每个条件都是独立的,没有可以简化的

  1. 测试用例设计

上面的表中每一条就是一个测试用例.

公交一卡通测试用例

小结

优缺点

优点

  • 能把复杂问题按照各种可能情况—列举出俩, 简明而易于理解,避免遗漏

缺点

  • 不能表达重复执行的动作、例如循环结构
Last Updated:
Contributors: klc407073648
Prev
测试用例 - 边界值测试法
Next
测试用例 - 因果图法