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

常见的软件测试用例设计方法,个人认为主要是下面这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)错误推测法,有经验的人使用

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

  视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。  

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

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

相关文章

thinkphp+mysql高校跳蚤二手市场交易系统vue

商品信息是卖家供应用户必不可少的一个部分。在跳蚤市场发展的整个过程中,商品担负着最重要的角色。为满足如今日益复杂的管理需求,各类管理系统程序也在不断改进。本课题所设计的普通高校网上跳蚤市场,使用Thinkphp5框架,php语言…

Java日期和时间学习记录2

1、Java的LocalDate类当前时间往未来几天和过去时间几天 import java.time.LocalDate;public class Main {public static void main(String[] args) {// 获取当前日期LocalDate currentDate LocalDate.now();System.out.println("当前日期:" currentDa…

Web09--jQuery基础

1、jQuery概述 1.1 什么是jQuery jQuery是一款优秀的JavaScript的轻量级框架之一,封装了DOM操作、事件绑定、ajax等功能。特别值得一提的是基于jQuery平台的插件非常丰富,大多数前端业务场景都有其封装好的工具可直接使用。 jQuery下载和版本介绍 官…

HTTP动态代理的原理及其对网络性能的影响

HTTP动态代理是一种通过代理服务器来转发HTTP请求和响应数据的网络技术,它可以优化网络性能、提高网络安全性,并解决跨域请求的问题。本文将详细介绍HTTP动态代理的原理及其对网络性能的影响。 一、HTTP动态代理的原理 HTTP动态代理的基本原理是在客户…

什么是交换机端口镜像?

热门IT课程【视频教程】-华为/思科/红帽/oraclehttps://xmws-it.blog.csdn.net/article/details/134398330 镜像可以在不影响交换机/路由器等网络设备报文正常处理流程的情况下,将指定源的报文复制一份到目的端口。目的端口与监控设备直接或间接相连,监控…

山体滑坡监测预警系统-gnss位移监测站

GNSS山体滑坡位移监测站是一种利用全球导航卫星系统(GNSS)进行山体滑坡位移监测的设备。它通过接收和处理GNSS卫星信号,能够实时监测山体的位移变化,并将数据传输到后端系统进行分析和处理。 GNSS山体滑坡位移监测站具有高精度、…

文件上传技术总结

语言可解析的后缀 (前提:在Apache httpd.conf 配置文件中有特殊语言的配置 AddHandler application/x-httpd-php .php 搭配大小写、双重、空格来进行 其中: phtml、pht、php3、php4和php5都是Apache和php认可的php程序的文件后缀 常见的…

云安全包括哪些方面?

随着云计算的快速发展,云安全问题也日益受到关注。云安全不仅涉及到个人数据安全,还涉及到国家安全、社会稳定等方面。因此,了解云安全包括哪些方面对于保护个人隐私和企业数据安全具有重要意义。本文将从多个角度探讨云安全所涉及的方面。 ​…

ASCB1系列一体式智能微型断路器 智慧空开-安科瑞 蒋静

1. 概述 ASCB1系列智能微型断路器(一体式)(以下简称智能微型断路器)应用于户内建筑物及类似场所的工业、商业、民用建筑及基础设施等领域低压终端配电网络。智能微型断路器对用电线路的关键电气参数,如电压、电流、功率、温度、漏电、能耗等…

Ask for Power Apps 消失了?

Ask for Power Apps 消失了? 背景替换定义一个接收数组的参数1.我们新建一个Text接收参数取名为**Arrlist**.定义一个参数类型是Array 背景 今天才发现,我在flow中想向power apps索要一个参数,但是之前的Ask for Power Apps 这个触发器怎么也找不到了。…

k8s---pod的水平自动伸缩HPA

HPA:Horizontal Pod Autoscaling是pod的水平自动伸缩。是k8s自带的模块 pod占用CPU的比率到达一定的阈值会触发伸缩机制。 replication controller:副本控制器。控制pod的副本数 deployment controller:节点控制器。部署pod hpa控制副本的…

【C++】初步认识基于C的优化

C祖师爷在使用C语言时感觉到了不方便的一些点,于是一步一步改进优化,最后形成了C 本文将盘点一下基于C的语法优化 目录 命名空间:命名空间定义:命名空间使用: C输入&输出:cout:endl&#…

spring中循环依赖问题、Servlet 的过滤器与 Spring 拦截器区别

spring中的循环依赖问题 当A类中关联B,B类中关联A class A {B b; } class B {A a; } 正常java代码中new A时,b为null;new B时,a为null; 但是在spring中,由于对象是由spring容器管理的,当创建…

C语言——联合和枚举

目录 一、联合体 1.1 联合体类型的声明 1.2 联合体的特点 1.3 相同成员的结构体和联合体对比 1.4 联合体大小的计算 1.5 联合的⼀个练习 二、枚举类型 2.1 枚举类型的声明 2.2 枚举类型的优点 2.3 枚举类型的使用 一、联合体 1.1 联合体类型的声明 像结构体⼀样…

【腾讯云服务器】幻兽帕鲁私服服务器部署保姆级教程

在帕鲁的世界,你可以选择与神奇的生物「帕鲁」一同享受悠闲的生活,也可以投身于与偷猎者进行生死搏斗的冒险。帕鲁可以进行战斗、繁殖、协助你做农活,也可以为你在工厂工作。你也可以将它们进行售卖,或分解后食用。 想要部署属于自…

C++ STL之stack的使用及模拟实现

文章目录 1. 介绍2. stack的使用3. 栈的模拟实现 1. 介绍 英文解释: 也就是说: stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。 stack是作为容器适配器被实现…

8 种网络协议

什么是网络协议? 网络协议就是计算机之间沟通的语言,为了有效地交流,计算机之间需要一种共同的规则或协议,就像我们和老外沟通之前,要先商量好用哪种语言,要么大家都说中文,要么大家都说英语&a…

Elasticsearch分布式一致性原理剖析(三)-Data篇

本文首发于云栖社区(Elasticsearch分布式一致性原理剖析(三)-Data篇-博客-云栖社区-阿里云),由原作者转载。 前言 “Elasticsearch分布式一致性原理剖析”系列将会对Elasticsearch的分布式一致性原理进行详细的剖析,介绍其实现方式、原理以及其存在的问…

安卓移动设备使用DS file文件管理工具远程访问本地群晖NAS文件

文章目录 1. 群晖安装Cpolar2. 创建TCP公网地址3. 远程访问群晖文件4. 固定TCP公网地址5. 固定TCP地址连接6. 结语 DS file 是一个由群晖公司开发的文件管理应用程序,主要用于浏览、访问和管理存储在群晖NAS(网络附加存储)中的文件。这个应用…

ubuntu下使用Live555搭建流媒体服务器

本教程实验环境在64bit ubuntu Live555基本介绍,RTSP,以及服务端客户端的编程参考这篇文章:实时流媒体传输开源库——Live555 拉取Live555源码到本地文件夹 wget http://www.live555.com/liveMedia/public/live.2023.11.30.tar.gz解压缩 …