原来大佬的测试用例都是这样写的...

1、测试点与测试用例

测试点不等于测试用例,这是我们首先需要认识到的。

问题1:这些测试点在内容上有重复,存在冗余。

问题2:一些测试点的测试输入不明确,不知道测试时要测试哪些。

问题3:总是在搭相似的环境,做类似的操作。

问题4:测试点描述得太粗,不知道是不是测对了。

测试点是测试者在测试时需要关注的地方。虽然我们在分析测试点时,会使用各种测试方法,但这些方法在思路和操作上都是不同的,一些方法得到的测试点要细一些、具体一些,一些方法得到的测试点粗一些、泛一些是非常正常的。另外,谁也不能保证这些测试点之间不会重复或是相互包含。如果我们的测试就是按照这样一份粗细不一、深浅不明、关系不清的说明书来进行的,又怎么不会陷入既冗余又不足的困境中呢?

而测试用例是在测试点“加工”的基础上得到的。首先把测试点“去重”(去掉重复的内容)、“合并”(把太细的测试点合并起来)、“细化”(把太泛的测试点说清楚、说具体),然后再确定各个测试点的测试条件、测试数据和输出结果。

如果说测试点还只是一些散乱的测试思路的集合,那么测试用例就是一份真正能够指导测试的测试说明书。

2、测试用例设计流程

1、创建测试用例模板

2、设计基础测试用例

3、测试用例评审(内审+外审)

4、补充测试用例

5、扩展(探索性等)

3、编写测试用例

1、首先确定一个标准的模板

一般包含以下几项(可根据公司需要做裁剪或添加):

用例编号 所属模块 用例标题 优先级 适用阶段 前置条件 测试数据 操作步骤 预期结果 执行结果 备注

2、测试用例标题要是一个完整易懂的句子

能够清晰表达测试用例的测试目的和关键测试要素,只有当测试用例标题是一个完整的句子时,读者才能完整地了解这个测试用例的意图。

用例标题要求一句话简单描述(在/当。。。时候/之后/页面,主语+谓语+宾语)

3、用条件而不是参数来描述测试用例标题

如果你有对比就会发现,使用条件来作为测试用例标题,和使用参数相比,前者更能突出设计这个测试用例的目标,也易于读者理解测试用例的设计意图,也更易于维护。可见,在描述测试用例标题时,更适合用条件,而不是参数。

参数更适合在测试用例模板中的测试数据部分体现,不要把它们罗列在测试用例标题中。

4、如果一个用例中包含有多个参数,用例中应该是每个参数的取值

我们在写测试用例的时候,应该对涉及的每个参数给出确定的值。

5、不要在测试用例中引用别的测试用例

引用测试用例会给后期用例的修改、维护和移植带来麻烦。

我们会在测试用例中引用另外一个测试用例,在很大程度上是因为用例在执行中存在先后关系,即测试用例2一定会在测试用例1之后执行。这时我们可以考虑这样来编写测试用例:把测试用例1和测试用例2合并成一个大的测试用例。可以把测试用例1的主要内容放到测试用例2的预置条件中。

6、避免测试用例中包含过多的用户接口细节

用例执行者应该是专业人士,测试用例不必写得面面俱到。

7、明确测试步骤和预期结果的对应关系

一个测试用例通常会包含好几个测试步骤和多个预期结果。有时候不同的测试步骤可能会有相同的预期结果,为了描述简便,很多测试用例作者会省略相同的预期结果。另外,也不是所有的测试步骤都有预期结果,一般是重要、关键的测试步骤才会有预期结果。这时我们可以在测试用例中,增加简单的标记来明确测试步骤和预期结果之间的对应关系,让测试执行人员一目了然。

8、避免在测试步骤中使用笼统的词

我们在描述测试步骤时,需要尽量避免那些笼统的表述方式,如“反复”、“长时间”、“大量”等。因为这样描述,不同的测试执行者的理解会有所不同。比如“反复”,有人会认为执行两次就是反复了,有人可能会认为要执行至少10次,这样就会造成测试执行上的差异,很可能会达不到测试的效果。

例1:明确次数

问题:反复执行接口up/down的操作

解决方法1:在测试用例中确定反复的具体次数。

修改1:反复执行接口up/down操作100次。

解决方法2:也可以为测试用例确定一个反复的范围。

修改2:反复执行接口up/down操作至少100次。

解决方法3:如果反复多次执行某个操作多次后,会出现某种特定的效果(例如内存会升高到某个特别值),但是需要反复执行多少次这样的操作确并不确定,可以这样描述。

修改3:反复执行接口up/down操作,直至系统内存值达到最大值的45%。

例2:明确时间

问题:系统长时间转发HTTP业务

解决方法1:在测试用例中确定长时间的测试时长。

修改1:系统持续转发HTTP业务24小时。

解决方法2:也可以为测试用例确定一个长时间的测试时间范围。

修改2:系统持续转发HTTP业务至少24小时。

例3:明确数量

问题:大量用户同时连接服务器

解决方法1:需要确定大量的具体数量,如1000、2000。

修改1:2000个用户同时连接服务器。

解决方法2:可以以产品规格作为大量的参照值,如满规格、系统支持数的50%。

修改2:满规格用户同时连接服务器。

4、测试用例评估

测试过程评估分析的对象是测试用例、测试方法和测试投入。

为什么进行产品质量评估还需要对测试过程进行分析呢?试想对一个产品测试来说:

1、有充分完备的测试用例和没有测试用例进行随机测试相比,哪一种测试的结果更可靠?

2、使用了多种测试方法与测试方法单一相比,哪一种测试结果更有助于进行产品质量评估?

3、有经验的测试人员、充足的测试投入与没有经验的测试人员、测试投入不足相比,哪种测试情况更有利于测试目标的实现呢?

可见,对测试过程进行评估,对产品质量评估而言十分重要。不仅如此,如果我们能够在测试之前就对测试过程进行计划,还能帮助我们更好地进行测试,更好地完成产品的测试目标。

我们可以通过如下3个指标来对“测试用例”进行评估:

1、测试用例执行率

(1)测试阻塞 - 试用例因为产品开发(一般是指缺陷)、测试(如测试环境不具备)等原因,无法被执行的测试用例。

(2)未执行 - 可以执行,但是因为进度、人力或其他原因等还没有被执行的测试用例。

2、测试用例执行通过率

(1)首次执行通过率 - 测试用例首次执行通过率可以帮助我们评估开发版本的质量,测试用例首次执行通过率越高,说明开发的版本质量不错;相反,如果开发需要多次修复,最后才能使得测试用例执行通过,说明版本质量可能不高,产品在设计、编码方面可能存在一些问题,即便是修复bug,在修复时引入新bug的风险也会更大一些。

(2)累积通过率 - 测试用例累积执行通过率可以帮助我们评估产品在发布时的质量,一般说来,测试用例累积执行通过率越高,说明当前的版本质量可能已经达到了基本要求,可以考虑发布。

3、测试用例和非测试用例发现缺陷比

测试人员在按照测试用例执行测试的时候,也会抛开测试用例,自我发挥,做些随机测试。显然,随机测试也能发现缺陷,有时候甚至比测试用例更能发现产品缺陷,而且“突然一个灵感来了,然后去测试,并且真的发现了产品缺陷”的过程,会让人很有成就感。因此在团队中,我们往往会鼓励大家在执行测试用例的时候适当进行一些探索性测试,挖掘bug,找找感觉。

我们希望“通过测试用例发现的缺陷”和“探索性测试,也就是非测试用例发现的缺陷”的比值能够在一个合理的范围内。

5、跟踪测试用例执行情况

跟踪测试执行的目的有3个:

1、确保测试团队是按照测试策略来执行测试的。

2、实时关注缺陷,通过缺陷分析来确认测试策略是否合适,是否需要调整。

3、关注项目中的实时风险,基于风险来调整测试策略。

需要特别注意的是,按照优先级来执行测试用例,不是说我们一开始就只执行高优先级的测试用例,而不去执行中、低优先级的测试用例。

我们需要在测试刚开始的时候,对每个功能都执行一些基础性的测试用例,以确认这些功能基本可用,不会阻塞后续的测试。

配置测试→功能测试→功能交互→业务流程测试

 最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/464146.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu20.04 加固方案-设置SSH是否使用业界认可的加密算法

一、编辑/etc/ssh/sshd_config配置文件 打开终端。 使用文本编辑器(如vim)编辑/etc/ssh/sshd_config文件。 vi /etc/ssh/sshd_config 二、添加配置参数 在打开的配置文件中,如图位置添加如下参数: 查看支持的算法:h…

机器学习是什么?AIGC又是什么?机器学习与AIGC未来科技的双引擎

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

动态规划应该如何学习?

动态规划如何学习 参考灵神的视频和题解做的笔记(灵神YYDS,以后也都会用这套逻辑去思考) 枚举选哪个: 动态规划入门:从记忆化搜索到递推_哔哩哔哩_bilibili 746. 使用最小花费爬楼梯 - 力扣(LeetCode&a…

虚拟化环境中的精简版 Android 操作系统 Microdroid

随着移动设备的普及和应用场景的多样化,安全性和隐私保护成为了移动操作系统的重要课题。Google推出的Microdroid,是一个专为虚拟化环境设计的精简版Android操作系统,旨在提供一个安全、隔离的执行环境。本文将详细介绍Microdroid的架构、功能…

【Docker系列】指定系统平台拉取 openjdk:8 镜像

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

(七)Python运算符和优先级

一、算数运算符 算数运算符,如下表所示: x1 y2 z3 # 加法运算 axy print(a,a) # 减法运算 by-x print(b,b) # 乘法运算 cy*z print(c,c) # 除法运算 dz/y print(d,d) # 取模运算 ez%y print(e,e) # 幂运算 fy**z print(f,f) 输出结果: 二…

Linux中使用NGINX

NGINX简介 Nginx(engine x)是俄罗斯人编写的十分轻量级的HTTP服务器是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器官方网站:http://nginx.org/ NGINX概述 Nginx默认配置文件:/etc/ngin…

数据结构之线段树

线段树 线段树(Segment Tree)是一种高效的数据结构,广泛应用于计算机科学和算法中,特别是在处理区间查询和更新问题时表现出色。以下是对线段树的详细解释: 一、基本概念 线段树是一种二叉搜索树,是算法竞…

【C++】继承的理解

1.继承的概念和定义 1.1继承的概念 继承 (inheritance) 机制是面向对象程序设计 使代码可以复用 的最重要的手段,它允许程序员在 保 持原有类特性的基础上进行扩展 ,增加功能,这样产生新的类,称派生类。继承 呈现了面向对象 程序…

C++ 详细讲解 洛谷P1428 小鱼比可爱

(其实这道题难度不高,但是博主正在适应c语言加上这道题目太可爱了所以忍不住发发~) 目录 1.题目要求 2.题目解读 3.代码实现 1.题目要求 2.题目解读 这道题需要使用c中的容器储存小鱼的可爱程度和不如自己可爱的小鱼的数目,…

Android亮屏Job的功耗优化方案

摘要: Job运行时会带来持锁的现象,目前灭屏放电Job的锁托管已经有doze和绿盟标准监管,但是亮屏时仍旧存在过长的持锁现象,故为了优化功耗和不影响用户体验下,新增亮屏放电下如果满足冻结和已运行过一次Job,则进行job限制,当非冻结时恢复的策略 1.现象: (gms_schedu…

Spring1(初始Spring 解耦实现 SpringIOC SpringDI Spring常见面试题)

Spring1 创建项目集成maven创建一个Maven项目实现: 初识SpringSpring简介Spring的发展历史Spring之父体系结构生态系统官方文档解耦实现JDBCSpringBoot整合MyBatis和lombok,开启驼峰映射三层思想 SpringIOC实现 SpringDIset注入全部代码:实现…

服务器新建用户

文章目录 前言一、步骤二、问题三、赋予管理员权限总结 前言 环境: 一、步骤 创建用户需要管理员权限sudo sudo useradd tang为用户设置密码 sudo passwd tang设置密码后,可以尝试使用 su 切换到 tang 用户,确保该用户可以正常使用&#…

leetcode-88-合并两个有序数组

题解: 解法一:从后向前同时遍历两个数组,因为nums1后面是0,从后遍历节省空间。 1、定义三个指针,分别为:len1m-1指向nums1的最后一个非0数字;len2n-1指向nums2的最后一个数字;len3…

操作系统(10) (并发(2)------基于软件/硬件/操作系统层面解决两个进程之间的临界区问题/抢占式/非抢占式内核)

目录 1. 基于软件层面(Petersons Solution) Petersons Solution 满足三个要求: 好处: 缺点 2. 基于硬件层面 1. Disabling Interrupts (禁用中断) 概念解释: 代码框架: 要求: 禁用中断的好处与问题: 2. Test and Set Lock (…

Java | Leetcode Java题解之第526题优美的排列

题目&#xff1a; 题解&#xff1a; class Solution {public int countArrangement(int n) {int[] f new int[1 << n];f[0] 1;for (int mask 1; mask < (1 << n); mask) {int num Integer.bitCount(mask);for (int i 0; i < n; i) {if ((mask & (1…

2024年大厂AI大模型面试题精选与答案解析

前言 随着AI市场&#xff0c;人工智能的爆火&#xff0c;在接下来的金九银十招聘高峰期&#xff0c;各大科技巨头和国有企业将会对AGI人才的争夺展开一场大战&#xff0c;为求职市场注入了新的活力。 为了助力求职者在面试中展现最佳状态&#xff0c;深入理解行业巨头的选拔标…

智能网联汽车:人工智能与汽车行业的深度融合

内容概要 在这个快速发展的时代&#xff0c;智能网联汽车已经不再是科幻电影的专利&#xff0c;它正在悄然走进我们的日常生活。如今&#xff0c;人工智能&#xff08;AI&#xff09;技术与汽车行业的结合犹如一场科技盛宴&#xff0c;让我们看到了未来出行的新方向。通过自动…

AI大模型重塑软件开发:从代码自动生成到智能测试

随着AI技术的不断发展&#xff0c;AI大模型在软件开发领域的应用日益广泛。从代码自动生成到智能测试&#xff0c;AI大模型正在深刻改变着软件开发的各个环节&#xff0c;重塑着整个开发流程。本文将探讨AI大模型的定义、应用场景、优势以及挑战&#xff0c;并展望未来的发展趋…

【基础】os模块

前言 1、os是operation system&#xff08;操作系统&#xff09;的缩写&#xff1b;os模块就是python对操作系统操作接口的封装。os模块提供了多数操作系统的功能接口函数。&#xff08;OS模块提供了与操作系统进行交互的函数&#xff09; 2、操作系统属于Python的标准实用程…