测试用例介绍
文章目录
- 一、测试用例基本概念
- 1.1 测试用例基本要素
- 二、测试用例的设计方法
- 2.1 基于需求的设计方法
- 2.2 等价类
- 2.3 边界值
- 2.4 错误猜测法
- 2.6 场景设计法
- 2.7 因果图
- 2.5 正交排列
- 三、综合:根据某个场景去设计测试用例(万能公式)
- 四、如何使用Fidder操作网络(测网速)
- 五、测试接口
一、测试用例基本概念
1.1 测试用例基本要素
- 基本要素:测试环境、操作步骤、测试数据、预期结果等
- 不是说就上面这四个,只是说只知道这几个也行
- 测试用例的用处:
- 可作为测试执行者的依据辅助测试
- 可作为自动化测试的基础,把重复的工作简化
- 评估需求覆盖率:
- 覆盖率:用来计算测试的代码范围
- 计算公式:测试的代码行数/没有测试的代码行数
- 可由工具辅助计算
- 覆盖率:用来计算测试的代码范围
- 用例的复用:当要更新一个软件时(由v1变为v2),在git操作上,我们会在v1基础上创建一个dev分支,然后在该分支上迭代其为v2代码,最后合并到master分支上。对于测试用例而言,我们需要写v2新功能的测试用例,至于v1的老功能可以复用v1时的测试用例
- 为什么还需要测试v1的代码:因为我们无法保证开发人员在开发v2时,没有更改v1的代码,或者说新功能不会影响到老功能
二、测试用例的设计方法
这些设计方法都是针对【黑盒测试】的
2.1 基于需求的设计方法
- 根据需求来设计测试用例:设计出来的测试用例只是大概的,测试出来的软件也是不完善的。但不可以没有,因为它相当于是测试软件的思路,如果直接用什么等价类、边界值这种具体设计测试用例的方法,只会让人觉得很没有逻辑
2.2 等价类
- 分类:等价类主要分为【有效等价类】和【无效等价类】
- 有效等价类:满足用户需求的数据集合,使用这些数据,程序不会报错
- 无效等价类:不满足用户需求的数据集合,使用这些数据,程序会报错
- 如何通过等价类设计测试用例:
- 充分理解需求
- 将需求划分为【有效等价类】和【无效等价类】
- 分别从【有效等价类】和【无效等价类】中抽取一个测试用例进行测试,只要被抽取的那个测试用例能够通过,则认为所代表的等价类测试通过
- 理解:吃东西我们只要吃一口,就可以判断这道菜好不好吃了。此时,那一口就是被提出来的测试用例,整道菜就是该测试用例代表的等价类
- 组合有效等价类和无效等价类
- 组合规则:
- 有效等价类:一条测试用例尽可能的覆盖所有有效等价类
- 无效等价类:一条无效等价类与其他的有效等价类
- 组合规则:
- 好处:可以用较少的测试用例达到尽量多的功能覆盖,解决了不能穷举测试的问题
- 案例:
2.3 边界值
- 场景:因为边界情况很容易出bug,所以我们要多测试
- 上点、离点、内点:
- 上点:对于开区间、闭区间、半开半闭区间来说,上点都是边界上的点
- 离点:对于开区间、闭区间、半开半闭区间来说,离点都是边界内的点
- 内点:边界左右的一个点,如果是闭区间,离点是范围外的点;如果是开区间,离点就是范围内的点
- 使用边界值法设计测试用例:
- 充分理解需求
- 找上点、内点、离点
- 针对上面这三点,结合等价类法去设计测试用例
- 案例:
2.4 错误猜测法
- 什么是“错误猜测法”:这个方法基本靠测试经验,测试人员根据经验猜测大概哪种情况下容易出错
- 缺点:难以系统化,并且过度依赖个人能力
2.6 场景设计法
- 如何利用场景设计法设计测试用例:
- 定位主事件流:主事件流就是用户经常操作的步骤、行为,是个大模块
- 定位次事件流:主事件流里面,大都都会有很多意外
- 将上述两个事件流串起来形成场景:此时一个场景就是一个测试用例
- 案例:
2.7 因果图
-
为什么会有因果法:输入的数据也是有逻辑关系的,如输入的两个条件必须要同时满足才能通过测试,我们可以根据这个逻辑,去设计测试用例
-
因果图VS判定表法:因为因果图最终会转为判定表,所以这里干脆从【判定表】的部分讲,跳过中间部分,所以实际我们要学的其实是【判定表法】
-
逻辑关系种类:
- 恒等:条件为真,结果一定为真;条件为假,结果一定为假
- 与:条件全为真,结果才为真
- 或:条件全为假,结果才为假
- 非:条件为假,结果才为真
-
如何根据判定表法设计测试用例:
- 充分理解需求
- 分析所有可能的输入和输出
- 找出输入和输出的对应关系
- 判定表
- 把判定表对应到每一个测试用例上
-
案例:
-
缺陷:如果输入和输出十分复杂,制作判定表就十分麻烦,此时我们可以借助【正交表法】进行优化
2.5 正交排列
-
名词解析
-
正交表性质:
-
如何根据正交表法设计测试用例:通常是需要工具辅助我们生成一个正交表
- 确定因素(变量)
- 确定因素取值(水平)
- 通过工具生成正交表
- 将正交表转换成测试用例
- 补充正交表
-
案例:
三、综合:根据某个场景去设计测试用例(万能公式)
- 设计思路:实际测试,我们不会专门去使用上面那些设计方法,而是使用【万能公式】
- 万能公式:功能、界面、易用性、兼容性、安全性、性能、网络、安装卸载
- 针对一个【物体】进行设计:
- 功能:这个物体经常被用来干什么
- 界面:物体的形状、颜色、大小……
- 易用性:物体的设计符合人体工学
- 兼容性:该物体除了本质功能,还可以做哪些事情
- 安全性:物体不能对人的健康有损害
- 性能:承受能力,如抗压力、耐热力、耐寒力等
- 安装卸载:能否适应各种情况下的安装和拆除
- 针对一个【软件】进行设计:
-
功能:软件的基础功能(本职功能)是什么
-
界面:界面的图片布局、图片大小、按钮颜色、文字字体……
-
易用性:软件设计符合大众操作习惯,能让人操作流畅
- 比如如果报警一般是红色日志,绿色一般表示通过,黄色则一般表示警告
-
兼容性:软件可以在不同的平台去部署、运行
- 兼容对软件十分重要,因为不同的用户会用不同的设备去使用该软件
- 考虑到不同的设备(IOS、Android、PC)、以及对应的不同的版本(比如浏览器的版本、操作系统的版本……)
- 苹果手机和苹果电脑的操作系统就是IOS,PC主要指电脑端,电脑的操作系统有Windows、Linux、Mac
- 因为测试兼容多是重复性操作,所以我们可以用【自动化】来帮助我们提高测试的效率
-
安全性:使用功能时,要防止黑客攻击,没有内存泄漏、SQL注入、xss漏洞等问题
- xss漏洞:如果在输入框输入< script>代码< /script>,如果存在xss漏洞,程序就会执行里面的代码,如果代码涉及金钱,就会十分危险。如果没有,则是正常显示这段话
- SQL注入:主要是字符串拼接问题,如数据库代码是select * from list where id = 10 or 1 = 1, 但是输入框输入的是xxx or 1 = 1,此时会搜出全部的数据
-
性能:吞吐量(软件能够同时间承载多少个用户访问)、响应时间(软件渲染页面所需的时间)……
-
网络:在不同网速下能否正常运行
-
安装与卸载:能否使用各种软件进行安装与卸载
-
- 针对一个【物体】进行设计:
- 设计水杯的测试用例:利用万能公式有逻辑地求解,而不是想到什么测试点就说什么,每个部分至少能说出3,4个点
- 注意:如果是大需求,就把其拆为小需求求解:如果是小需求直接用万能公式
- 功能:能泡茶、能加热水、能保温、容量为500ml……
- 兼容:能装酒、能装化学物质、能装饮料……
- 易用性:便于携带、拿着舒服符合人体工学、水杯重量适中……
- 安全:水杯的材质不会与水发生化学反应,从而产生有毒物质、杯盖足够紧,加热水时不会漏液……
- 界面:水杯上的图案美观、图案不会褪色、容量刻度线明显……
- 性能:防摔、防爆、保温效果好……
- 安装与卸载:能否正常盖上盖子和打开
- 注意:如果是大需求,就把其拆为小需求求解:如果是小需求直接用万能公式
- 设计【微信发布朋友圈】的测试用例:
- 功能:能发送文本(再细分:能发送纯汉字、能发送纯英文、能结合、如果发送的文本过长超过了100字符,会有提示……)、能发送图片(支持发送9张及以内的图片、如果已经选中了9张图片不能再选中第10张、图片顺序能够调整……)、能发送视频、能进行分享操作……
- 兼容:对于平板来说,无论是IOS还是Android都能发送(包含了各个版本)、对于PC电脑来说Windows和Mac不能发送朋友圈……
- 易用性:软件操作流畅、软件操作简单
- 安全:会自动过滤敏感词、防止SQL注入、防止xss漏洞、防止黑客攻击……
- 界面:朋友圈页面布局好看、小部件符合大众习惯……
- 性能:图片渲染时间短、支持大量用户同时发送朋友圈……
- 安装与卸载:能否使用各种软件进行安装与卸载
四、如何使用Fidder操作网络(测网速)
- 概念:Fidder和Charles可以用来控制网络,实现测网速等操作
- 方法:
五、测试接口
- 测试方式:可以使用代码测试,也可以使用可视化工具postman测试
- 测试方向:
- 针对接口方法测试:post、get、put、delete……(注,get方法里不能用post)
- 针对参数测试:选取符合要求和不符合要求的参数,分别进行测试,如参数的个数、参数为空……
- 针对业务测试:根据返回结果,判断业务是否正确
相关文章:

测试用例介绍
文章目录 一、测试用例基本概念1.1 测试用例基本要素 二、测试用例的设计方法2.1 基于需求的设计方法2.2 等价类2.3 边界值2.4 错误猜测法2.6 场景设计法2.7 因果图2.5 正交排列 三、综合:根据某个场景去设计测试用例(万能公式)四、如何使用F…...

phpstudy升级新版apache
1.首先下载要升级到的apache版本,这里apache版本为Apache 2.4.63-250207 Win64下载地址:Apache VS17 binaries and modules download 2.将phpstudy中原始apache复制备份Apache2.4.39_origin 3.将1中下载apache解压, 将Apache24复制一份到ph…...
在一台服务器上通过 Nginx 配置实现不同子域名访问静态文件和后端服务
一、域名解析配置 要实现通过不同子域名访问静态文件和后端服务,首先需要进行域名解析。在域名注册商或 DNS 服务商处,为你的两个子域名 blog.xxx.com 和 api.xxx.com 配置 A 记录或 CNAME 记录。将它们的 A 记录都指向你服务器的 IP 地址。例如&#x…...

React Native基础环境配置
React Native基础环境配置 1.引言2.React-Native简介3.项目基础环境搭建1.引言 感觉自己掌握的知识面还是有点太窄了,于是决定看看移动端的框架,搞个react搭一个后端管理项目,然后拿react-native写个小的软件,试着找个三方上架一下应用市场玩玩。毕竟不可能一直在简历上挂一…...

【Linux修炼手册】Linux开发工具的使用(一):yum与vim
文章目录 一、Linux 软件包管理器——yum安装与卸载的使用方法查看软件包 二、Linux编辑器——vimvim命名模式常用指令底行模式常用指令 一、Linux 软件包管理器——yum Linux安装软件的方式有3种: 源代码安装——成本极高rmp安装——具有安装依赖、安装源、安装版…...

如何查看电脑显卡配置参数 一文读懂
显卡是电脑的重要硬件之一,尤其对于游戏玩家、设计师、视频编辑等用户来说,显卡的性能直接影响电脑的使用体验。如果您想知道电脑的显卡信息,或者打算升级显卡,那么了解如何查看显卡配置是非常必要的。本文将为您提供多种简单实用…...
幂等的几种解决方案以及实践
目录 什么是幂等? 解决幂等的常见解决方案: 唯一标识符案例 数据库唯一约束 案例 乐观锁案例 分布式锁(Distributed Locking) 实践精选方案 首先 为什么不直接使用分布式锁呢? 自定义实现幂等组件!…...
transformer➕lstm训练回归模型
使用 Transformer 和 LSTM 优化时序数据回归模型:全流程分析 在机器学习和深度学习中,处理时序数据是一项常见的任务。无论是金融预测、气象预测还是库存管理等领域,时序数据都扮演着至关重要的角色。对于时序数据的建模,深度学习…...
用卷积神经网络 (CNN) 实现 MNIST 手写数字识别
在深度学习领域,MNIST 手写数字识别是经典的入门级项目,就像编程世界里的 “Hello, World”。卷积神经网络(Convolutional Neural Network,CNN)作为处理图像数据的强大工具,在该任务中展现出卓越的性能。本…...
windows的rancherDesktop修改镜像源
您好!要在Windows系统上的Rancher Desktop中修改Docker镜像源(即设置registry mirror),您需要根据Rancher Desktop使用的容器运行时(containerd或dockerd)进行配置。用户提到“allowed-image”没有效果&…...

spring中的@ComponentScan注解详解
ComponentScan 是 Spring 框架中用于自动扫描并注册组件的核心注解,它简化了 Spring 应用中 Bean 的发现和装配流程。以下从核心功能、属性解析、使用场景及示例等方面进行详细说明。 一、核心功能与作用 自动扫描组件 ComponentScan 会扫描指定包及其子包下的类&am…...
机器学习之嵌入(Embeddings):从理论到实践
机器学习之嵌入(Embeddings):从理论到实践 摘要 本文深入探讨了机器学习中嵌入(Embeddings)的概念和应用。通过具体的实例和可视化展示,我们将了解嵌入如何将高维数据转换为低维表示,以及这种转换在推荐系统、自然语言处理等领域的实际应用…...

深入剖析 I/O 复用之 select 机制
深入剖析 I/O 复用之 select 机制 在网络编程中,I/O 复用是一项关键技术,它允许程序同时监控多个文件描述符的状态变化,从而高效地处理多个 I/O 操作。select 作为 I/O 复用的经典实现方式,在众多网络应用中扮演着重要角色。本文…...

SpringBoot指定项目层日志记录
1、新建一个Springboot项目,添加Lombok依赖(注意:这里使用的Lombok下的Slf4j快速日志记录方式) <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependenc…...

RISC-V hardfault分析工具,RTTHREAD-RVBACKTRACE
RV BACKTRACE 简介 本文主要讲述RV BACKTRACE 的内部主要原理 没有接触过rvbacktrace可以看下面两篇文章,理解一下如何使用RVBACKTRACE RVBacktrace RISC-V极简栈回溯组件:https://club.rt-thread.org/ask/article/64bfe06feb7b3e29.html RVBacktra…...
xiaopiu原型设计工具笔记
文章目录 有没有行组件是否支持根据图片生成原型呢? 其他官网 做项目要用到原型设计,还是那句话,遇到的必须会用,走起。 支持本地也支持线上。 有没有行组件 是这样,同一行有多个字段,如何弄的准确点呢? 目前只会弄…...

matlab 中function的用法
matlab 中function的用法 前言介绍1. 基本语法示例(1)可以直接输出(2)调用函数 2.输入参数和输出参数示例多输入参数和输出参数定义一个函数,计算两个数的和与差:调用该函数: 3. 默认参数示例 4…...

解锁 LLM 推理速度:深入 FlashAttention 与 PagedAttention 的原理与实践
写在前面 大型语言模型 (LLM) 已经渗透到我们数字生活的方方面面,从智能问答、内容创作到代码辅助,其能力令人惊叹。然而,驱动这些强大模型的背后,是对计算资源(尤其是 GPU)的巨大需求。在模型推理 (Inference) 阶段,即模型实际对外提供服务的阶段,速度 (Latency) 和吞…...

4个纯CSS自定义的简单而优雅的滚动条样式
今天发现 uni-app 项目的滚动条不显示,查了下原来是设置了 ::-webkit-scrollbar {display: none; } 那么怎么用 css 设置滚动条样式呢? 定义滚动条整体样式 ::-webkit-scrollbar 定义滚动条滑块样式 ::-webkit-scrollbar-thumb 定义滚动条轨道样式…...

查看jdk是否安装并且配置成功?(Android studio安装前的准备)
WinR输入cmd打开命令提示窗口 输入命令 java -version 回车显示如下:...

5月8日直播见!Atlassian Team‘25大会精华+AI实战分享
在刚刚落幕的 Atlassian Team’25 全球大会上,Atlassian发布了多项重磅创新,全面升级其协作平台,涵盖从Al驱动、知识管理到跨团队协作,再到战略执行的各个方面。 为帮助中国用户深入了解这些前沿动态,Atlassian全球白…...

Windows系统下使用Kafka和Zookeeper,Python运行kafka(一)
下载和安装见Linux系统下使用Kafka和Zookeeper 配置 Zookeeper Zookeeper 是 Kafka 所依赖的分布式协调服务。在 Kafka 解压目录下,有一个 Zookeeper 的配置文件模板config/zookeeper.properties,你可以直接使用默认配置。 启动 Zookeeper 打开命令提示符(CMD),进入 K…...

C++之“继承”
继续开始关于C相关的内容。C作为面向对象的语言,有三大特性:封装,继承,多态。 这篇文章我们开始学习:继承。 一、继承的概念和定义 1. 继承的概念 什么是继承呢? 字面意思理解来看:继承就是…...

Webug4.0靶场通关笔记19- 第24关邮箱轰炸
目录 第24关 邮箱轰炸 1.配置环境 2.打开靶场 3.源码分析 4.邮箱轰炸 (1)注册界面bp抓包 (2)发送到intruder (3)配置position (4)配置payload (5)开…...

java CompletableFuture 异步编程工具用法1
1、测试异步调用: static void testCompletableFuture1() throws ExecutionException, InterruptedException {// 1、无返回值的异步任务。异步线程执行RunnableCompletableFuture.runAsync(() -> System.out.println("only you"));// 2、有返回值的异…...
缺乏实体人形机器人的主流高精度仿真方案
在缺乏实体人形机器人的情况下,可通过以下主流仿真方案实现高精度模拟(基于2025年最新技术): 一、基础建模工具链 MATLAB Robotics Toolbox • 通过连杆(Link)和关节(Joint)定义生物力学参数 • 示例代码创建简化模型:…...
基于STM32、HAL库的CP2104 USB转UART收发器 驱动程序设计
一、简介: CP2104是Silicon Labs公司推出的一款USB转UART桥接芯片,具有以下特点: USB 2.0全速兼容 集成USB收发器,无需外部电阻 支持UART数据传输,波特率从300bps到2Mbps 内置EEPROM可配置设备信息 支持RTS/CTS硬件流控制 3.3V I/O电平,内置5V至3.3V稳压器 紧凑的QFN-24…...
ERC-20与ERC-721:区块链代币标准的双星解析
一、代币标准的诞生背景 在以太坊生态中,代币标准是构建去中心化应用(DApps)的基石。ERC-20与ERC-721分别代表同质化与非同质化代币的两大核心标准,前者支撑着90%以上的加密资产流通,后者则开启了数字资产唯一性的新时…...
使用Go语言对接全球股票数据源API实践指南
使用Go语言对接全球股票数据API实践指南 概述 本文介绍如何通过Go语言对接支持多国股票数据的API服务。我们将基于提供的API文档,实现包括市场行情、K线数据、实时推送等核心功能的对接。 一、准备工作 1. 获取API Key 联系服务提供商获取访问密钥(替…...
经典密码学算法实现
# AES-128 加密算法的规范实现(不使用外部库) # ECB模式S_BOX [0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B,0xFE, 0xD7, 0xAB, 0x76, 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0,0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0x…...