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

如何高效地设计测试用例并评审

编写出好的测试用例是每一个测试工程师的职责,但在实际工作中大家写的测试用例往往需要不断地修改才能使用,这不仅浪费了时间,还容易让测试工程师产生自我否定的情绪,甚至在团队中产生各种矛盾。

那如何高效地设计测试用例呢?团队内部又该如何处理测试用例的编写呢?下面就个人和团队的做法给出建议,希望能够帮助到大家。

 个人写测试用例

个人在写测试用例时,设计方法用了很多,执行步骤也写了不少,但实施测试时却发现所写的步骤很大程度上无法衔接,需要进行修改才能执行下去,这种情况基本都是对软件界面操作了解不够而引发的,而软件界面操作是有规律可循的。

以下面较常见的界面来讲解测试用例的设计思路和具体做法。

1.1 界面功能分析

首先,图中红色加粗的信息项是必填项,在界面设计时往往都放在前面。非必填项则放在必填项的后面

软件并不会在输入某个数据时立即校验该数据的合法性和正确性,而是在点击“保存”按钮,提交数据时进行数据校验

数据项校验顺序:从左至右、从上至下。非必填项若无数据则不校验

校验提示原则1:根据校验顺序逐项校验,遇到错误立即弹框提示,终止校验过程,数据提交失败

校验提示原则2:首先检验整体数据的完整性,然后注意检验合法有效。即先检验所有必填项都有没有数据,然后才检验数据对不对!

1.2 信息提示规则说明

当发现一个问题时,就已经无法完成任务,后面的数据项是否还有问题已不重要了。软件无法控制用户的操作行为,不会一次性提示出所有的数据项错误,因为用户如果没改完、没改好、不小心把对的数据改错了等等行为,都会导致这种一次性的提示没有意义。最关键的是这些信息显示在提示框中,用户点击“确定”按钮后就消失了,他能完全记住吗?

1.3 测试数据设计

对每一项数据均采用多个技术设计出若干个非法无效数据和有效数据,所有必填项的有效数据拼成一组组的完整数据,数据组的个数按最多的有效数据项来算,有效数据个数不足的数据项可将已有的有效数据进行复制,补齐个数的不足。

1.4 测试用例设计大体步骤

1) 所有必填、非必填均为空,然后点击【保存】,系统提示:【姓名】不能为空

2) 给【姓名】填入一个非法数据后点击【保存】,系统提示:【年龄】不能为空

3) 给【年龄】填入一个非法数据后点击【保存】,系统提示:【性别】不能为空

4) 给【性别】填入一个非法数据后点击【保存】,系统提示:【学历】不能为空

5) 给【学历】填入一个非法数据后点击【保存】,系统提示:【身高】不能为空

6) 给【身高】填入一个非法数据后点击【保存】,系统提示:【体重】不能为空

7) 给【体重】填入一个非法数据后点击【保存】,系统提示:【姓名】数据错误。注意:至此所有必填项的必填性已测完

8) 依次给【姓名】填入其它非法数据后点击【保存】,系统提示:【姓名】数据错误。注意:填一个非法就点击【保存】

9) 给【姓名】填入一个合法数据后点击【保存】,系统提示:【年龄】数据错误。注意:此时对【姓名】的所有非法已测完,并测试了一个合法

10) 循环第8和第9步,对其余必填项都做相同的操作,先填当前数据项的所有非法,最后,跟一个合法。至此,所有必填项的非法数据均测完,而合法数据测试了一组

11) 将必填项的剩余未测的多组数据,按组填入,然后点击【保存】,完成剩下的必填项测试。至此对必填项的合法与非法测试已完成

12) 非必填项单独测试,可将前面必填项的合法数据拿出一组来配合

 团队写测试用例

团队工作最大的问题就是每个人的测试数据都是按自己的思路和要求来设计的,当大家的测试用例放在一起时,无法构成一套,不能完整的对系统进行测试,改动量很大。尤其对查询、统计、报表类功能影响巨大,几乎不能测试!

团队编写测试用例的原则是:

功能滞后的用例,编写时需向前置功能的用例提出数据要求

前置功能的用例在满足自己测试的需求基础上要考虑后续测试的数据要求,最好能融合(留下的就是满足后续功能要求的数据)

例如:

张三写【材料入库】,增删改功能执行后保留在系统中有两条数据。

李四写后续的【材料出库】,则首先利用张三保留在系统中有两条数据,若数据不够,李四要对张三提出添加数据的具体要求来满足自己的测试工作。

依此类推,则整个团队的测试用例就能写成一套,这样的测试用例可用性非常高,执行时基本不过脑子,只看预期结果。

建议一开始就召开专门的测试用例设计会议来沟通测试数据的问题

笔者做测试经理时就是这样做的,测试工程师刚开始的时候很抵触,觉得这样做很麻烦且进度慢,但当进入测试执行阶段,他们都很开心,因为测试用例执行的很流畅,也没有以往的那些改用例的活了。

 高效

就是做一件事当几件事来用。具体说就是一个测试数据可以测多个方面,这就是高效!

而测试的高效就是测试数据的高效,那么怎么做呢?

3.1 关于非法数据

非法的数据要测,且要用心设计,但无法进入系统中

3.2 关于合法数据

从功能角度说,测试用例有合法与非法之分,一般合法数据的设计只要合法就行,但往往不满足业务,此时要为业务测试重新设计数据,费时费力。需要合并合法数据与业务数据,提高用例的效率,即高效!

合并时,使用业务数据来替代合法数据。对测试工程师而言,很可能不懂业务,没关系用户懂,并且用户手头就有很多的业务数据,可以找用户获取这些业务数据。

要注意用户业务数据的保密!21年下半年国家正式实施《中华人民共和国数据安全法》,对数据的获取、传播和使用都有法律上要求。

 评审

有很多关于评审的做法,我这里不再累述,当前面的几点都做到了、做好了,其实评审时要评什么,怎么评,也就呼之欲出了。

个体用例的设计是否合理,与软件的操作是否相符,这是一个重点。

整体用例的前后数据是否呼应,是否能构成一套,这是另一个重点。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

在这里插入图片描述

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!   

相关文章:

如何高效地设计测试用例并评审

编写出好的测试用例是每一个测试工程师的职责,但在实际工作中大家写的测试用例往往需要不断地修改才能使用,这不仅浪费了时间,还容易让测试工程师产生自我否定的情绪,甚至在团队中产生各种矛盾。 那如何高效地设计测试用例呢&…...

基于python+Django知识图谱的医疗问答系统设计与实现

摘 要 从信息技术的发展至今,各色各样的技术能够满足各类人群的需求,能够让各种业务行业的痛点变成能够可以解决的方法,随着我们经济的不断提高,越来越多的人都该关注健康,那么健康饮食、健康医疗是我们生活中所追求的…...

cuda编程常见问题

cuda环境配置 参考链接 https://blog.csdn.net/weixin_43788327/article/details/125823507?spm1001.2014.3001.5506 疑难问题 在学习《GPU高性能编程CUDA实战》这本书时,发现书里面的代码很多变量都没定义过,经过搜索发现这都是书上自带的代码。 代…...

QTday3

作业1:通过对话框实现保存文件 void burger::on_saveBtn_clicked() {//调用函数,获取文件路径QString filename QFileDialog::getSaveFileName(this,"选择文件夹","./","Text File(*.txt)");if(filename.isNull()){QMes…...

docker镜像是如何导入的?

镜像导入是由image/tarexport/load.go#tarexporter.Load()完成的 以下代码参考github.com/docker/docker版本v0.0.0-20181129155816-baab736a3649 主要是注册镜像信息以及解包镜像tar流到新root 导出和保存的区别在于 导出(export): 仅导出文件结构保存(save): 保存镜像历史和元…...

四川大学874考研真题00-23

22, 2022年硕士学位研究生入学考试试题回忆版 数据结构 1.一个时间复杂度为n2 的算法运行,m1算n个问题用时1秒,m2处理器是m1效率的64倍,则m2每秒能计算()个问题。 A. 64n B. 8n …...

openGauss学习笔记-58 openGauss 高级特性-资源池化

文章目录 openGauss学习笔记-58 openGauss 高级特性-资源池化58.1 特性简介58.2 架构介绍58.3 功能特点58.4 适用场景与限制58.5 手动安装示例58.6 OCK RDMA使用示例58.7 OCK SCRLock使用示例 openGauss学习笔记-58 openGauss 高级特性-资源池化 58.1 特性简介 资源池化特性主…...

centos升级cmake之相关问题解决

1. yum安装(仓库默认版本) # 查看可安装版本 yum --showduplicates list xxxx# 安装指定版本 yum install xxxx-1.23.1 2. 安装高版本cmake 2.1 一开始下载的是cmake-xxx.zip,在 ./bootstrap 一直会报错“missing terminating " character”,后来…...

vcs仿真教程(查看断言)

VCS是在linux下面用来进行仿真看波形的工具,类似于windows下面的modelsim以及questasim等工具,以及quartus、vivado仿真的操作。 1.vcs的基本指令 vcs的常见指令后缀 sim常见指令 2.使用vcs的实例 (1)新建文件夹: …...

2023开学礼新疆石河子大学图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》许少辉新财经理工

2023开学礼新疆石河子大学图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》许少辉新财经理工...

javaee spring aop 切入点表达式

1、切入点表达式:对指定的方法进行拦截,并且生成代理表达式。 表达式语法:execution([修饰符] 返回值类型 包名.类名.方法名(参数))execution( public void com.test.service.impl.UsersService.add() )2、表达式不同写法 1.匹配指定方法 …...

js 获得元素的offsetLeft

要获得元素相对于其offsetParent元素左侧边缘的距离(即offsetLeft),可以使用如下代码: var el document.getElementById(your-element-id); var offsetLeft el.offsetLeft;其中,el为要获取offsetLeft的元素对象&…...

【Spring面试题】IOC控制反转和DI依赖注入(详解)

IOC Inversion of Control 控制反转,是一种面向对象的思想。 控制反转就是把创建和管理 bean 的过程转移给了第三方。而这个第三方,就是 Spring IoC Container,对于 IoC 来说,最重要的就是容器。 通俗点讲,因为项目…...

LeetCode 2511. 最多可以摧毁的敌人城堡数目

【LetMeFly】2511.最多可以摧毁的敌人城堡数目 力扣题目链接:https://leetcode.cn/problems/maximum-enemy-forts-that-can-be-captured/ 给你一个长度为 n ,下标从 0 开始的整数数组 forts ,表示一些城堡。forts[i] 可以是 -1 &#xff0c…...

bazel远程缓存(Remote Cache)

原理 您可以将服务器设置为构建输出(即这些操作输出)的远程缓存。这些输出由输出文件名列表及其内容的哈希值组成。借助远程缓存,您可以重复使用其他用户的 build 中的构建输出,而不是在本地构建每个新输出。 增量构建极大的提升…...

算法竞赛入门经典习题2-6 排列(permutation)

排列&#xff08;permutation&#xff09;——算法竞赛入门经典_还记得樱花正开~的博客-CSDN博客 上面的代码很厉害&#xff0c;学习...我的代码水平就比较差了... #include <cstdio> #include <set>int main(){for(int i 123; i < 329; i){std::set<int&…...

队列的链表实现 题目(难度1/10)

C数据结构与算法 目录 队列介绍 队列这种容器&#xff0c;就像大家排队上公交车一样。 第一个来到的人排在最前面&#xff1b; 最后来的排在最后面&#xff1b; 第一个先上车&#xff08;离开队列&#xff09;&#xff1b; 队列的接口 队列是有如下接口的容器&#xff1…...

SpringMVC常用的三种获取请求参数的方式

在Spring MVC中&#xff0c;可以使用多种方式来获取请求参数。下面我将介绍常用的几种方式&#xff0c;并提供相关的示例代码。 1. 使用RequestParam注解获取请求参数 RequestParam注解用于从请求中获取指定名称的参数值&#xff0c;并将其绑定到方法参数上。如果请求中没有找…...

2023开学礼新疆理工学院图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》许少辉新财经理工

2023开学礼新疆理工学院图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》许少辉新财经理工...

数据结构----结构--线性结构--字符串

数据结构----结构–线性结构–字符串 一.字符串的定义方式 第一种&#xff1a; char* str1"Hello"第二种&#xff1a; char str2[]"Hello";区别 1.所在区域不同 //str1在常量区//str2在这里的写法是在栈区2.元素是否可改 //str1中的元素不可改//st…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...

如何配置一个sql server使得其它用户可以通过excel odbc获取数据

要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据&#xff0c;你需要完成以下配置步骤&#xff1a; ✅ 一、在 SQL Server 端配置&#xff08;服务器设置&#xff09; 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到&#xff1a;SQL Server 网络配…...