【软件测试】(四)测试用例怎么写

2023-11-04


测试用例基本要素

之前文章提到过,测试用例是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。

1. 评价好的测试用例的标准

对比好坏用例的评价标准:
(1)用例表达清楚,无二义性;
(2)用例可操作性强;
(3)用例的输入与输出明确,一条用例只有一个预期结果;
(4)用例的可维护性好(存放时避免PDF形式);
(5)用例对需求的覆盖率高。
(6)暴露程序的Bug能力强。

注意:应该避免测试用例多种情况混合在一起,容易漏测!!

2. 根据需求写测试用例

(1)首先要保证需求的合理性和正确性,要先验证需求;
(2)分析需求,把大需求细化成小需求,根据每一个小需求提炼出功能点,根据每一个功能点发散的考虑它的测试用例,去写测试用例(用具体的设计测试用例的方法)。

3. 测试用例的设计方法

3.1 基于需求进行测试用例的设计

基于需求设计测试用例是测试设计和开发测试用例的基础。

第一步就要分析测试需求,验证需求是否正确、完整、无二义性,并且逻辑自洽。在需求正确的基础上细化测试需求,从测试需求提炼出一个个测试点或者测试项,然后根据每一个测试点进行测试用例的设计;

在分析测试需求时,一般分为功能测试需求和非功能测试需求。

1. 功能需求测试分析

对于功能测试中,可以借助功能框图来帮助我们进行测试的需求分析。概括起来,功能测试需求包括以下,通常包括以下几个方面。
(1)系统各个功能界面的验证
(2)借助业务把功能串起来进行测试
(3)功能的一致性,交互性(多功能互操作)的测试
(4)系统的不同输入,结果输出的业务数据测试。
(5)功能的错误操作,异常操作的测试(属于负面测试)
(6)功能实现用到的算法验证,有时需要用运代码评审
(7)用户操作的易用性,用户体验,往往结合功能测试同时验证

针对具体的需求,可以根据业务分类,用户角色(餐厅的会员系统)或者用户操作区域等将系统的功能分解成若干个功能模块,然后按照功能模块分别进行测试需求分析。按照功能模块划分,业务模块划分是最常见的做法。

2. 非功能需求测试分析

非功能测试需求主要涉及性能,安全性,可靠性,兼容性,易维护性和可移植性等。

从测试需求分析来看,每一类非功能特性测试都需要根据需求单独分析。他们之间可能会存在相互影响,如安全性越高,就越有可能给易用性,性能带来更大的挑战。
这里要说明的是对于每一个应用软件系统,非功能特性的质量需求都是存在的,但是不同的项目类型对各个非功能特性的要求是不一样的,这个需要根据具体的项目、具体需求和不同产品应用的特点进行分析。

(1)纯客户端软件,比如字处理软件(Word,PPT),媒体(音频/视频)播放软件(电脑自带的)等。这类软件对系统的功能测试要求是最低的,但是对兼容性和稳定性,可移植性有一定的要求。
(2)企业内部的客户端/服务端(C/S)应用系统。比如电子邮件,即时通信系统(飞Q,企业QQ)等,在系统功能测试需求上比纯客户端复杂,要求功能正确,稳定性能好。但是整体上看,对性能,安全性,兼容性要求不高。
(3)外部大型复杂网络应用系统,比如电子商务,网上银行,视频网站(腾讯,优酷)等,除了有复
杂的系统的功能测试需求外,在系统的性能,安全性,兼容性,容错性,可靠性等都有很高的要求。

3.2 具体的设计用例的方法

3.2.1 等价类

为了解决测试用例无法穷举的情况,把输入分成若干个等价类,每一个等价类当中选一个测试用例进行测试,如果这个测试用例测试通过,我们就认为这个测试用例代表的等价类测试通过。

分为有效等价类和无效等价类。

  • 有效等价类:对于程序的规格说明书是合理的、有意义的输入数据构成的集合,利用有效等价类验
    证程序是否实现了规格说明中所规定的功能和性能
  • 无效等价类:根据需求说明书,不满足需求的集合。

等价类只考虑输入域的分类,没有考虑输入域的组合,需要其他的设计方法和补充。

3.2.2 边界值

边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。

一般设计测试用例的时候会把等价类和边界值结合在一起。

3.2.3 错误猜测法

错误猜测法是对被测试软件设计的理解,过往经验以及个人直觉,推测出软件可能存在的缺陷,从而针对性地设计测试用例的方法。

这个方法强调的是对被测试软件的需求理解以及设计实现的细节把握,还有个人的经验和直觉。
错误推测法和目前流行的“探索式测试方法”的基本思想一致,这类方法在敏捷开发模式下的投入产出比很高,被广泛应运于测试。

根据测试人员的知识,经验去推断可能会出现问题的功能模块,有针对性的去设计测试用例

是一种补充的设计测试用例的方法,测试人员可以用其他设计测试用例的方法设计需求的测试用例,用错误猜测法作为一种补充的方式。

这个方法的缺点是难以系统化,并且过度依赖个人能力。

3.2.4 场景设计法

把各个孤立的功能点按照一定的策略组合起来,形成一个应用场景。

现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。该方法可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,是测试用例更容易理解和执行。

典型的应用是用业务流把各个孤立的功能点串起来,为测试人员建立整体业务感觉,从而避免陷入功能细节,忽视业务流程要点的错误倾向。

总结:找出场景当中的每一个功能点,根据每一个功能点的正常和异常的情况去设计测试用例。

例如:ATM取款机取款场景(流程)

插卡——选择语言——输入密码——输入取款金额——取钱——退卡

  1. 成功插卡进ATM机,选择合适的语言,密码输入正确,输入小于银行卡金额的钱数,成功取钱,退卡(以上所有操作都在银行限定的长时间不操作吞卡时间范围之内)
  2. 卡插反了,ATM机给出“请重新插卡!”的提示,重新正确插卡,选择合适的语言,密码输入正确,金额输入正确,成功取钱,退卡;
  3. 插入了一个无效卡,ATM机给出“请重新插卡!”的提示,重新正确插卡,选择合适的语言,密码输入正确,金额输入正确,成功取钱,退卡;
  4. 插入消磁的银行卡,ATM机给出“该银行卡无效!”取款失败;
  5. 插入注销后的银行卡,ATM机给出“该银行卡无效!”取款失败;
3.2.5 因果图

因果图是一种简化了的逻辑图,能直观地表明程序输入条件(原因)和输出动作(结果)之间的相互关系。因果图法是借助图形来设计测试用例的一种系统方法,特别适用于被测试程序具有多种输入条件、程序的输出又依赖于输入条件的各种情况。

当输入有多个,不同的输入组合有不同的输出时,可以使用因果图法来设计测试用例。

因果图的需要掌握的基本知识:恒等,与,或,非。

1. 恒等
如果原因为真,那么结果必定为真。 例如:动物园运来大熊猫,动物园一定有大熊猫。
2. 与:
输入有多个条件,多个条件都为真的时候,输出为真。
3. 或:
输入有多个条件,其中一个条件为真,输出为真。
4. 非:
输入为真,输出为假。

如何使用因果图法设计测试用例?
1)找出所有的输入和输出;
2)确定不同的输入组合和输出之间的关系;
3)用因果图来表示输入和输出之间的关系;
4)根据因果图画判定表;
5)根据判定表写测试用例;

练习:
在这里插入图片描述
(1)输入:订单已提交,订单合计金额大于300元,有红包
输出:有优惠 没有优惠
(2)订单已提交,合计金额大于300元,没有红包,有优惠。
订单已提交,合计金额小于300元,有红包,有优惠。
订单已提交,合计金额大于300元,有红包,有优惠。
订单已提交,合计金额小于300元,没有红包,没有优惠。
订单没有提交,没有优惠(红包和金额组合4种情况略)。
(3) 因果图
在这里插入图片描述
(4)根据因果图画判定表
在这里插入图片描述
(5)写测试用例
(正式写测试用例的时候,一个都不能漏。最后四个测试用例必须分开写,分开测试。)
订单已经提交,金额大于300,有红包,有优惠
订单已经提交,金额大于300,没有红包,有优惠
订单已经提交,金额小于300,有红包,有优惠
订单已经提交,金额小于300,没有红包,没有优惠
订单没有提交,金额大于300,有红包,没有优惠
订单没有提交,金额大于300,没有红包,没有优惠
订单没有提交,金额小于300,有红包,没有优惠
订单没有提交,金额小于300,没有红包,没有优惠

3.2.6 正交设计法

研究多因素、多水平的一种测试用例的设计方法。
根据正交性,在所有的试验组合中找到最优的组合进行测试,通过这些最优组合的解来分析验证整个试验整体的结果。
特点:经济、高效

举个例子:邮箱注册(只讨论以下几个项的填写和不填写)
姓名,email,密码,确认密码,验证码,总共32种情况。
并不是32种情况都要测试,只要选出这几个输入(因素)的最优的取值(水平)组合进行测试。
较少的测试用例去判断整个功能的情况。

因素:输入
水平:输入的取值

正交表的组成:
:因素数(C),输入的个数
水平数:每一个因素的取值的最大个数(T)
:L=(水平数-1)*因素数+1

正交表的性质:
1:每一列各数据出现的次数一样多;
2:不同两列不同的数据组合出现的次数一样多。

根据正交表设计法设计测试用例的步骤:
(1)确定因素(输入)
(2)确定每一个因素的水平
(3)找出因素数和水平数
(4)根据因素数和水平数确定正交表的行和列
(5)根据正交表的性质去填充正交表里的数据
(6)根据正交表的每一行设计测试用例
(7)补充正交表里面没有的,但是个人认为可能比较关键的测试用例

例:邮箱注册测试(只讨论以下几个项的填写和不填写)
姓名,email,密码,确认密码,验证码
使用正交设计法:
(1)姓名,email,密码,确认密码,验证码;
(2)填写,不填写
(3)因素数:5 水平数: 2
(4)列=因素数=5,行=(水平数-1)*因素数+1=6
(5)填充数据
在这里插入图片描述
(6)测试用例:
姓名填写,email不填写,密码填写,确认密码填写,验证码不填写,注册失败。
姓名不填写,email填写,密码不填写,确认密码不填写,验证码不填写,注册失败。
姓名填写,email不填写,密码填写,确认密码不填写,验证码填写,注册失败。
姓名填写,email不填写,密码不填写,确认密码填写,验证码不填写,注册失败。
姓名不填写,email填写,密码填写,确认密码不填写,验证码填写,注册失败。
姓名不填写,email填写,密码不填写,确认密码填写,验证码填写,注册失败。
(7)补充测试用例
姓名填写,email填写,密码填写,确认密码填写,验证码填写,注册成功。
姓名不填写,email不填写,密码不填写,确认密码不填写,验证码不填写,注册失败。

小结:以上六种设计测试用例的方法都属于黑盒测试设计测试用例的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【软件测试】(四)测试用例怎么写 的相关文章

  • Shell脚本之for循坏语句

    目录 一 for循环语句 1 1 列表循环 1 2 不带列表循环 1 3 类C风格的for循环 1 4 for循环案列 二 总结 一 for循环语句 语法结构 列表循环 不带列表循环 类c风格的for循环 1 1 列表循环 1 格式1 fo
  • stm32 定时器TIM时钟步骤

    1 TIM3 时钟使能 RCC APB1PeriphClockCmd RCC APB1Periph TIMx ENABLE 时钟使能 2 初始化定时器参数 设置自动重装值 分频系数 计数方式等 定时器的初始化函数TIM TimeBaseIn
  • 高性能TCPServer

    最近两天正在学习TCPServer 在网上看到比较好的两篇文章 在这里记录下来 High Performance NET Socket Server Using Async Winsock 原文地址 Introduction Sockets
  • 手机端开发(uni-app、vant、mui)优缺点分析

    疫情期间 使用过uni app 最近又接触了vant 但是由于项目部署原因 项目不支持前后端分离 仅支持静态页Html css项目 所以最后用mui开发一套 今天就介绍一下 我用过这三个框架的看法以及他们之间的优缺点 一 优点 1 uni
  • 【开放域目标检测】三:Learning transferable visual models from natural language supervision论文补充

    这里主要再简单看一下框架图 训练比较简单 使用的是对比学习的方法 做图文匹配的任务 计算相似度 给定batch N N N的image text pairs CLIP预测 N N

随机推荐

  • Devpress (DxReport)使用ReportDesigner (一) 基本功能

    1 Devpress DxReport 编辑 1 新建一个XtraReport 2 在报告上点右键添加元素 元素说明 1 其中有报告头 报告尾 页头 页尾 组头 组尾 详细 2 一份报告只有一个报告头一个报告尾 里面的元素只也现一次 3 页
  • 删掉node包

    删掉node包 删掉node包 命令 npm install rimraf g rimraf node modules
  • WIN11更改WSL2的存放路径

    目前在网上常常能查阅到的方法为先导出系统发行版 子系统名称 为tarball文件 然后再重新导入tarball为新的发行版 并设置新的安装位置 之后再删除旧的发行版 此方法也是微软官方推荐的方法 详见 如何备份我的 WSL 发行版 或者如何
  • 12月大事件日历

    12月大事件日历 11月30 12月2日 中国光伏行业年度大会 12月1日 印度央行启动零售数字卢比试点 12月2日 美国11月非农数据失业率 12月4日 OPEC 会议 12月5日 G7对俄 原油价格上限 生效 12月7日 EIT能源展望
  • Vue实现加载效果

    Vue实现加载效果 div div loading默认为false 点击查询按钮时加载页面 QueryData this loading true const iframe this refs top this refs top src 要
  • 【Shell牛客刷题系列】SHELL11 转置文件的内容:继续awk命令的升级打怪之旅

    该系列是基于牛客Shell题库 针对具体题目进行查漏补缺 学习相应的命令 刷题链接 牛客题霸 Shell篇 该系列文章都放到专栏下 专栏链接为 专栏 Linux 欢迎关注专栏 本文知识预告 首先简单学习了rs命令 这个命令不常用 了解即可
  • 三种Python中两个列表数字“相加”的方法

    目录 for循环 map numpy 最近我在用Python处理数据时 需要将列表数据相加实现 累积 效果的 需要注意 我这里所说的列表相加 并非是下面这种 列表元素相加 的情况 list 1 1 2 3 list 2 4 5 6 prin
  • 虚拟机搭建Hadoop集群环境-CentOS篇

    文章目录 Linux环境安装 虚拟机环境准备 虚拟机克隆 修改虚拟机IP 修改主机名 创建普通用户 重启虚拟机 使用Xshell远程访问 集群搭建 安装 JDK 安装 Hadoop 关闭防火墙 其它节点虚拟机克隆 配置 SSH 无密钥登录
  • Qt5.12+VS2017环境下编译QtAV视频库

    1 QtAV是一个跨平台的开源视频库 使用了ffmpeg核心 https github com wang bin QtAV 版本号1 12 0 2 安装好Qt 同步QtAV视频库 在github主页下载相应的依赖库 我使用了QtAV dep
  • RestTemplate 的用法

    1 引入对应依赖 2 private final RestTemplate restTemplate 3 上代码 Service Slf4j public class CspWarehouseServiceImpl implements I
  • 小红书app复制链接转换为可直接访问链接

    当你在小红书复制某篇笔记链接 黏贴出来是这个样子的 这种链接只有打开小红书app才能够访问 那么怎么把这种链接转换为可直接访问的格式呢 执行下方代码即可 import requests import json def shortToLong
  • 代码随想录算法训练营19期第56天

    583 两个字符串的删除操作 代码随想录 初步思路 动态规划 总结 1 第一步先求出两个字符串的最长公共子序列长度 2 删除的最少步数 两个字符串的总长度减去两个最长公共子序列的长度 用时 45分钟 72 编辑距离 代码随想录 初步思路 动
  • 【LeetCode】二叉树题总结(持续更新)

    文章目录 理论 144 二叉树的前序遍历 递归与迭代 94 二叉树的中序遍历 递归与迭代 145 二叉树的后序遍历 递归与迭代 102 二叉树的层序遍历 226 翻转二叉树 101 对称二叉树 222 完全二叉树的节点个数 利用完全二叉树性
  • 前端CSS高频面试题附答案(2023)

    什么是CSS Box模型 它有哪些组成部分 CSS Box模型是指用于计算网页布局中元素大小 位置和边距的一种模型 它由四个组成部分组成 内容区域 即元素的实际内容 内边距 元素周围的空白区域 边框和外边距 什么是BFC 块级格式化上下文
  • Flask使用MySQL指南

    一 首先进入开场白 场景 几个概念和基础知识 1 SQLAlchemy alchemy 单词译为 炼金术 魔力 即表示 SQLAlchemy是个有魔力的东西 官网 http www sqlalchemy org 百度搜索SQLAlchemy
  • 《这就是区块链》之区块链基础(4)--去中心化概念

    如上图所示 在之前的3篇文章中 我们讲了区块链的加密系统以及区块链的链表结构 对区块链的 物理结构 有了初步的认识 但是 聪明的你肯定会想到 哈希算法和数字签名是互联网初期的产物 根本不是区块链特有的东西 对 如果区块链仅仅是哈希指针的话
  • metasploit简单使用-生成木马反弹shell连接

    metasploit简单使用 在Kali中运行msfconsole 运行下列命令生成test exe木马 use evasion windows windows defender exe set filename test exe set
  • python pip install error: Microsoft Visual C++ 14.0 is required

    现象 Python 安装某些包的时候 由于需要C 进行编译 可能会出现 Microsoft Visual C 14 0 is required 比如 pip install marisa trie 解决办法 1 下载编译好的 whl 文件
  • 继电器控制电路原理解析说明

    继电器驱动电流一般需要20 40mA或更大才能使继电器吸合 继电器的线圈电阻100 200欧姆 因此必须进行扩流 即驱动 图1 21所示为用NPN型三极管驱动继电器的电路图 图中阴影部分为继电器电路 继电器线圈作为集电极负载而接到集电极和正
  • 【软件测试】(四)测试用例怎么写

    文章目录 测试用例基本要素 1 评价好的测试用例的标准 2 根据需求写测试用例 3 测试用例的设计方法 3 1 基于需求进行测试用例的设计 3 2 具体的设计用例的方法 3 2 1 等价类 3 2 2 边界值 3 2 3 错误猜测法 3 2