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

news2024/11/5 0:30:21

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.coloradmin.cn/o/2232190.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文解读】Med-BERT: 用于疾病预测的大规模结构化电子健康记录的预训练情境化嵌入

【论文解读】Med-BERT: 用于疾病预测的大规模结构化电子健康记录的预训练情境化嵌入 Med-BERT:pretrained contextualized embeddings on large-scale structured electronic health records for disease prediction ​ ​ 摘要:基于电子健康记录(EHR)的深度学习(DL)预…

天锐绿盾加密软件与Ping32 — 数据安全与性能优化的完美结合

在数字化时代,企业对数据安全的重视程度日益增加。随着网络攻击和数据泄漏事件频发,选择合适的安全解决方案显得尤为重要。天锐绿盾与Ping32作为两款备受推崇的安全软件,各自为企业提供了独特的功能和优势,共同为企业的数据安全和…

随身WiFi三网切换靠谱吗?格行随身WiFi网速怎么样?

出门在外手机流量不够用,连接公共WIFI网速不稳定还存在安全隐患。小巧便携的随身WIFI成了外出用网的首选。面对市面上不同品牌,不同类型的随身WIFI不少朋友不免心生疑问:随身WIFI到底值不值得买?究竟是不是“智商税”?…

服务器数据恢复—SAN环境中LUN映射错误导致文件系统一致性出错的数据恢复案例

服务器数据恢复环境: SAN光纤网络环境,存储由一组6块硬盘组建的RAID6阵列构成,划分为若干LUN,MAP到跑不同业务的SUN SOLARIS操作系统服务器上。 服务器故障&分析: 因为业务需要,用户在该光纤存储环境中…

【skywalking 】More than 15,000 ‘grammar‘ tokens have been presented. 【未解决请求答案】

问题 skywalking相关版本信息 jdk:17skywalking:10.1.0apache-skywalking-java-agent:9.3.0ElasticSearch : 8.8.2 问题描述 More than 15,000 grammar tokens have been presented. To prevent Denial Of Service attacks, parsing has b…

004-Kotlin界面开发快速入水之TicTacToe

程序界面和效果 快速入水 要学习一样跟程序设计有关的东西,最好的办法始终是把手打湿,整一个能够运行,可以实验的东西出来。 也只有在程序开发中,我们才能想一个魔法师而不是魔术师,我们真的能够创造一个东西。而且编…

Node.js:Express 服务 路由

Node.js:Express 服务 & 路由 创建服务处理请求req对象 静态资源托管托管多个资源挂载路径前缀 路由模块化 Express是Node.js上的一个第三方框架,可以快速开发一个web框架。本质是一个包,可以通过npm直接下载。 创建服务 Express创建一…

C语言 | Leetcode C语言题解之第530题二叉搜索树的最小绝对差

题目: 题解: void dfs(struct TreeNode* root, int* pre, int* ans) {if (root NULL) {return;}dfs(root->left, pre, ans);if (*pre -1) {*pre root->val;} else {*ans fmin(*ans, root->val - (*pre));*pre root->val;}dfs(root->…

重学SpringBoot3-整合 Elasticsearch 8.x (二)使用Repository

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 整合 Elasticsearch 8.x (二)使用Repository 1. 环境准备1.1 项目依赖1.2 Elasticsearch 配置 2. 使用Repository的基本步骤2.1 创建实体类2.2 创…

SpringBoot源码(四):run() 方法解析(一)

run()方法: public ConfigurableApplicationContext run(String... args) {// 记录应用启动时间long startTime System.nanoTime();DefaultBootstrapContext bootstrapContext createBootstrapContext();// 创建 ConfigurableApplicationContext 对象Configurabl…

ASP .NET CORE 6 在项目中集成WatchDog开源项目

概念 WatchDog是一个开源的项目,可以实现对.Net 应用程序和API实现实时应用日志和性能监控平台。可以实现实时记录和查看应用程序中的消息、事件、HTTP请求和响应,以及运行时捕获的异常,有效帮助开发人员去排查应用异常,提升开发效…

分类算法——决策树 详解

决策树的底层原理 决策树是一种常用的分类和回归算法,其基本原理是通过一系列的简单决策,将数据集划分为多个子集,从而实现分类。决策树的核心思想是通过树形结构表示决策过程,节点代表特征,边代表决策,叶子…

python 使用进程池并发执行 SQL 语句

这段代码使用了 Python 的 multiprocessing 模块来实现真正的并行处理,绕过 Python 的全局解释器锁(GIL)限制,从而在多核 CPU 上并发执行多个 SQL 语句。 from pyhive import hive import multiprocessing# 建立连接 conn hive.…

[ 问题解决篇 ] win11中本地组策略编辑器gpedit.msc打不开(gpedit.msc缺失)

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

[Python学习日记-55] 软件开发目录设计规范

[Python学习日记-55] 软件开发目录设计规范 简介 为什么要设计好目录结构? 目录组织方式 关于 README 的内容 关于 setup.py 和 requirements.txt 关于配置文件的使用方法 简介 我们在浏览一些开源项目或者是一些安装后的软件的时候会发现,不同的两…

18.农产品销售系统(基于springboot和vue的Java项目)

目录 1.系统的受众说明 2.开发环境与技术 2.1 Java语言 2.2 MYSQL数据库 2.3 IDEA开发工具 2.4 Spring Boot框架 3.系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作可行性 3.2 系统流程 3.2.1 操作流程 3.2.2 登录流程 3.2.3 删除信…

嵌入式常用功能之通讯协议1--IIC

嵌入式常用功能之通讯协议1--串口 嵌入式常用功能之通讯协议1--IIC(本文) 嵌入式常用功能之通讯协议1--SPI 一、IIC总线协议介绍 Inter-Integrated Circuit(集成电路总线),是由 Philips 半导体公司(现在的 NXP 半导体…

一位纯理科生,跨界自学中医,自行组方治好胃病、颈椎病与高血脂症,并在最权威的中国中医药出版社出版壹本专业中医图书!

这是一位铁杆中医迷, 也是《神农本草经——精注易读本》的作者。 希望更多的人能够受到启发,感受中医之神奇,敢于跨界,爱好中医,学习中医! 一个病人以自己的切身感受与诊断,并使之汤药治愈疾病&…

java项目之个人博客系统的设计与实现(springboot)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的闲一品交易平台。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: springboot个人博客系统的…

使用 Sortable.js 库 实现 Vue3 elementPlus 的 el-table 拖拽排序

文章目录 实现效果Sortable.js介绍下载依赖添加类名导入sortablejs初始化拖拽实例拖拽完成后的处理总结 在开发过程中,我们经常需要处理表格数据,并为用户提供便捷的排序方式。特别是在需要管理长列表、分类数据或动态内容时,拖拽排序功能显得…