测试理论 - 黑盒测试 - 用例设计思路

  1. 概述

    1. 黑盒测试的用例设计
  2. 背景

    1. 面试老问
      1. 为啥, 是不是把我当功能测试来了
    2. 想了想
      1. 之前翻来覆去, 只有 边界值 和 等价类
        1. 我对测试理论, 主要的来源, 就是 软件测试, 和 软件测试的艺术 两本书
        2. 但下面的好些方法, 书里也没讲, 因果图当时觉得是天书, 根本看不懂也不敢说
        3. 结果就是, 每次面试官问我, 我只能说 边界值 和 等价类
        4. 然后面试官 微微一笑, 语重心长的跟我说这些
          1. 你现在的思路, 还是个开发
          2. 你大学功课, 肯定没有学好
        5. 然后我还一脸懵逼
      2. 这些东西, 看起来还真的比较系统
        1. 普通人想总结出来, 估计比较难
        2. 如果是书上讲的, 可我又始终找不到
        3. 在 csdn 和 51testing 追根溯源, 已经找到了 2005 年
        4. 想了想, 真心浪费了不少时间, 以后随缘在找吧,
        5. 其实 博客里, 写的也听清楚的, 我就先看看吧

1. 测试分类

  1. 概述

    1. 简单分下类
  2. 分类

    1. 黑盒
      1. 静态
        1. 看需求, 看设计
      2. 动态
        1. 执行
    2. 白盒
      1. 静态
        1. 代码评审
      2. 动态
        1. debug
  3. 本次目标

    1. 动态黑盒

2. 动态黑盒测试分类

  1. 概述

    1. 简单分类
  2. 分类

    1. 通过性测试

      1. 目的
        1. 证明产品符合要求
    2. 失败性测试

      1. 目的
        1. 证明产品不符合要求
  3. 执行

    1. 顺序
      1. 通过性测试
        1. 先证明基本流程没有问题
      2. 失败性测试
        1. 再尝试找出一些漏洞

2. 动态黑盒用例设计

  1. 概述
    1. 简单的用例设计思路

1. 等价类划分

  1. 概述

    1. 对输入进行划分, 目的是区别有效和无效输入
  2. 步骤

    1. 理解需求
      1. 需求或者业务
    2. 理解输入
      1. 输入的意义
      2. 理解输入的规则
    3. 划分等价类
      1. 根据规则, 将输入划分
        1. 若干个 有效等价类
        2. 若干个 无效等价类
    4. 设计用例
      1. 带入参数, 设计用例

2. 边界值

  1. 概述

    1. 在 有效等价类 和 无效等价类 的边缘试探
  2. 步骤

    1. 划分等价类
    2. 整理用例
      1. 让用例分布在 有效等价类 和 无效等价类 的边界
  3. 其他边界

    1. 循环
      1. 第一轮和最后一轮
    2. 集合
      1. 第一个元素和最后一个元素

3. 判定表法

  1. 概述

    1. 依靠 判定表, 来辅助设计用例
    2. 通常是用来处理 限制条件较多 的 单个输入
      1. 配合之前的等价类与边界值, 设计合适的用例
  2. 步骤

    1. 确定等价类与边界值

    2. 选定 输入

      1. 选定一个相对复杂的输入
        1. 有 多组 限制条件
    3. 整理输入条件

      1. 列判定表
          1. 每一行为一个约束
            1. 满足为 true
            2. 不满足为 false
          1. 每一列为一个等价的结果
            1. 由各个条件是否生效, 最后得出一个用例
    4. 筛选合适可能

      1. 筛选每列, 构造用例
        1. 合理, 则构造用例, 作为 通过性测试 用例
        2. 不合理, 则构造用例, 作为 失败性测试 用例
        3. 不存在, 不作构造

4. 正交表法

  1. 概述

    1. 乍一看类似于 判定表 法
    2. 通常用来处理多个 多个输入
  2. 步骤

    1. 整理 每个输入的 判定表
      1. 确定 每个输入 需要考虑的状态
        1. 正向
        2. 逆向
    2. 组合 多种输入
      1. 用类似于 笛卡尔积 的方式来组成 多组输入
        1. 最后根据结果, 划分 通过性测试, 和 失败性测试
  3. 与 判定表 的区别

    1. 判定表
      1. 对象是 单个输入
      2. 可能会存在 不可能的情况
    2. 正交表
      1. 对象是 所有输入
      2. 通常只考虑可能的情况

5. 流程图法

  1. 概述

    1. 根据业务流程, 选择更加接近真实的用例
      1. 提高测试精度
      2. 减少测试时间
  2. 步骤

    1. 理解需求
      1. 理解需求和设计
    2. 整理流程
      1. 整理用户经常会触发的流程
        1. 正常流程
        2. 异常流程
      2. 整理好后, 生成流程图
    3. 设计用例
      1. 根据流程图, 设计输入
  3. 意义

    1. 关注 设计好的流程
      1. 更加贴近真实, 可以保证软件的 下限
    2. 实际的意义
      1. 感觉更加适合 回归测试
        1. 之前的设计, 留下的用例会很多很细,
        2. 最好在 接口层面 执行
        3. 最好有 自动化
      2. 帮助测试理解产品, 理解用户

6. 直觉法

  1. 概述
    1. 这个就是纯蒙
      1. 靠工作经验, 觉得哪里可能有问题, 然后就试着去做

ps

  1. ref

    1. 软件测试
    2. 软件测试的艺术
    3. 黑盒测试方法用例设计详解
      1. 这些玩意是从哪看来的
      2. 我前两本书上都没有啊...
  2. 其实, 还有个 因果图

    1. 概述

      1. 当 输入与输出 过于错综复杂时, 可以借助 因果图 来构造 正交表
    2. ref

      1. 因果图法
        1. 老实说, 这个老铁讲得很清楚
          1. 我之前完全不懂, 现在半懂不懂了
            1. 之前看的, 是 软件测试
              1. 上面一些列的 图例, 花里胡哨的连线, 把人绕晕了
            2. 看了这个后, 我知道了这些
              1. 因果图 首先要划分 输入和结果
              2. 输入 和 输入之间, 是有关系的
                1. 这些关系, 需要用 约束 来限制
                2. 结果之间, 也是如此
              3. 画图第一步, 摆放输入 和 结果
                1. 注意 约束关系
                2. 不要划线
                  1. 这只是个 模板
              4. 根据 可能的输入, 通过 连线, 来构造结果
                1. 注意
                  1. 一种场景, 就要用一张图
                    1. 我之前天真的以为一张图上, 要包含所有的可能
                      1. 哈哈哈, 太天真了
              5. 最后, 将结果 填入到 正交表 里
                1. 是的, 你没看错
                  1. 正交表
                  2. 这个东西, 只是 正交表 法下面的一个
                    1. 可以理解为 插件 吧
    3. 为什么不讲

      1. 我也不懂
      2. 真的有人用吗?
        1. 混迹几家中小公司, 没见一个开发, 测试在用
        2. 大公司如果有人用, 请原谅我的见识浅薄
  3. 后续

    1. 当然是 白盒用例设计 了
posted @ 2019-11-21 21:55  轩辕拾銉  阅读(385)  评论(0编辑  收藏  举报