软件测试学习笔记-测试用例的编写
7中测试分类
按照阶段可划分单元测试、集成测试、系统测试、验收测试。代码可见度划分黑盒测试、灰盒测试、白盒测试
单元测试:针对源代码的测试
集成测试:针对接口进行测试
系统测试:针对功能和非功能的测试
验收测试:公测、内测
黑盒测试:不关注源代码针对功能测试 如系统测试
白盒测试:针对源代码进行测试 如:单元测试
灰盒测试:针对接口进行测试 如:集成测试
测试流程的6个步骤:
1.需求评审、2. 测试计划、3. 用例设计、4. 用例执行、5. 缺陷管理、6. 测试报告
文章目录
- 测试用例
- 1. 等价类划分法(应对穷举场景)
- 2. 边界值分析法(限定边界规则)
- 3. 判断表法
- 4. 场景法
测试用例
8个组成部分
测试编号 项目_模块_编号
测试标题 预期结果(测试点) 比如 登录失败(账号为空)
项目/模块
优先级 表示用例的重要程序或者影响力p0~p4(p0最高)用户使用最多的功能 p0
前置条件
测试步骤
测试数据
预期结果
1. 等价类划分法(应对穷举场景)
- 明确需求
- 划分有效和无效等价
- 设计数据编写用例
例子:验证QQ账号合法
需求:6~10位自然数
从位数上分为:
有效:8位自然数
无效:5位、11位自然数
其他:
无效:8位非自然数、空
测试用例为:
测试编号 | 测试标题 | 项目/模块 | 优先级 | 前置条件 | 测试数据 | 测试步骤 | 预期结果 |
---|---|---|---|---|---|---|---|
qq_001 | QQ合法(8位自然数) | qq账号 | p0 | 打开QQ验证程序 | 账号:12345678 | 1. 输入QQ账号 2.点击验证 | QQ合法 |
qq_002 | QQ不合法(5位自然数) | qq账号 | p1 | 打开QQ验证程序 | 账号:12345 | 1. 输入QQ账号 2.点击验证 | QQ不合法 |
qq_003 | QQ不合法(11位自然数) | qq账号 | p1 | 打开QQ验证程序 | 账号:12345678910 | 1. 输入QQ账号 2.点击验证 | QQ不合法 |
qq_004 | QQ不合法(8位非自然数) | qq账号 | p1 | 打开QQ验证程序 | 账号:1234567a | 1. 输入QQ账号 2.点击验证 | QQ不合法 |
qq_005 | QQ不合法(空) | qq账号 | p1 | 打开QQ验证程序 | 账号:空 | 1. 输入QQ账号 2.点击验证 | QQ不合法 |
例子:电话号码的正确性
需求:
- 区号:空或者三位数字
- 前缀码:非“0”且非“1”开头的三位数字
- 后缀码:四位数字
对应的测试用例如下:
测试编号 | 测试标题 | 项目/模块 | 优先级 | 前置条件 | 测试数据 | 测试步骤 | 预期结果 |
---|---|---|---|---|---|---|---|
电话_001 | 电话号码合法(区号为空+其他正常) | 电话号码 | p0 | 打开电话号码验证程序 | 区号:空 前缀:234 后缀:1234 | 1. 输入区号 2. 输入前缀 3.输入后缀 4. 点击验证 | 电话号码合法 |
电话_002 | 电话号码合法(区号为三位数字+其他正常) | 电话号码 | p0 | 打开电话号码验证程序 | 区号:123 前缀:234 后缀:1234 | 1. 输入区号 2. 输入前缀 3.输入后缀 4. 点击验证 | 电话号码合法 |
电话_003 | 电话号码不合法(区号为非三位数字+其他正常) | 电话号码 | p1 | 打开电话号码验证程序 | 区号:1234 前缀:234 后缀:1234 | 1. 输入区号 2. 输入前缀 3.输入后缀 4. 点击验证 | 电话号码不合法 |
电话_004 | 电话号码不合法(前缀为非0且非1开头的非三位数字+其他正常) | 电话号码 | p1 | 打开电话号码验证程序 | 区号:123 前缀:2345 后缀:1234 | 1. 输入区号 2. 输入前缀 3.输入后缀 4. 点击验证 | 电话号码不合法 |
电话_005 | 电话号码不合法(后缀为非四位数字+其他正常) | 电话号码 | p1 | 打开电话号码验证程序 | 区号:123 前缀:234 后缀:234 | 1. 输入区号 2. 输入前缀 3.输入后缀 4. 点击验证 | 电话号码不合法 |
电话_006 | 电话号码不合法(区号为非数字+其他正常) | 电话号码 | p1 | 打开电话号码验证程序 | 区号:12a 前缀:234 后缀:1234 | 1. 输入区号 2. 输入前缀 3.输入后缀 4. 点击验证 | 电话号码不合法 |
电话_007 | 电话号码不合法(前缀为非数字+其他正常) | 电话号码 | p1 | 打开电话号码验证程序 | 区号:123 前缀:23a 后缀:1234 | 1. 输入区号 2. 输入前缀 3.输入后缀 4. 点击验证 | 电话号码不合法 |
电话_008 | 电话号码不合法(后缀为非数字+其他正常) | 电话号码 | p1 | 打开电话号码验证程序 | 区号:123 前缀:234 后缀:123a | 1. 输入区号 2. 输入前缀 3.输入后缀 4. 点击验证 | 电话号码不合法 |
电话_009 | 电话号码不合法(前缀以0开头+其他正常) | 电话号码 | p1 | 打开电话号码验证程序 | 区号:123 前缀:023 后缀:1234 | 1. 输入区号 2. 输入前缀 3.输入后缀 4. 点击验证 | 电话号码不合法 |
电话_010 | 电话号码不合法(前缀以1开头+其他正常) | 电话号码 | p1 | 打开电话号码验证程序 | 区号:123 前缀:123 后缀:1234 | 1. 输入区号 2. 输入前缀 3.输入后缀 4. 点击验证 | 电话号码不合法 |
使用场景:需要大量测试数据输入,但是没法穷举测试的地方
- 输入框
- 下拉列表
- 单选复选框
2. 边界值分析法(限定边界规则)
解决边界值位数限制问题
选取正好等于、刚好大于、刚好小于边界的值作为测试数据
上点:边界上的点(正好等于)
离点:距离上点最近的点(刚好大于、刚好小于)
内点:范围内的点(区间范围内的数据)
最多:7点(不考虑类型,按照位数)
步骤:
- 明确需求
- 确定有效和无效等价类(只考虑类型)
- 确定边界范围值
- 提取数据编写测试用例
例子:
需求:通过边界值法验证标题长度的合法性。
要求:标题长度大于0,小于等于30个字符
有效:长度大于0小于或等于30的字符
无效:长度大于0小于或等于30的数字
上点:0,30
离点:-1,1,29,31
内点:15
总共7种,长度没有为-1的,且内点为15和有效重复
优化:离点–>考虑开闭区间,开区间选择内部离点,闭区间选择外部离点
使用场景:
- 在等价类的基础上针对有边界范围的测试数据输入的地方(重点关注边界)
- 常见词语描述:大小、尺寸、重量、最大、最小、至多、至少等修饰词语
- 典型代表:有边界范围的输入框类测试
3. 判断表法
场景:多条件有依赖关系
是一种以表格形式表示多条件逻辑判断的工具
组成:
- 条件桩:列出问题中的所有条件,列出条件的次序无关紧要
- 动作桩:列出问题中可能采取的操作,操作的排列顺序没有约束
- 条件项:列出条件对应的取值,所有可能情况下的真假值
- 动作项:列出条件项的、各种取值情况下应该采取的动作结果
例子:验证”若用户欠费或者关机,则不允许主被叫“功能的测试
规则:
- 判断表中贯穿条件项和动作项的一列就是一条规则
- 假设有n个条件,每个条件的取值有两个,全部组合为2的n次方种规则
步骤:
- 明确需求
- 画出判定表
1) 列出条件桩和动作桩
2)填写条件项,对条件进行全组合
3)根据条件项和组合确定动作项
4)简化、合并相似规则(有相同动作) - 根据规则编写测试用例
例子1:
条件桩:金额是否大于500、是否过期
动作项:发出批准单和提货单、发出通知单
测试用例:
测试编号 | 测试标题 | 项目/模块 | 优先级 | 前置条件 | 测试数据 | 测试步骤 | 预期结果 |
---|---|---|---|---|---|---|---|
order_001 | 发通知单(金额大于500,过期) | 订单 | p0 | 打开订单验证程序 | 1. 金额:600 2.是否过期:是 | 1. 输入金额 2. 输入是否过期 3. 点击验证 | 发通知单,不发批准单和提货单 |
order_002 | 发批准单和提货单(金额大于500,没有过期) | 订单 | p0 | 打开订单验证程序 | 1. 金额:600 2.是否过期:否 | 1. 输入金额 2. 输入是否过期 3. 点击验证 | 不发通知单,发批准单和提货单 |
order_003 | 发批准单和提货单、通知单(金额小于500,过期) | 订单 | p0 | 打开订单验证程序 | 1. 金额:400 2.是否过期:是 | 1. 输入金额 2. 输入是否过期 3. 点击验证 | 发通知单,发批准单和提货单 |
order_004 | 发批准单和提货单(金额小于500,没有过期) | 订单 | p0 | 打开订单验证程序 | 1. 金额:400 2.是否过期:否 | 1. 输入金额 2. 输入是否过期 3. 点击验证 | 不发通知单,发批准单和提货单 |
例子2:
文件修改规则
条件桩:第一列为A或者B、第二列是数字
动作桩:给出信息L、给出信息M、修改文件成功
4. 场景法
使用标准图和箭头来表达程序或业务的走向(流程图)
先测试业务,再测试单功能,单模块,单页面
例子:ATM机取款流程
对应的测试用例
相关文章:

软件测试学习笔记-测试用例的编写
7中测试分类 按照阶段可划分单元测试、集成测试、系统测试、验收测试。代码可见度划分黑盒测试、灰盒测试、白盒测试 单元测试:针对源代码的测试 集成测试:针对接口进行测试 系统测试:针对功能和非功能的测试 验收测试:公测、内测…...

『运维备忘录』之 Kubernetes(K8S) 常用命令速查
一、简介 kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写,是一个开源的,用于管理云平台中多个主机上的容器化的应用。kubernetes是基于容器技术的分布式架构解决方案,具有完备的集群管理能力&a…...

Android SDK 上传 Maven 喂奶级教程
最近领导给安排了个任务,让我把我们现有的一个 SDK 上传到 Maven 上去,方便客户直接用 gradle 依赖,不再需要拷贝 jar 和 so 了,此前我也看过一些相关的文章我想问题也不大,觉得工作量也就一两天的事情,主要…...

R语言绘图教程 | 双侧条形图绘制教程
写在前面 双侧条形图在我们的文章中也是比较常见的,那么这样的图形是如何绘制的呢? 以及它使用的数据类型是什么呢? 这些都是我们在绘制图形前需要掌握的,至少我们知道绘图的数据集如何准备,这样才踏出第一步。 今天的教程,我们会从数据的准备,以及数据如何整理,以及…...

ubuntu篇---ubuntu安装python3.9
ubuntu篇—ubuntu安装python3.9 在ubuntu上安装Python有两种方法:在线安装和源码编译安装。 方法1:使用apt在线安装 1.更新软件包列表并安装必备组件: $ sudo apt update $ sudo apt install software-properties-common2.将Deadsnakes PPA添加到系统…...
git初始化一个远程空仓库
目录 1. 仅做简单初始化2. 推送现有的非仓库文件夹3. 推送现有的仓库 git初始化一个远程空仓库主要有以下三种途径: 仅做简单初始化,例如添加 README.md 和 .gitignore。将现有的文件夹(非仓库)推送到远程仓库。将现有的仓库推送…...
装箱问题+宠物小精灵之收服+数字组合——01背包
一、装箱问题 (裸题) 有一个箱子容量为 V,同时有 n 个物品,每个物品有一个体积(正整数)。 要求 n 个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。 输入 第一行是一个整数 V (0 < V ≤ 20000)&…...

记一次页面接口502问题:“502 Bad Gateway”
接收别人的项目进行迭代,项目部署到服务器上之后,有一个接口数据刷不出来,一直502 后来联想到网关的问题,想通过设置白名单的方式解决,设置之后依旧不行。 查看nginx日志发现报错: *169 connect() failed …...

Oracle systemstate、gdb、dbx介绍
当数据库出现严重的性能问题或者hang了的时候, 可能最常用的办法就是重启数据库,简单有效解决问题;但是重启后如何追踪问题的根本原因成了难题,很多信息随着重启也消失不见了,让追查问题变的十分棘手,这时就…...

Stable Diffusion 模型下载:RealCartoon-Anime - V10
文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十下载地址模型介绍 这个检查点是从 RealCartoon3D 检查点分支出来的。它的目标是产生更多的“动漫”风格,因为我喜欢动漫。:)我知道有很多人做得很好(...
课时22:内置变量_字符串相关
2.4.2 字符串相关 学习目标 这一节,我们从 基础知识、简单实践、小结 三个方面来学习 基础知识 字符串相关的变量解析 字符串计数${#file} 获取字符串的长度字符串截取 - 语法为${var:pos:length} 表示对变量var从pos开始截取length个字符,pos为…...

软件应用实例分享,电玩计时计费怎么算,佳易王PS5游戏计时器系统程序教程
软件应用实例分享,电玩计时计费怎么算,佳易王PS5游戏计时器系统程序教程 一、前言 以下软件教程以 佳易王电玩计时计费管理系统软件V17.9为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 点击开始计时后,图片…...

架设游戏服务器租用价格?腾讯云和阿里云价格对比
游戏服务器租用多少钱一年?1个月游戏服务器费用多少?阿里云游戏服务器26元1个月、腾讯云游戏服务器32元,游戏服务器配置从4核16G、4核32G、8核32G、16核64G等配置可选,可以选择轻量应用服务器和云服务器,阿腾云atengyu…...
ag-Grid:对数据变化的单元格进行高亮显示
对单元格高亮 问:ag-grid 当 rowData 数据变化,如何对数据变化的党员个进行高亮? 解析: 在ag-Grid中,想要对数据变化的单元格进行高亮显示,你可以使用以下步骤来实现: 监听数据变化:首先,你需要监听rowData的变化。这可以通过在你的组件中观察rowData属性的变化来实…...

Oracle 几种行转列的方式 sum+decode sum+case when pivot
目录 原始数据: 方式一: 方式二: 方式三: unpivot的使用: 原始数据: 方式一: select t_name,sum(decode(t_item, item1, t_num, 0)) item1,sum(decode(t_item, item2, t_num, 0)) item2,s…...
[AIGC] Tomcat:一个简单 and 高效的 Java Web 服务器
Tomcat(Tomcat Server)是 Apache 基金会下的一个开源项目,它是一个简单 and 高效的 Java Web 服务器,支持 Servlet 2.5、JSP 2.2 和 EL 2.2 规范。Tomcat 是当今最受欢迎的 Java Web 服务器之一,它在 Java 世界中被广泛…...

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Toggle组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Toggle组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Toggle组件 组件提供勾选框样式、状态按钮样式及开关样式。 子组件 仅当Toggl…...

使用耳机壳UV树脂制作私模定制耳塞有哪些选择呢?
私模定制耳塞人士的选择可以从以下几个方面考虑: 专业经验:选择有丰富经验的私模定制耳塞人士,能够更好地理解用户需求,提供更专业的建议和服务。可以通过查看其作品和客户评价来了解其经验和口碑。材料质量:选择使用…...
什么是集群服务器
近一段时间来,集群服务器被广大站长热议,所谓集群服务器就是指很多台服务器把它们集中在一起来进行同一种服务。集群服务器也可以由很多个的计算机并行去计算,这样可以获得非常高的计算速度,提升服务器整体的工作效. 其实我们都知…...

HCIA-HarmonyOS设备开发认证V2.0-3.轻量系统内核基础
目录 一、前言二、LiteOS-M系统概述三、内核框架3.1、CMSIS 和 POSIX 整体架构3.2、LiteOS-M内核启动流程 四、内核基础4.1、任务管理4.2、时间管理(待续)4.3、中断管理(待续)4.4、软件定时器(待续) 五、内存管理5.1、静态内存(待续)5.2、动态内存(待续) 六、内核通信机制6.1、…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...

家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...

搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...

【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...
c# 局部函数 定义、功能与示例
C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...