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

软件测试必备:如何编写测试用例?

前言

今天想和大家来聊聊测试用例,这篇文章主要是想要写给软件测试小伙伴们的,因为我发现还是有很多小伙伴在遇到写测试用例的时候无从下手,我就想和大家简单的聊聊,这篇文章主要是针对功能测试的哟。

同时,我也准备了一份软件测试视频教程(含接口、自动化、性能等),需要的可以直接在下方观看,或者直接关注VX公众号:互联网杂货铺,免费领取

软件测试视频教程观看处:

华测教育软件测试进阶全套视频教程(2023全网最新版,软件测试进阶自学必备)

一、什么是测试用例?

测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。

通俗的讲:就是把我们测试系统的操作步骤按照一定的格式用文字描述出来。

二、写测试用例有什么好处?

1、理清思路,避免遗漏

这里是我们认为最重要的一点,假如我们测试的项目大而复杂,我们可以把项目功能细分,根据每一个功能通过编写用例的方式来整理我们测试系统的思路,避免遗漏掉要测试的功能点。

2、跟踪测试进展

通过编写测试用例,执行测试用例,我们可以很清楚的知道我们的测试进度。

3、历史参考

在我们所做的项目中,也许会有很多功能是相同或相近的,我们对这类功能设计了测试用例,便于以后我们遇到类似功能的时候可以做参考依据。

4、重复性

我们测试一个系统不是一个人测一遍就算测完的,需要多人反复的进行测试,那么我们就需要测试用例来规范和指导我们的测试行为。

三、测试用例的方法

好吧,咱知道啥是测试用例了,也是知道为什么要写测试用例了,那到底应该怎么写?无从下手啊。我们在写测试用例之前,先学习几种方法,它是我们写测试用例的指导思想。

1. 等价类划分

在某个输入域的子集合,在该子集合中,各个输入数据对于揭露程序中的错误都是等价的。假如有一个输入框要求输入1-10000个数,我们不可能用每一个数去试,我们输入5 和输入6去验证和揭露输入框的错误可以看做是等价的。那么这个时候我们就可以随机的抽取一些数据来进行验证。如:10 、99、7777......

等价类分:有效等价类和无效等价类

输入框要求输入1-10000的数

有效等价类:可以输入1-10000之间的数来验证,如:2、5、99、8495......

无效等价类:可以输入1-10000之外的任意字符验证,如:20000、字母、下划线、特殊符号、空格、回车.....

2. 边界值

边界值是对等价类的补充,测试工作经验告诉我们,大量的错误是出在输入输出的边界价上。我们还拿上面的例子,一个输入框要求输入1-10000之间的数。我们要测它有没有超出这个范围,如:0、-1、-2、1000、10001.....等等,来判定是否超出了我们的范围。

3. 因果图

因果图方法最终生成的就是判定表,它适合于检查程序输入条件的各种组合情况。举个例子:原因:A=0,B=0,结果我就可以判定:A=B。确切的说他是一种因果关系思想。它会无形中指导这我们的测试。当然了,我们为了以免遗漏,可以把系统中的因果关系用图画出。不过系统大而复杂的话就是个体力活了。呵呵。

4. 错误推测法

基于经验和直觉推测出系统可能存在的错误,从而有针对性的设计测试用例的方法。

5. 其它

设计测试用例的方法有很多,我们常用就上面几种,其它的方法还有:状态迁移图、流程分析法、正交验证法等等。

​四、测试用例的格式与要素

一个测试用例应该包括:编号,标题,测试场景,测试步骤,预期结果。

当然还可加入一些它选项,如:优先级、测试阶段....

注:上面的格式取自《微软的软件测试之道》,它并不一定适合你,我只是让大家对测试格式有个了解。

关于测试用例的存放管理:

1. 项目管理系统自带的用例管理,一般用例会与项目挂钩,有固定的格式,搜索、修改等功能,使用起来非常方便。如:禅道项目管理、QC、bugfree 等等都带的有用例管理功能。

2. 通过world\Excel文档形式管理,这样的好处就是自己定义测试用例的格式。

测试用例例子:

基础知识了解的差不多了,下面来看一个具体的测试用例。我们会有更深刻的认识。

注:这不是一个完整的测试用例,格式也不是固定必须这样的,你们可以根据自己的需求编写设计测试用例。

除了上面的那些之外我们还需知道有关测试用例的。

五、我们在什么时候可以设计测试用例?

当根据客户的需求整理出项目需求分析文档时,我们就可以根据需求文档来编写测试用例了。但是,一般我们(国内大多小公司)项目需求文档都非常“简陋”,所以,很难根据需求文档设计测试用例。

我们只有等到项目开发人员把项目开发出来,给我们系统文档、部署环境、数据库结构(如果系统牵涉到数据库的话),我们根绝这些文档来设计测试用例。

六、测试用例的评审与更新

我们设计的测试用例设计完成之后,是否完整?是否符合系统?符合客户要求?对用例做一个评审是必不可少。关于评审的方式,不同的公司有不同的流程。

我们编写的测试用例也不是经过评审之后就不变了,随着需求的变更、功能的改进,测试用例当然也需要更新和变动。

七、什么情况下不适合写测试用例

1、文件时间

如果一个功能我很快就测试完了,而且只需要测试一遍,但我们设计测试用例时却比较麻烦,花时间也长。这个时候就没必要编写测试用例了。

2、需求变动大且频繁

需求的功能变动非常频繁,而且变动很大,之前编写的测试用例根本没法使用,必须要重新编写,这个时候也没必要去设计测试用例了。

3、项目时间不允许

这一项是不太厚道的做法,如果不是急需交付客户的话,尽量不要这样做;当然了,如果只是给客户展示或试用,可以在之后进行补充和完善测试用例。

不要编写不完整或别人看不懂的测试用例,那样就没有意义了。

写在最后

PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G。如需要软件测试学习资料,关注公众号(互联网杂货铺),后台回复1,整理不易,给个关注点个赞吧,谢谢各位大佬!

☑ 240集-零基础到精通全套视频课程
☑ [课件+源码]-完整配套的教程
☑ 18套-测试实战项目源码
☑ 37套-测试工具软件包
☑ 268道-真实面试题
☑ 200个模板-面试简历模板、测试方案模板、软件测试报告模板、测试分析模版、测试计划模板、性能测试报告、性能测试报告、性能测试脚本用例模板(信息完整)

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

相关文章:

软件测试必备:如何编写测试用例?

前言 今天想和大家来聊聊测试用例,这篇文章主要是想要写给软件测试小伙伴们的,因为我发现还是有很多小伙伴在遇到写测试用例的时候无从下手,我就想和大家简单的聊聊,这篇文章主要是针对功能测试的哟。 同时,我也准备…...

windows安装数据库MySQL

windows安装数据库MySQL 文章目录 windows安装数据库MySQL一、MySQL官网下载压缩包二、在D盘新建文件夹D:\MySQL,将下载的压缩包解压到该文件夹下三、配置环境变量四、通过命令行模式安装、启用、配置SQL服务 一、MySQL官网下载压缩包 下载地址:https:/…...

2023CCF中国开源大会 | 麒麟信安作为首批合作伙伴入驻全国信创开源广场

聚开源各界群智,于湘江之滨论道。10月21-22日,以“开源联合,聚力共赢”为主题的2023 CCF中国开源大会(CCF ChinaOSC)在长沙隆重召开。本届大会由中国计算机学会、开放原子开源基金会主办,中国工程院院士、鹏…...

python网络爬虫实例

目录 1、访问百度 2、输入单词百度翻译 3、豆瓣电影排行榜 4、豆瓣电影top250 5、下载美女壁纸 1、访问百度 from urllib.request import urlopen url"http://www.baidu.com" respurlopen(url)with open("mybaidu.html",mode"w") as f:f.wr…...

ArcGIS中如何为跨带数据投影?

北京54、西安80高斯克吕格投影是我国常用的投影坐标系统,它们是一种分带投影方式,有3和6分带,不适合大范围内的投影使用。但是如果有份数据范围较大,跨越了多个度带,该选择哪个坐标系统进行投影转换呢? 在大范围内,常用的坐标系统有Albers等面积投影和Lambert等角投影,…...

如何在Ubuntu中安装libevent库

我自己在ubuntu 22 和20上都安装成功了。应该是每个版本都适合的。 我主要是整合参考这两个人的。 Ubuntu安装及测试Libevent_如何查看ubuntu是否安装了libevent-CSDN博客 【精选】Linux Ubuntu 20.04LTS安装OpenSSL步骤_ubuntu安装openssl-CSDN博客 下载方法一&#xff1a…...

领域高口碑 | 中科院1区TOP,Elsevier出版社,仅1个月Accept!稳定检索40年!

【SciencePub学术】本期,小编给大家推荐的是一本Elsevier旗下、稳定检索40年、影响因子为10.0的中科院1区TOP刊,期刊详情及专题信息如下: 期刊简介 COMPUTERS IN INDUSTRY ISSN:0166-3615 E-ISSN:1872-6194 IF&a…...

RDBMS 的历史回顾

“数据库”这个词是怎么来的?当 SQL 是 SEQUEL 时它代表什么?通过这篇有关 RDBMS 历史的文章了解所有这些内容以及更多内容。 埃里克迪特里希用户头像 经过 埃里克迪特里希 核心 Anush Gasparyan 用户头像 经过 阿努什加斯帕里安 2017年7月21日 意见…...

windows 离线安装 vue 环境

由于公司要求在内网开发项目,而内网不能连接外网,因此只能离线安装 vue 环境,在网上找过很多的离线安装方法,但都没有成功,于是在不断的尝试中找到了以下方法。 1、找一台与内网电脑相同系统的有网电脑。 2、在有网的电…...

python实现批量pdf转txt和word

文章目录 背景需求环境安装完整代码效果 背景需求 已经获取到了大量的pdf在download文件夹中,但是我需要的是txt文件和word文件~ 环境安装 pip install pdf2docx pdfminer.six完整代码 # pip install pdf2docx pdfminer.siximport os from pdf2docx …...

c++ 并发与多线程(12)线程安全的单例模式-2

一、内部静态变量的懒汉单例(C++11 线程安全) #include <iostream> #include <thread> #include <vector>class Single { public:// 获取单实例对象static Single& GetInstance();// 打印实例地址void Print();private:// 私有构造函数,防止外部创建对…...

银河麒麟v10x86或者arm离线安装服务

银河麒麟v10x86或者arm离线安装服务 最近有个项目&#xff0c;甲方的服务器用的全是国产化服务器银河麒麟&#xff0c;架构是x86的然后也无法连接外网&#xff0c;需要离线安装服务正常思路就是找到离线安装的包&#xff0c;然后拷贝到现场的服务器中进行安装所以问题就在于如…...

【Ansible自动化运维工具 1】Ansible常用模块详解(附各模块应用实例和Ansible环境安装部署)

Ansible常用模块 一、Ansible1.1 简介1.2 工作原理1.3 Ansible的特性1.3.1 特性一&#xff1a;Agentless&#xff0c;即无Agent的存在1.3.2 特性二&#xff1a;幂等性 1.4 Ansible的基本组件 二、Ansible环境安装部署2.1 安装ansible2.2 查看基本信息2.3 配置远程主机清单 三、…...

Telegram 引入了国产小程序容器技术

Telegram 宣布为其开发者提供了一项“能够在 App 中运行迷你应用”的新功能&#xff08; 迷你应用即 Mini App&#xff0c;下文中以“小程序”代替&#xff09;。 在一篇博客文章中&#xff0c;Telegram 的开发者写到“小程序提供了可替代互联网网站的灵活界面&#xff08;cre…...

Capture One Pro 23图像处理工具「Mac」

Capture One Pro是一款专业的图像处理软件&#xff0c;旨在为摄影师和其他专业用户提供最佳的图像编辑和后期处理工具。 Capture One Pro 的主要功能包括 RAW 文件处理、图像编辑、颜色校正、曝光控制、局部调整、批处理等。它的相机支持列表非常广泛&#xff0c;几乎可以支持…...

rust OJ实战

目录 力扣 414. 第三大的数 力扣 628. 三个数的最大乘积 力扣 414. 第三大的数 给你一个非空数组&#xff0c;返回此数组中 第三大的数 。如果不存在&#xff0c;则返回数组中最大的数。 示例 1&#xff1a; 输入&#xff1a;[3, 2, 1] 输出&#xff1a;1 解释&#xff1a;…...

聊聊KafkaListener的实现机制

序 本文只要研究一下KafkaListener的实现机制 KafkaListener org/springframework/kafka/annotation/KafkaListener.java Target({ ElementType.TYPE, ElementType.METHOD, ElementType.ANNOTATION_TYPE }) Retention(RetentionPolicy.RUNTIME) MessageMapping Documented …...

Golang洗牌算法(Golang乱序算法)

Golang 洗牌算法&#xff08;乱序算法&#xff09;&#xff1b;需求背景&#xff1a;从一个文件下下读取所有文件&#xff0c;获取他们的名字&#xff0c; 将名字乱序排序&#xff0c;按着乱序后的序列&#xff0c;通过名字去找到文件&#xff0c;再上传&#xff0c;以达到上传…...

SpringBoot 源码分析(三) 监听器分析以及属性文件加载分析

前言 在创建SpringBoot项目的时候会在对应的application.properties或者application.yml文件中添加对应的属性信息&#xff0c;这些属性文件是什么时候被加载的&#xff1f;如果要实现自定义的属性文件怎么来实现&#xff1f;在讲属性加载之前先讲下监听器分析。 一、监听器分…...

记录nvm use node.js版本失败,出现报错: exit status 1: ��û���㹻��Ȩ��ִ�д˲�����

使用管理员权限运行cmd&#xff0c;再使用nvm use node.js版本号 参考&#xff1a; nvm use (node版本号)时报错&#xff1a; exit status 1: &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;㹻&#xfffd;&#xfffd;Ȩ&#xfffd;&#xfffd;ִ&#xf…...

【蓝牙协议】简介:蓝牙芯片、蓝牙协议架构

文章目录 蓝牙芯片架构另一个视角由下到上看&#xff1a;Controller-->Host由上到下看&#xff1a;Host-->Controller 蓝牙协议架构视角HW层——蓝牙芯片层Transport——数据传输层HOST——协议层 总结 参考&#xff1a;https://zhuanlan.zhihu.com/p/585248998 参考&…...

【深度学习】

什么是深度学习&#xff1f; 感知器 为了实现模拟人类的学习&#xff0c;科学家们首先设计了构成神经网络的基本结构神经元&#xff08;感知器模型&#xff09;&#xff0c;然后再由大量的神经元构成复杂的&#xff0c;能够实现各种功能的神经网络。 这种模式和超能陆战队中的…...

centos启动tomcat 并指定jdk 版本

在tomcat的catalina.sh文件手动设置JAVA_HOME变量即可 例如&#xff1a; 前提是文件存在 保存配置重新启动tomcat...

day37(事件轮询机制 ajaxGet执行步骤与案例(五个步骤) ajax属性 PHP返回JSON对象(两种))

一.事件轮询机制 1. 无论同步还是异步代码都要经过主线程编译&#xff0c;同步代码开始排在执行栈(主线程)上&#xff0c;异步代码开 始存放在任务队列中 2. 主线程优先执行同步代码&#xff0c;同步代码必须前一行执行完&#xff0c;后一行才能执行&#xff1b;当异步代码…...

Flume基本使用--mysql数据输出

MySQL数据输出 在MySQL中建立数据库school&#xff0c;在数据库中建立表student。SQL语句如下&#xff1a; create database school; use school; create table student(id int not null,name varchar(40),age int,grade int,primary key(id) ); 请使用Flume实时捕…...

MySQL——EXPLAIN用法详解

EXPLAIN是MySQL官方提供的sql分析的工具之一&#xff0c;可以用于模拟优化器执行sql查询语句&#xff0c;从而知道MySQL是如何处理sql语句。EXPLAIN主要用于分析查询语句或表结构的性能瓶颈。 以下是基于MySQL5.7.19版本进行分析的&#xff0c;不同版本之间略有差异。 1、EXP…...

69 划分字母区间

划分字母区间 题解1 贪心1&#xff08;方法略笨&#xff0c;性能很差&#xff09;题解2 贪心2&#xff08;参考标答&#xff09; 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段&#xff0c;同一字母最多出现在一个片段中。 注意&#xff0c;划分结果需要满足&am…...

文件上传漏洞(1), 文件上传绕过原理

文件上传漏洞 一, 前端校验上传文件 添加 Javascript 代码&#xff0c;然后在 form 表单中 添加 onsubmit"returb checkFile()" <script>function checkFile() {// var file document.getElementsByName(photo)[0].value;var file document.getElementByI…...

【ARM 嵌入式 C 入门及渐进 10 -- 冒泡排序 选择排序 插入排序 快速排序 归并排序 堆排序 比较介绍】

文章目录 排序算法小结排序算法C实现 排序算法小结 C语言中常用的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序。下面我们来一一介绍&#xff1a; 冒泡排序&#xff08;Bubble Sort&#xff09;&#xff1a;冒泡排序是通过比较相邻元素的大小进行排…...

虹科 | 解决方案 | 汽车示波器 学校教学方案

虹科Pico汽车示波器是基于PC的设备&#xff0c;特别适用于大课堂的教学、备课以及与师生的互动交流。老师展现讲解波形数据&#xff0c;让学生直观形象地理解汽车的工作原理 高效备课 课前实测&#xff0c;采集波形数据&#xff0c;轻松截图与标注&#xff0c;制作优美的课件&…...