当前位置: 首页 > 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项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…...

three.js从入门到精通系列教程002 - three.js正交相机OrthographicCamera

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>three.js从入门到精通系列教程002 - three.js正交相机OrthographicCamera</title><script src"ThreeJS/three.js"></script><script src&qu…...

Golang 搭建 WebSocket 应用(七) - 性能、可用性

在前面的文章中&#xff0c;提到过非功能性需求决定了架构。 今天我们再来考虑一下另外两个非功能性需求&#xff1a;性能和可用性。 前言 关于性能&#xff0c;其实并不是只有我们这个消息推送系统独有的问题。 对于所有的开发者而言&#xff0c;都多多少少会处理过性能相关…...

Qt 状态机框架:The State Machine Framework (一)

传送门: Qt 状态机框架:The State Machine Framework (一) Qt 状态机框架:The State Machine Framework (二) 一、什么是状态机框架 状态机框架提供了用于创建和执行状态图/表[1]的类。这些概念和表示法基于Harel的Statecharts:一种复杂系统的可视化形式,也是UML状态图的基…...

高通平台学习一

什么是QMI? Qualcom Message Interface 高通信息接口 高通平台目前都是非对称多核心&#xff0c;最主要的是AP和Modem。两个处理器怎么进行通信呢&#xff0c;我们把AP和Modem当作两个主机&#xff0c;问题就变得了很简单&#xff0c;TCP/IP协议不是一种非常成功的进程间跨主…...

Python爬虫时被封IP,该怎么解决?四大动态IP平台测评

在使用 Python 进行爬虫时&#xff0c;很有可能因为一些异常行为被封 IP&#xff0c;这主要是因为一些爬虫时产生的异常行为导致的。 在曾经的一次数据爬取的时候&#xff0c;我尝试去爬取Google地图上面的商家联系方式和地址信息做营销&#xff0c;可是很不幸&#xff0c;还只…...

积分梳状滤波器CIC原理与实现

CIC&#xff08;Cascade Intergrator Comb&#xff09;&#xff1a;级联积分梳状滤波器&#xff0c;是由积分器和梳状滤波器级联而得。滤波器系数为1&#xff0c;无需对系数进行存储&#xff0c;只有加法器、积分器和寄存器&#xff0c;资源消耗少&#xff0c;运算速率高&#…...

【项目管理】CMMI-原因分析与解决过程(CAR)

概述&#xff1a; “原因分析与解决”通过预防缺陷或者问题的引入以及识别并适当纳入优秀过程性能的原因&#xff0c;改进质量与生产率。 目录 1、文档结构 2、原因分析与解决过程域包括如下活动 3、选择需要加以分析的结果(启动条件) 4、过程活动与实践对照表 5、实例 1、…...

【设计模式】文件目录管理是组合模式吗?

组合模式是什么&#xff1f; 组合模式是一种将对象组合成树形结构以表示"部分-整体"的层次结构的设计模式。它使得用户对单个对象和组合对象的使用具有一致性。 组合模式在什么情况下使用&#xff1f; 当你发现你需要在代码中实现树形数据结构&#xff0c;让整体-部…...

利用appium自动控制移动设备并提取数据

安装appium-python-client模块并启动已安装好的环境 安装appium-python-client模块 在window的虚拟环境下执行pip install appium-python-client 启动夜神模拟器&#xff0c;进入夜神模拟器所在的安装路径的bin目录下&#xff0c;进入cmd终端&#xff0c;使用adb命令建立adb…...

day22_236二叉树最近公共祖先_235二叉搜索树(最近公共祖先_701插入一个节点_450删除一个节点)

文章目录 [236 二叉树的最近公共祖先](https://programmercarl.com/0236.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE)[235 二叉搜索树的最近公共祖先](https://program…...