常见的软件测试用例设计方法有哪些?

常见的软件测试用例设计方法,个人认为主要是下面这6种:

1)流程图法(也叫场景法)
2)等价类划分法
3)边界值分析
4)判定表
5)正交法
6)错误推测法

这6种常见方法中,我分别按照定义、应用场景、使用步骤、案例讲解这4个部分进行讲解。

所以本文行文结构如下

1、每种用例方法定义、应用场景、使用步骤、案例讲解
2、每种用例方法应用场景的区别
3、深入学习资料分享

一、流程图法(也叫场景法)

1、使用场景

所谓流程图法,就是专门针对软件业务流程测试的方法。

2、什么是业务流程?

业务流程,是指客户在使用软件的过程中,为了达成自身的所想要的目的,按照指定的顺序去操作软件的功能,这样的操作过程叫业务流程。
业务流程是多个功能的组合。比如:把大象放进冰箱就是一个业务流程。

图片

3、使用频率

高。
未来不管面向什么项目,都是为了实现用户价值去开发的,所以一定会有业务场景测试。也就意味着一定会使用到流程图法。

流程图法测试不需要深入功能内部详细测试,主要测试流程。

4、使用步骤

1. 根据流程图找出路径
2. 编写测试用例(从开始到结束为一条路径,有多少条路径就有多少条用例)
路径数 = 判定节点数 + 1

5、测试流程使用案例

流程图举例如下:

图片

 
测试用例设计步骤:
1)找出流程图的路径路径数 = 3 + 1 = 4
2)编写测试用例① 结账流程成功② 结账流程失败-登录失败③ 结账流程失败-选择桌台失败④ 结账流程失败-支付失败

二、等价类划分法

1、概念

等价类定义:满足某种共同特征的数据子集
等价类分类:
有效等价类,满足需求的数据集合
无效等价类,不满足需求的数据集合

2、使用场景

没法穷举的,或数据集过大的数据集。
比如手机号,无法穷举。
比如一年365天,虽然有限,但数据集过大。
那为了缩小测试范围,就可以考虑使用等价类划分法。

3、使用频率

该方法的使用频率高。
针对:需要有大量数据测试输入, 但是没法穷举测试的地方。
比如:输入框、下拉列表、 单选复选框

4、使用步骤

步骤1:分析需求
步骤2:划分等价类—等价类表
等价类划分:按照 1)长度(空)2)类型 3)规则 去设置无效等价类
步骤3:设计用例原则
① 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类。
② 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类。

5、使用案例

注册邮箱验证
要求:
1. 6-18个字符
2. 包含数字、字母和下划线
3. 必须以字母开头

解题思路:

步骤1:分析需求

图片

步骤2:划分等价类——等价类表

图片

步骤3:设计用例原则

① 先写能覆盖所有有效测试点的正向用例

一条正向用例,覆盖编号1+2+3这3条有效等价类

图片

② 剩下的所有无效测试点,再分别和正确的测试点组成反向测试用例(有多少无效测试点,就要设置多少条反向测试用例)

有6个无效测试点,就要另外再设置6条反向测试用例。

图片

三、边界值分析法

1、概念

规律:边界和边界内的值,更容易发现错误
所以要优先选取正好等于、刚好大于、刚好小于边界的值作为测试数据。

举例数据范围为 [-99,99]
上点:边界上的点(正好等于,下图中的绿色)
离点:距离上点最近的点(刚好大于、刚好小于, 下图中的黄色)
内点:范围内的点(区间范围内的数据,下图中的紫色)
其中,上点和内点【必选】。

图片

2、使用场景

输入范围有边界。意味着使用场景只能是数字或时间类型。
边界值分析法一般都是结合等价类使用。

在等价类的基础上针对有边界范围的测试数据输入的地方(重点关注边界)
常见词语描述:大小、 尺寸、 重量、 最大、 最小、 至多、 至少等修饰词语
典型代表:有边界范围的输入框类测试

疑问:中英文字符串可以使用边界值吗?

中英文没有边界,意味着无法使用边界值。

3、使用步骤

边界值设计用例步骤:

1. 明确需求
2. 确定有效和无效等价类
3. 确定边界范围值
4. 提取数据编写测试用例

4、使用案例​​​​​​​

需求:验证QQ账号的合法性要求: 6~10位自然数

1. 明确需求
2. 确定有效和无效等价类
3. 确定边界范围值

图片

4. 提取数据编写测试用例

图片

四、判定表法

1、定义

判定表法,是一种以表格形式,表达多条件逻辑判断的工具。

2、使用场景

1)多条件组合的测试 且 2)各条件之间要有约束(依赖)

图片

上方截图中,通过表格将各种组合情况都列出来,非常清晰。其中:

灰色背景色是条件桩:列出问题中的所有条件,列出条件的次序无关紧要。
绿色背景色是动作桩:列出问题中可能采取的操作,操作的排列顺序没有约束。
黄色背景色是条件项:列出条件对应的取值,所有可能情况下的真假值。
蓝色背景色是动作项:列出条件项的、各种取值情况下应该采取的动作结果。

3、判定表使用步骤

Step1、明确需求
Step2、画出判定表

1)列出条件桩和动作桩
2)填写条件项,对条件进行全组合
3)根据条件项的组合确定动作项
4)简化、合并相似规则(有相同的动作)

step3、根据规则编写测试用例

4、使用案例

订购单检查。规则:
1)如果金额大于500元,又未过期,则发出批准单和提货单;
2)如果金额大于500元,但过期了,则不发批准单与提货单;
3)如果金额小于等于500元,则不论是否过期都发出批准单和提货单;
4)在过期的情况下不论金额大小还需要发出通知。

Step1、明确需求

条件桩,两个

金额是否大于500元
订单状态是否过期

动作桩,三个

发出批准单
发出提货单
发出通知单

Step2、画出判定表

1) 列出条件桩和动作桩

图片

2)填写条件项,对条件进行全组合

图片

3)根据条件项的组合确定动作项

图片

4)简化、合并相似规则(有相同的动作)

没有,不用操作。

step3、根据规则编写测试用例

其中,判定表中贯穿条件项和动作项的一列就是一条规则,每条规则要配上一条测试用例。

图片

五、正交法

1、定义

正交法,是通过正交表选择部分有代表性的组合进行测试(降低测试成本)

正交表,是经过统计学的实验,分析得来的一个数学结果。它相当于是在大数据集合当中,按照数学的特性去均匀的选择挑选测试数据,以便大幅缩小测试范围。

2、应用场景

各条件相互独立,每一种有效用例里的组合数过多,而且这些组合都是有效数据。举例:

图片

比如,要为购票系统设置测试用例。到达北京的出发地至少有300个,以北京为出发地的目的地也至少有300个,加上出发日期,一年365天,取300天。

请问,覆盖出发地,目的地,出发日3个条件的测试用例,可以写多少条?

答案:300 x 300 x 300 =9w x 300= 2700w 条。

但由于城市名无法设置子集边界,不好使用等价类方法来缩小范围,那你就要考虑正交去降低了。

3、使用步骤

1. 分析需求,确定因素(条件)和水平(条件取值)
2. 选择正交表进行映射
3. 设计测试用例:正交表一行对应一条用例
4. 根据需求补充用例:常用的组合项

4、案例讲解

图片

4.1,分析需求,确定因素(条件)和水平(条件取值)​​​​​​​

因素:出发地、目的地和出发日期 因素数:3个水平:填写、不填写   水平数:2个

4.2,选择正交表进行映射

图片

​​​​​​​
正交表列名:条件具体取值替换。水平:“填写”替代 1、“不填写”替代 2。

图片

4.3,设计测试用例:正交表一行对应一条用例

 

case1: 出发地:填写+目的地:填写+出发日期:填写
case2: 出发地:填写+目的地:不填写+出发日期:不填写
case3: 出发地:不填写+目的地:填写+出发日期:不填写
case4: 出发地:不填写+目的地:不填写+出发日期:填写

4.4, 根据需求补充用例:常用的组合项

如果某些组合情况,用户经常使用,还可以进行适度的用例完善。

六、错误推测法

1、定义

通过【经验】推测系统可能出现的问题。

可以作为正常用例方法的补充存在。

2、场景

2.1、 时间紧任务量大时,根据之前项目类似经验找出易出错的模块重点测试

2.2、 时间宽裕通过该方法,列出之前出现问题较多的模块再次测试

3、使用方法

根据【经验】和【直觉】列举出可能出现问题的清单,根据清单分析问题可能原因,推测发现缺陷。

4、案例讲解

比如,输入框填入“空”。

七、最后用例方法总结

图片

以上六种用例,最重要的是区别每种用例方法的应用场景。简单总结如下:

1)流程图法(也叫场景法),主要针对业务场景,也就是多个功能的组合使用场景。

2)等价类划分法,主要针对数据很大,且数据主要为数字、日期类型。

3)边界值, 确认边界,要结合等价类使用

4)判定表, 一条测试用例覆盖多个条件,且条件之间有约束

5)正交法, 数据很大,但是无法使用等价类缩小范围(比如城市名,浏览器名称不是数字、日期类型),就用正交表来缩小范围

6)错误推测法,有经验的人使用

八、深入学习资料推荐

测试用例的撰写是软件测试工作的最基础和最核心的工作,一定要拿掌握。

所谓最基础,就是无论你是低端的手工测试,还是高端的测试开发,测试用例的撰写你都要会。

所谓最核心,就是无论你是做互联网的软件测试,还是做硬件测试,还是做软硬结合的车载测试,测试用例的撰写你也都要懂。

1)如果你通过上述文字介绍,搞懂了测试用例的六种设计方法,那么建议一定要去了解测试用例8大要素的撰写方法,狠戳下方链接:

《感觉测试用例好难写怎么办?95 赞同 · 38 评论回答》
https://www.zhihu.com/question/393584042/answer/2957750770

当然,下面这些也可以学习下:

《测试用例是怎么写的?144 赞同 · 19 评论回答》
https://www.zhihu.com/question/272193009/answer/2962583197

《关于基本功能测试用例,到底是传统的表格(Excel)形式好还是思维导图(Xmind、MindManager等)模式好?27 赞同 · 0 评论回答》
https://www.zhihu.com/question/27023220/answer/3054114209

《在国外,资深的软件测试人员大多是手动测试,他们厉害之处在于测试用例的设计,但在国内,很多测试人员都把自动化测试当成很厉害的资本,为什么?636 赞同 · 69 评论回答》
https://www.zhihu.com/question/19721142/answer/1633490943

《有哪些比较好的测试用例管理工具?115 赞同 · 18 评论回答》
https://www.zhihu.com/question/26898212/answer/2940946212

2)如果你通过上述文字介绍,还是不太清晰6种设计方法,希望能够有相关视频深入学习,那就狠狠点击下方视频:

6个视频:

1)《测试入门_3天黑马手工测试理论+6天实战完整分享_适合0基础》 
本视频b站链接:https://www.bilibili.com/video/BV1at4y1Y7AN

2)《实战项目带小白入职7-12k功能测试岗位,仅7小时【史上最快】》
本视频b站链接:https://www.bilibili.com/video/BV1kw411o756

3)《功能测试_6天黑马手工测试2021版》
本视频b站链接:https://www.bilibili.com/video/BV1QM4y137xX

4)《测试入门_9天黑马手工测试理论+实战完整分享_适合0基础》【前三天视频中就涉及测试用例,后6天就是手工测试实战】
本视频b站链接:https://www.bilibili.com/video/BV1at4y1Y7AN

5)《黑盒测试用例设计》
本视频b站链接:https://www.bilibili.com/video/BV1YT4y137WA

6)《移动端App测试_最新2020教学视频》 
本视频b站链接:https://www.bilibili.com/video/BV12o4y1k7Kb

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/83454.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

# 59. python的类与对象-更新

[目录] 文章目录 59. python的类与对象-更新1.面向对象编程2.什么是类3.什么是对象4.如何描述对象5.对象的属性和方法6.Python中的类7.type()函数查看数据类型8.类在Python中的应用9.总结 【正文】 59. python的类与对象-更新 1.面向对象编程 本节内容特别抽象,初…

动手学深度学习-pytorch版本(二):线性神经网络

参考引用 动手学深度学习 1. 线性神经网络 神经网络的整个训练过程,包括: 定义简单的神经网络架构、数据处理、指定损失函数和如何训练模型。经典统计学习技术中的线性回归和 softmax 回归可以视为线性神经网络 1.1 线性回归 回归 (regression) 是能为一个或多个…

[软件工具]精灵标注助手目标检测数据集格式转VOC或者yolo

有时候我们拿到一个数据集发现是xml文件格式如下&#xff1a; <?xml version"1.0" ?> <doc><path>C:\Users\Administrator\Desktop\test\000000000074.jpg</path><outputs><object><item><name>dog</name>…

SSL证书如何使用?SSL保障通信安全

由于SSL技术已建立到所有主要的浏览器和WEB服务器程序中&#xff0c;因此&#xff0c;仅需安装数字证书或服务器证书就可以激活功能了。SSL证书主要是服务于HTTPS&#xff0c;部署证书后&#xff0c;网站链接就由HTTP开头变为HTTPS。 SSL安全证书主要用于发送安全电子邮件、访…

Numpy入门(4)— 保存和导入文件

NumPy保存和导入文件 4.1 文件读写 NumPy可以方便的进行文件读写&#xff0c;如下面这种格式的文本文件&#xff1a; # 使用np.fromfile从文本文件a.data读入数据 # 这里要设置参数sep &#xff0c;表示使用空白字符来分隔数据 # 空格或者回车都属于空白字符&#xff0c;读…

【仿写tomcat】五、响应静态资源(访问html页面)、路由支持以及多线程改进

访问html页面 如果我们想访问html页面其实就是将本地的html文件以流的方式响应给前端即可&#xff0c;下面我们对HttpResponseServlet这个类做一些改造 package com.tomcatServer.domain;import com.tomcatServer.utils.ScanUtil;import java.io.IOException; import java.io…

MySQL的Json类型字段IN查询分组和优化方法

前言 MySQL从5.7的版本开始支持Json后&#xff0c;我时常在设计表格时习惯性地添加一个Json类型字段&#xff0c;用做列的冗余。毕竟Json的非结构性&#xff0c;存储数据更灵活&#xff0c;比如接口请求记录用于存储请求参数&#xff0c;因为每个接口入参不一致&#xff0c;也…

【TypeScript】基础类型

安装 Node.js 环境 https://nodejs.org/en 终端中可以查到版本号即安装成功。 然后&#xff0c;终端执行npm i typescript -g安装 TypeScript 。 查到版本号即安装成功。 字符串类型 let str:string "Hello"; console.log(str);终端中先执行tsc --init&#xf…

第二届人工智能与智能信息处理技术国际学术会议(AIIIP 2023)

第二届人工智能与智能信息处理技术国际学术会议&#xff08;AIIIP 2023&#xff09; 2023 2nd International Conference on Artificial Intelligence and Intelligent Information Processing 第二届人工智能与智能信息处理技术国际学术会议&#xff08;AIIIP 2023&#xf…

ATTCK实战系列——红队实战(一)

目录 搭建环境问题 靶场环境 web 渗透 登录 phpmyadmin 应用 探测版本 写日志获得 webshell 写入哥斯拉 webshell 上线到 msf 内网信息收集 主机发现 流量转发 端口扫描 开启 socks 代理 服务探测 getshell 内网主机 浏览器配置 socks 代理 21 ftp 6002/700…

CentOS 8.5修改安装包镜像源

1 备份原配置 cd /etc/yum.repos.d mkdir backup mv *.repo backup/2 下载镜像源 2.1 使用wget下载 wget http://mirrors.aliyun.com/repo/Centos-8.repo2.2 使用curl下载 我是安装的最小版本的系统&#xff0c;默认只有curl curl使用方法&#xff1a;https://www.ruanyife…

为什么爬虫要用高匿代理IP?高匿代理IP有什么优点

只要搜代理IP&#xff0c;度娘就能给我们跳出很多品牌的推广&#xff0c;比如我们青果网路的。 正如你所看到的&#xff0c;我们厂商很多宣传用词都会用到高匿这2字。 这是为什么呢&#xff1f;高匿IP有那么重要吗&#xff1f; 这就需要我们从HTTP代理应用最多最广的&#xf…

基于MATLAB开发AUTOSAR软件应用层Code mapping专题-part 2 Inport和Outports 标签页介绍

上篇我们介绍了Function页的内容,这篇我们介绍Inports和Outports页的内容,这里我们再次强调一个概念,code mapping是以simulink的角度去看的,就是先要在模型中建立simulink模块,在code mapping里映射他要对应的autosar的元素,之后生成代码时的c语言的名字是以Autosar的元…

【MySQL】好好学习一下InnoDB中的页

文章目录 一. 前言二. 从宏观层面看页三. 页的基本内容3.1 页的数据结构3.2 用户空间内的数据行结构3.3 页目录 四. 问题集4.1 索引 和 数据页 有什么区别4.2 页的大小是什么决定的4.3 页的大小对哪些情况有影响4.4 一般情况下说的链表有哪几个4.5 如果页的空间满了怎么办4.6 如…

m3u8视频怎么保存到本地?这个小妙招了解下

m3u8是一种视频文件格式&#xff0c;通常用于流媒体服务&#xff0c;可以将大型视频文件分割成较小的TS分段进行传输&#xff0c;从而使得视频的传输更加流畅和高效。。m3u8文件包含了一个视频播放列表&#xff0c;其中包含了所有的TS分段的URL地址&#xff0c;以及每个分段的时…

设计模式之代理模式(Proxy)的C++实现

1、代理模式的提出 在组件的开发过程中&#xff0c;有些对象由于某种原因&#xff08;比如对象创建的开销很大&#xff0c;或者对象的一些操作需要做安全控制&#xff0c;或者需要进程外的访问等&#xff09;&#xff0c;会使Client使用者在操作这类对象时可能会存在问题&…

企业百家号蓝V认证后,百度营销基木鱼落地页如何嵌入百家号中

首先搭建百度营销基木鱼落地页 在我们的百度营销后台&#xff0c;点击基木鱼跳转至百度营销基木鱼页面&#xff0c;在我的站点位置&#xff0c;可以创建H5站点&#xff0c;PC站点等&#xff0c;创建完成后可以点击复制基木鱼落地页的链接。 注意事项 1、企业百家号需要进行…

每天一道leetcode:127. 单词接龙(图论困难建图广度优先遍历)

今日份题目&#xff1a; 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> ... -> sk&#xff1a; 每一对相邻的单词只差一个字母。 对于 1 < i < k 时&#xff0c;每个 si 都在 wordList 中…

【Apollo】自动驾驶感知——毫米波雷达

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…

docker compose的用法

目录 一、Docker-Compose介绍 1.1 Docker-Compose的概述 1.2 Docker-Compose 用来实现Docker容器快速编排 1.3 Docker-compose模板文件简介 二、YAML简介 2.1 YAML的概述 2.2 YAML的基本语法规则 2.3 YAML支持的数据架构 三、配置内部常用字段 四、Docker-compose 常…