当前位置: 首页 > news >正文

如何编写一个好的测试用例?才能防止背黑锅

如何编写一个好的测试用例?才能防止背黑锅

    • 什么是测试用例?
    • 一个好的测试用例包含什么?
    • 测试用例的编写思路
    • 总结

什么是测试用例?

在这之前,思考一个问题,下面这个简单的QQ登录页面,一共又多少条测试用例?

Alt

答案是100条以上。

那么,什么是测试用例?

测试用例是用于检查特定应用程序/软件是否正常工作所需的软件测试的定义格式。测试用例由需要检查以测试应用程序或软件的一组特定条件组成,即,更简单地说,当检查条件时,它会检查结果输出是否满足预期输出。测试用例由ID、条件、步骤、输入、预期结果、结果、状态、备注等各种参数组成。

如果我们有时间能把所有的情况都试一下的话,肯定是不会存在漏测的情况。但是现在的问题就是时间真的是不允许,尤其现在都在走敏捷的路子,大家恨不得一天上一个新功能,所以说能留给测试的时间真的很少。

怎样既能覆盖到所有的测试场景,测试的执行数量又能控制在一个比较合适的数字,这个就是我们设计测试用例的过程。

一个好的测试用例包含什么?

先来谈谈测试用例的作用

检查软件是否满足客户期望:测试用例有助于检查特定模块/软件是否满足指定要求。

检查软件与条件的一致性:测试用例确定特定模块/软件是否可以在给定的一组条件下工作。

缩小软件更新范围:测试用例有助于缩小软件需求和所需更新的范围。

更好的测试覆盖率:测试用例有助于确保覆盖并记录所有可能的场景。

为了测试执行的一致性:测试用例有助于保持测试执行的一致性。记录良好的测试用例可以帮助测试人员查看测试用例并开始测试应用程序。

在维护过程中很有帮助:测试用例很详细,这使得它们在维护阶段很有帮助

其实,它最重要的作用是这个

避免背黑锅!!!!
当出现生产bug的时候,直接甩他测试用例,这个我明明覆盖过了,为什么还会有

在这里插入图片描述
一个标准的测试用例,应该包含以下内容

模块名称:定义测试功能的主题或标题。

测试用例 ID:分配给测试用例中每个条件的唯一标识符。

测试者姓名:将执行测试的人员的姓名。

测试场景:测试场景为测试人员提供了简短的描述,例如提供一个小的概述以了解需要执行的操作以及测试的小功能和组件。

测试用例描述:给定软件需要检查的条件。例如。检查年龄输入框是否只有数字验证有效。

测试步骤:检查状况所需执行的步骤。

先决条件:测试过程开始之前需要满足的条件。

测试优先级:顾名思义,优先考虑必须首先执行的测试用例,或者更重要且可以稍后执行的测试用例。

测试数据:检查条件时要采取的输入。

测试预期结果:测试结束时应预期的输出。

测试参数:分配给特定测试用例的参数。

实际结果:最后显示的输出。

环境信息:进行测试的环境,例如操作系统、安全信息、软件名称、软件版本等。

状态:测试的状态,例如通过、失败、NA 等。

评论:关于测试中关于软件改进的评论。

但是,又有人会说了,老夫干测试,就是一把梭,直接用户思维去测试

内容作用
模块名称定义测试功能的主题或标题
测试用例 ID分配给测试用例中每个条件的唯一标识符。
测试者姓名将执行测试的人员的姓名
测试场景测试场景为测试人员提供了简短的描述
测试用例描述给定软件需要检查的条件。例如。检查年龄输入框是否只有数字验证有效
测试步骤将执行测试的人员的姓名
先决条件测试过程开始之前需要满足的条件
测试优先级顾名思义,优先考虑必须首先执行的测试用例,或者更重要且可以稍后执行的测试用例
测试数据检查条件时要采取的输入
测试预期结果测试结束时应预期的输出
实际结果最后显示的输出
环境信息进行测试的环境,例如操作系统、安全信息、软件名称、软件版本等
状态测试的状态,例如通过、失败、NA 等
评论关于测试中关于软件改进的评论

但是,又有人会说了,老夫干测试,就是一把梭,直接用户思维去测试

在这里插入图片描述其实是不对的

软件测试过程不仅限于查找当前软件中的错误,还包括在效率、可用性和准确性等各个方面寻找升级软件的措施。因此,为了测试软件,软件测试提供了一种称为测试用例的特定格式

测试用例的编写思路

1、划分功能模块

2、正向功能验证:正常操作功能是否实现

3、单个功能项验证:正向+异常

4、功能之间交互验证:模块之间的数据传递

5、隐形需求:熟悉业务
+
以上面的登录页面,举一个例子,思维导入如下
在这里插入图片描述按照模块划分,光是正向的用例就已经这么多条了,这还是没有考虑弱网测试,恶意登录等一些特殊情况

总结

写好一个清晰可用的测试用例,具有非常重要的意义。它们是验证和确保软件产品或系统符合其预定需求和规格的关键工具,是我们的基本功之一。

以上就是今天的全部内容,希望对大家有所帮助,也希望大家多多留言、点赞、在看、转发四连爱❤️ 支持。 咱们下篇文章见,Bye~👋
在这里插入图片描述

一个正经的测试,专注于AI与软件测试技术和宝藏干货分享,每天准时更新原创技术文章,每月不定期赠送技术书籍,让我们在测试会所在测试社区这个大家庭一起学习交流。喜欢记得星标⭐我,每天及时获得最新推送,

相关文章:

如何编写一个好的测试用例?才能防止背黑锅

如何编写一个好的测试用例?才能防止背黑锅 什么是测试用例?一个好的测试用例包含什么?测试用例的编写思路总结 什么是测试用例? 在这之前,思考一个问题,下面这个简单的QQ登录页面,一共又多少条…...

笨蛋学设计模式行为型模式-观察者模式【14】

行为型模式-观察者模式 8.1观察者模式:arrow_up::arrow_up::arrow_up:8.1.1概念8.1.2场景8.1.3优势 / 劣势8.1.4观察者模式可分为观察者的基本结构: 8.1.5观察者模式8.1.6实战8.1.6.1题目描述8.1.6.2输入描述8.1.6.3输出描述8.1.6.4代码 8.1.7总结 8.1观察者模式⬆️…...

上海智慧岛大数据云计算中心项目正式封顶!

上海智慧岛大数据云计算中心封顶仪式现场 1月15日,云端股份在上海智慧岛大数据云计算中心举行封顶仪式。云之端网络(江苏)股份有限公司(以下称“云端股份”)总经理贡伟力先生,常务副总张靖先生等公司成员&…...

靶场实战(19):OSCP备考之VulnHub HA WORDY

交流技术可以关注公众号 OneMoreThink 或后台添加微信,欢迎提出宝贵建议。 0、总结 0.1、攻击思路 资产发现 主机发现服务发现漏洞发现(获取权限) 80端口/HTTP服务 组件漏洞URL漏洞:RFI、FileUpload提升权限 www-data用户 sudosui…...

大模型学习与实践笔记(九)

一、LMDeply方式部署 使用 LMDeploy 以本地对话方式部署 InternLM-Chat-7B 模型,生成 300 字的小故事 2.api 方式部署 运行 结果: 显存占用: 二、报错与解决方案 在使用命令,对lmdeploy 进行源码安装是时,报错 1.源…...

fpga目前就业形势咋样?

FPGA今年各厂给本科生的薪资大概是15-30K,研究生是20-40K,平均薪资在25k左右, 当然具体薪资还要看去哪个公司,哪个城市,以及个人的学校、专业、能力水平、及包括面试时的表现,运气等,这些都会导…...

Linux7 安装 Oracle 19C RAC 详细图文教程

实战篇:Linux7 安装 Oracle 19C RAC 详细图文教程 本文是按照:https://www.modb.pro/db/154424的思路进行编写 一、安装前规划 安装RAC前,当然要先做好规划。具体包含以下几方面: 节点主机版本主机名实例名Grid/Oracle版本Publi…...

【SpringBoot】SpringBoot 项目初始化方法

github 搜索 springboot 模板 github 搜索 springboot 模板,拉取现成代码。 SpringBoot 官方的模板生成器 SpringBoot 官方的模板生成器(https://start.spring.io/) 在 IDEA 开发工具中生成 这里我修改成阿里的镜像主要是要使用 Java8。 …...

34. 在排序数组中查找元素的第一个和最后一个位置(二分查找)

二分查找到目标值然后左右找到坐标 问题在于&#xff1a;找左右坐标的时候时间复杂度不是O(logN) class Solution {public int[] searchRange(int[] nums, int target) {int[] ans {-1, -1};if (nums.length 0) return ans;int l 0, r nums.length;while (l < r) {int…...

Mysql深度分页优化的一个实践

问题简述: 最近在工作中遇到了大数据量的查询场景, 日产100w左右明细, 会查询近90天内的数据, 总数据量约1亿, 业务要求支持分页查询与导出. 无论是分页或导出都涉及到深度分页查询, mysql通过limit/offset实现的深度分页查询会存在全表扫描的问题, 比如offset1000w, limit10…...

【JavaEE进阶】 SpringBoot配置⽂件

文章目录 &#x1f340;配置⽂件的作⽤&#x1f334;SpringBoot配置⽂件&#x1f38b;配置⽂件的格式&#x1f384;properties配置⽂件&#x1f6a9;properties基本语法&#x1f6a9;读取配置⽂件&#x1f6a9;properties的缺点 &#x1f333;yml配置⽂件yml基本语法&#x1f6…...

excel 常用函数

求和函数&#xff1a; SUM&#xff1a; 将单个值、单元格引用或区域相加。 案例&#xff1a;SUM(A1:A5) &#xff08;结果&#xff1a;A1到A5单元格的值求和&#xff09; SUMIF&#xff1a; 对选中范围内符合指定条件的值求和。 案例&#xff1a;SUMIF(B1:B5, ">50&qu…...

【React基础】– JSX语法

文章目录 认识JSX为什么React选择了JSXJSX的使用 React事件绑定this的绑定问题事件参数传递 React条件渲染React列表渲染列表中的key JSX的本质createElement源码Babel官网查看直接编写jsx代码 虚拟DOM的创建过程jsx – 虚拟DOM – 真实DOM声明式编程 阶段案例练习 认识JSX ◼ …...

SpringBoot 项目中后端实现跨域的5种方式!!!

文章目录 SpringBoot 项目中后端实现跨域的5种方式&#xff01;&#xff01;&#xff01;一、为什么会出现跨域问题二、什么是跨域三、非同源限制四、Java后端 实现 CORS 跨域请求的方式1、返回新的 CorsFilter(全局跨域)2、重写 WebMvcConfigurer(全局跨域)3、使用注解 (局部跨…...

Vue3前端开发,provide和enject的基础练习,跨层级传递数据

Vue3前端开发,provide和enject的基础练习,跨层级传递数据&#xff01; 声明:provide虽然可以跨层级传递&#xff0c;但是依旧是需要由上向下的方向传递。根传子的方向。 <script setup> import {onMounted, ref} from vue import Base from ./components/Base.vue impor…...

Python 循环结构值while循环

while循环是一种常用的循环结构&#xff0c;它会在满足特定条件的情况下重复执行一段代码块。 基本语法&#xff1a; while condition:# 循环体代码while循环的执行过程如下&#xff1a; 首先&#xff0c;判断循环条件condition&#xff08;布尔表达式&#xff09;是否为真。…...

MSSQL-识别扩展extended event(扩展事件)中的时间单位

经常使用sqlserver extended event(扩展事件)&#xff0c;但是总是忘记扩展事件使用的时间单位&#xff0c;不确定它们是 秒、毫秒、还是微秒&#xff1f; 以下下代码能够从 相关DMV中提取description字段内容来识别时间单位&#xff1a; SELECT [p].[name] [package_name],[o…...

vue3中l和vue2中v-model不同点

vue2比较让人诟病的一点就是提供了两种双向绑定&#xff1a;v-model和.sync&#xff0c; 在vue3中&#xff0c;去掉了.sync修饰符&#xff0c;只需要使用v-model进行双向绑定即可。 为了让v-model更好的针对多个属性进行双向绑定&#xff08;vue2中自定义组件中v-model只能使用…...

使用 Swift 代码优化项目编译速度

引言 软件的性能是评价一个软件质量的重要指标&#xff0c;尤其在今天这个时代&#xff0c;性能已成为大型项目不可或缺的考虑因素之一。对于用户量极大的软件&#xff0c;如网银系统、在线购物商城等&#xff0c;更是必须保证其高效稳定的性能。在这种背景下&#xff0c;优化…...

基于springboot+vue的社区团购系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...