常见的6种软件测试用例设计方法

news2024/11/20 14:40:53

常见的软件测试用例设计方法,个人认为主要是下面这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、使用案例

 
  1. 需求:验证QQ账号的合法性

  2. 要求: 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分析需求,确定因素(条件)和水平(条件取值)

 
  1. 因素:出发地、目的地和出发日期 因素数:3个

  2. 水平:填写、不填写 水平数:2个

4.2选择正交表进行映射

 
  1. 正交表列名:条件具体取值替换。

  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)错误推测法,有经验的人使用

学习上

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:开心螺蛳粉】自提!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述

在这里插入图片描述

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL查询数据(十)

MySQL查询数据(十) 一、SELECT基本查询 1.1 SELECT语句的功能 SELECT 语句从数据库中返回信息。使用一个 SELECT 语句,可以做下面的事: **列选择:**能够使用 SELECT 语句的列选择功能选择表中的列,这些…

不一样的味觉体验:精酿啤酒与烤肉的绝妙搭配

在繁华的都市生活中,人们总是在寻找那份与众不同的味觉享受。当夏日的微风轻轻拂过,你是否想过,与三五好友围坐在一起,拿着Fendi Club啤酒与烤肉的绝妙搭配,畅谈生活点滴,感受那份惬意与自在? F…

2401Idea用GradleKotlin编译Java控制台中文出乱码解决

解决方法 解决方法1 在项目 build.gradle.kts 文件中加入 tasks.withType<JavaCompile> {options.encoding "UTF-8" } tasks.withType<JavaExec> {systemProperty("file.encoding", "utf-8") }经测试, 只加 tasks.withType<…

基于单片机的智能燃气灶控制系统设计

摘要&#xff1a;针对传统燃气灶存在不能防干烧、不能进行温度检测、不能进行火力自动调节等问题&#xff0c;设计了一种基于单片机控制的智能燃气灶&#xff0c;它通过单片机进行控制&#xff0c;由开关模块、测温模块、语音播报模块、火力控制模块和防空烧模块五个模块组成&a…

Lazysysadmin

信息收集 # nmap -sn 192.168.1.0/24 -oN live.port Starting Nmap 7.94 ( https://nmap.org ) at 2024-01-30 21:10 CST Nmap scan report for 192.168.1.1 (192.168.1.1) Host is up (0.00075s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nma…

Flutter解析后台发来的jwt字段数据,了解jwt是否过期

前言 了解JWT是什么可以看这一篇博文 JWT&#xff08;JSON Web Token&#xff09;详解以及在go-zero中配置的方法-CSDN博客 流程 采用jwt_decoder库 添加至pubspec.yaml jwt_decoder: ^2.0.1 解析字段 查看是否过期 获取过期时间和token颁发的年龄

面试八股文(2)

文章目录 1.ArrayList和LinkedList区别2.HashMap和HashTable区别3.线程的创建方式4.Java中异常处理5.Java序列化中某些字段不想进行序列化&#xff1f;6.Java序列化7.静态方法和实例方法8.List、Set、Map三者区别9.ArrayList和Vector区别10.HashMap和HashSet区别 1.ArrayList和…

【C++】 C++入门— 基于范围的 for 循环

C 基于范围的for循环1 使用样例2 使用条件3 完善措施 Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读&#xff01;下一篇文章见&#xff01;&#xff01;&#xff01; 基于范围的for循环 1 使用样例 使用for循环遍历数组&#xff0c;我们通常这么写&#xff1a; …

博云科技与中科可控全面合作,探索前沿金融科技新机遇

2024年1月26日&#xff0c;博云科技与中科可控在昆山高新区成功举办合作签约仪式。昆山市委常委、昆山高新区党工委书记孙道寻、中科可控董事长聂华、博云科技董事长花磊等领导出席了本次签约仪式。 中科可控将利用其在先进计算和智造领域的优势&#xff0c;为博云科技提供有关…

el-table添加(取消,确认)

点击添加输入添加项&#xff0c;但是不想添加了&#xff0c;就点击取消&#xff0c;但是在打开之前输入的数据还在&#xff0c;在点击取消的时候数据清空 页面 数据没有清空的时候&#xff0c;点击取消之后&#xff0c;在打开数据还在 数据清空之后&#xff0c;在打开数据是没…

寒假作业2月2号

第一章 命名空间 一&#xff0e;选择题 1、编写C程序一般需经过的几个步骤依次是&#xff08;C &#xff09; A. 编辑、调试、编译、连接 B. 编辑、编译、连接、运行 C. 编译、调试、编辑、连接 D. 编译、编辑、连接、运行 2、所谓数据封装就是将一组数据和与这组数据有关…

为期 90 天的免费数据科学认证(KNIME)

从 2 月 1 日开始&#xff0c;KNIME 官方将免费提供 KNIME 认证 90 天。 无论您是刚刚迈入数据科学领域、已经掌握了一些技术&#xff0c;还是正在构建预测模型&#xff0c;都可以参加为期 90 天的 KNIME 认证挑战赛&#xff0c;完成尽可能多的认证并获得数据科学技能免费认证。…

嵌入式系统学习(一)

嵌入式现状&#xff08;UP经历&#xff09;&#xff1a; 大厂的招聘要求&#xff1a; 技术栈总结&#xff1a; 产品拆解网站&#xff1a; 52audio 方案查询网站iotku,我爱方案网&#xff0c; 主要元器件类型&#xff1a;

二分查找------蓝桥杯

题目描述&#xff1a; 请实现无重复数字的升序数组的二分查找 给定一个元素升序的、无重复数字的整型数组 nums 和一个目标值 target&#xff0c;写一个函数搜索 nums 中的target&#xff0c;如果目标值存在返回下标 (下标从0 开始)&#xff0c;否则返回-1 数据范围: 0 < l…

哇塞,这几种Java文件读写性能差距居然这么大?

引言 这是一篇性能比较的文章&#xff0c;不分析实现原理。主要是对比Java几种常见的文件写入方式 测试代码 主要分析Stream、StreamBuffer和mmap三种方式&#xff0c;对应的大致代码如下 public static void testBasicFileIO(List<Persona> list, String path) throw…

Flume搭建

压缩包版本&#xff1a;apache-flume-1.9.0-bin.tar 百度盘链接&#xff1a;https://pan.baidu.com/s/1ZhSiePUye9ax7TW5XbfWdw 提取码&#xff1a;ieks 1.解压 tar -zxvf /opt/software/apache-flume-1.9.0-bin.tar.gz -C /opt/module/ 2. 修改文件名 [rootbigdata1 opt]…

Chatglm3+langchain智能对话,本地文本库构建问答,图片文本库构建与问答搜索

Chatglm3langchain 主要功能&#xff1a; 调用语言模型将不同数据源接入到语言模型的交互中允许语言模型与运行环境交互 Langchain应用场景 **1. 文档问答&#xff1a;**常见的Langchain用例。在特定文档上回答问题&#xff0c;仅利用这些文档中的信息来构建问答答案&#…

KNIME 节点之战(Game of Nodes)锦标赛

“Hark! I summon thee to a contest of nodes. Art thou endowed with the courage for the encounter?” “听着&#xff01;我在此邀请你加入一场节点之战。你有勇气面对吗&#xff1f;” 官方链接 活动概要与参赛守则 诚邀您加入 KNIME 节点之战 —— 首届全球工作流挑战大…

无心剑小诗《致敬任正非》

致敬任正非 您是时代的勇者 科技海洋中砥砺前行 目光如炬&#xff0c;坚定而深邃 照亮了华为的路 引领着创新的方向 您是一颗璀璨的星 商业星空中熠熠生辉 您智慧如奔涌之泉 激荡无穷的力量 驱动着华为的发展 创造了无数奇迹 您是一位无畏的勇士 面对困难挑战&#xff0c;永…

MySQL的ACID、死锁、MVCC问题

1 ACID ACID代表原子性&#xff08;atomicity&#xff09;、一致性&#xff08;consistency&#xff09;、隔离性&#xff08;isolation&#xff09;和持久性&#xff08;durability&#xff09;。一个确保数据安全的事务处理系统&#xff0c;必须满足这些密切相关的标准。 原…