zoukankan      html  css  js  c++  java
  • 软件测试基础 (二)—— 测试用例

    软件测试基础 (二)—— 测试用例

    一、 什么是测试用例

    测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。

    二、为什么要写测试用例

    • 深入理解需求,理请思路,避免遗漏测、重复测,发现需求中的问题,提高测试效率

    • 跟进测试进度,简单计算 执行测试的完成度= 执行的测试用例/未执行的测试用例

    • 历史参考,功能相似的模块可以参考历史用例,给新来的同事快速熟悉业务

    三、测试用例的设计

    用例的要素:

    • 用例编号

    • 所属项目

    • 用例标题

    • 用例级别

    • 前置条件

    • 输入

    • 操作步骤

    • 预期结果

    用例的3A原则(最不可缺的用例要素有哪几个)

    • Arrange: 初始化测试对象或者准备测试数据 —— 前置条件/数据
    • Act : 调用被测方法 —— 用例执行步骤(操作步骤)
    • Assert: 断言 —— 预期结果

    黑盒测试:设计和执行测试过程中,不考虑被测程序内部的结构,将被测程序视作不透明的黑盒子,只考虑输入内容和输出结果,发现软件的缺陷的过程

    黑盒测试的方法:

    1. 等价类
    2. 边界值
    3. 判定表
    4. 因果图
    5. 正交法
    6. 场景法
    7. 错误推断法

    3.1 等价类

    等价类划分

    • 将程序所有可能的输入进行合理分类,再从每一个分类中选取少数具有代表性的数据作为测试用例。

    • 有效等价类:符合需求说明的,合理的输入数据的集合

    • 无效等价类:不符合需求说明的,无意义的输入数据的集合

    等价类设计用例步骤

    1. 划分有效等价类和无效等价类
    2. 为等价类表中的每一个等价类分别规定一个唯一的编号
    3. 设计一个新用例,使它能够尽量多覆盖尚未覆盖的有效等价类。重复该步骤,直到所有的有效等价类均被用例覆盖
    4. 设计一个新用例,使它仅覆盖一个尚未覆盖的无效等价类。重复该步骤,直到所有的无效等价类均被覆盖
    有效等价类 编号 无效等价类 编号
    1 ~ 100 整数 (1) 1 ~ 100 小数 (2)
    - 小于1的数字 (3)
    - 大于100的数字 (4)
    - 字母 (5)
    - 特殊符号 (6)
    - 中文 (7)
    - (8)
    - 负数 (9)

    3、设计一个新用例,使它能够尽量多覆盖尚未覆盖的有效等价类。重复该步骤,直到所有的有效等价类均被用例覆盖
    4、设计一个新用例,使它仅覆盖一个尚未覆盖的无效等价类。重复该步骤,直到所有的无效等价类均被覆盖

    用例编号 覆盖等价类 输入 预期结果
    1 (1) 1 ~ 100 整数 50 系统提示输入正确
    2 (2) 1 ~ 100 小数 50.1 系统提示:请输入1~100的整数
    3 (3) 小于1的数字 0 系统提示:请输入1~100的整数
    4 (4) 大于100的数字 150 系统提示:请输入1~100的整数
    5 (9) 负数 -50 系统提示:请输入1~100的整数
    6 (6) 特殊符号 @#¥%…… 系统提示:请输入1~100的整数
    7 (7) 中文 测试中文输入 系统提示:请输入1~100的整数
    8 (5) 字母 a 系统提示:请输入1~100的整数
    9 (8) 空 系统提示:请输入1~100的整数

    3.2 边界值

    对输入或输出的边界值进行测试

    特点:

    • 不是从一个等价类中任选一值做代表,而是寻一个或几个值,使得该等价类的边界值成为测试关注的目标
    • 边界值分析法作为对等价类划分法的补充
    • 边界值分析法不仅关注输入条件,它还根据输出的情况(输出等价类)设计测试用例;例如:计算结果的小数点精确位数

    3.3 判定表

    判定表是分析和表达多逻辑条件下执行不同操作的工具。将复杂的问题按照各种可能的情况全部列举出来,某些操作的实施依赖于多个逻辑条件的组合,针对不同逻辑条件的组合值,分别执行不同的操作

    • 条件桩:需求规格说明书定义的被测对象的所有输入

    • 条件项:针对条件桩可能输入数据值

    • 动作桩:针对条件,被测对象可能采取的所有操作

    • 动作项:针对动作桩,被测对象相应的可能取值

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

    化简:就是把相同规则进行合并。合并的标准是,有两条或多条规则具有相同的动作,并且其条件项之间存在着极为相似的关系

    需求:订购单的检查规则为:若金额超过600元,又未过期,则发出批准单和提货单;若金额超过600元,但过期了,则不发批准单;如果金额低于600元,则不论是否过期都发出批准单和提货单,在过期的情况下还需发出通知单。(没有批准单就没有提货单)

    列出所有条件桩和条件项

    条件桩 条件项
    订购金额是否大于600元 Y —>大于600元
    N —>小于600元
    订单是否过期 Y —>订单过期
    N —>订单没过期

    列出所有的动作桩和动作项

    动作桩 动作项
    发出批准单 X
    发出提货单 X
    发出通知 X

    生成判定表(先条件组合,再看结果)

    简化判定表

    删除序号1组合

    3.4、因果图

    用图解的方法表示输入的各种组合关系,写出判定表,从而设计相应的测试用例。 适用范围:适用于分析程序输入条件的各种组合情况,以及输入与输出之间的依赖关系。

    • 因果图的“因”——输入条件
    • 因果图的“果”——输出结果

    使用步骤

    1. 根据程序规格说明书描述的语义内容,分析并确定 “因” 和 “果”;

    2. 将 “因” 和 “果” 表示成 “因果图”;

    3. 在因果图上使用若干个约束符号来标明约束条件;

    4. 将得到的因果图转换成判定表;

    5. 为判定表中每一列所表示的情况设计一个测试用例。

    因果图

    《因果图法》-有这篇就够了

    3.5、正交法

    因果图和判定表:依据方法中的主要思想,同类输人间不可同时发生,不同类型输人间必须同时存在其中之一 ,所以将需求中的各项输入分别组合一一遍。常常不可避免地产生一个非常庞大的组合数字,不合实际情形,如3X3X3X3=81次组合(全排列)

    正交试验法即使用事先已创建好的表格一正交表,来安排试验并进行数据分析的一种科学试验设计方法,借助正交表可从大量的试验数据(测试用例)中筛选出适量的、有代表性的值,从而协助合理地安排试验(测试),满足了“在简化用例的同时尽量充分开展测试”的需求。

    测试用例设计之正交表法详解

    3.6 、场景法

    尽可能真实模拟用户操作的一种用例设计分析方法

    场景法主要基于 2 个层面开展

    1. 业务(需求)层面:对被测软件的重要功能、业务逻辑(系统要实现什么、如何实现?)、行业背景深入理解
    2. 技术层面:基于等价类划分中的有效等价类——模拟用户正确操作;无效等价类——模拟用户错误操作

    核心概念:

    1. 基本流(正确流、有效流):模拟用户正确的操作流程

    2. 备选流(错误流、无效流):模拟用户错误的操作流程

    设计步骤

    1. 根据说明,描述出程序的基本流及各项备选流
    2. 根据基本流和各项备选流生成不同的场景
    3. 对每一个场景生成相应的测试用例
    4. 对生成的所有测试用例重新审核,去掉多余的测试用例,测试用例确定后,对每一个测试用例确定测试数据值

    3.7 错误推测法

    基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例的方法。








    参考文章和推荐阅读

    《判定表驱动法》-有这篇就够了

    浅谈测试用例

    《因果图法》-有这篇就够了

    测试用例设计之正交表法详解

    《软件测试技术及用例设计实训》

    小马的测试用例那些事 测试用例设计之场景图法

    测试基础 软件测试用例设计方法-场景法

    黑盒测试--场景法




  • 相关阅读:
    牛客IOI周赛17-提高组 卷积 生成函数 多项式求逆 数列通项公式
    6.3 省选模拟赛 Decompose 动态dp 树链剖分 set
    AtCoder Grand Contest 044 A Pay to Win 贪心
    5.29 省选模拟赛 树的染色 dp 最优性优化
    luogu P6097 子集卷积 FST FWT
    CF724C Ray Tracing 扩展欧几里得 平面展开
    5.30 省选模拟赛 方格操作 扫描线 特殊性质
    5.29 省选模拟赛 波波老师 SAM 线段树 单调队列 并查集
    Spring main方法中怎么调用Dao层和Service层的方法
    Bug -- WebService报错(两个类具有相同的 XML 类型名称 "{http://webService.com/}getPriceResponse"。请使用 @XmlType.name 和 @XmlType.namespace 为类分配不同的名称。)
  • 原文地址:https://www.cnblogs.com/snailrunning/p/14477514.html
Copyright © 2011-2022 走看看