测试工程师必看!测试用例设计全解析,让你彻底掌握

测试工程师在入行时,都会接触到一个名词——测试用例,都知道测试用例是干什么用的,提到设计测试用例的方法,大部分测试工程师都会侃侃而谈:等价类法、边界值法、判定表法、正交分解法……这些方法说起来都如数家珍,但是似乎在实际工作中,应用起来还不是那么得心应手,甚至还会有测试用例覆盖度不足的问题。

每当遇到这样的问题时,测试工程师多少都会有些无奈。测试用例写的已经尽可能详细了,但是评审时候,参与评审的角色,要么是因为用例太繁复而草草浏览一下,要么是说完后面忘了前面。而测试工程师的思路从思维导图转化为测试用例的时候,也往往达不到测试用例最初的目的——哪怕让小白来遵照执行,也应该可以看得懂。

那么作为测试工程师基本功的测试用例编写,应该怎样上手呢?遵循着设计方法的测试用例,为什么写出来会那么晦涩难懂,让人很难理清思路呢?

一般说来,测试用例的覆盖设计和思路,同操作流程和开发思维是有极大不同的,除了实现验证这样的正向思路方向外,还需要针对异常情况进行逆向验证,而这里往往是很容易出现遗漏的地方。因为场景实现是有明确的操作流程的,而异常处理的场景,则是需要测试工程师自己进行分析的。

测试用例一般来说,分几大模块组成,主要的有操作步骤,输入数据,期望结果。需要注意的是,操作步骤是必须的,但输入数据允许留空,因为在很多时候,步骤仅仅只是一个动作,比如检视页面。对于测试用例的理解来说,操作步骤应该是非常细致的。以如下一个界面为例,详细了解一下测试用例到底该怎么写。

这是Slackflow的官网页面,选取了最常见的“注册”模块来进行UI的测试用例设计。首先按照场景分析,要先分为正常和异常两种情形,异常情况则是分析如下:

那么按照测试用例编写思路,需要形成如下表格:

在表格中体现的则是测试用例书写的一些规范和注意点:

1)操作步骤叙述必须足够简练明确,不得出现断层或无法执行的操作;

2)操作步骤必须具有由上至下的连贯性;

3)输入数据必须有具体示例,如字符串等等,如果没有具体示例,则需要说明输入的规范;

4)期望结果是需要一目了然的结果,而不是需要进行其他操作之后才能查看的内容,不可以包括多余的动作,也不可包括含混不清的判断,如仅注明“显示正常”,没有进一步的描述,或“顺利登录”这样的描述。

5)每一步都要进行的操作步骤,可以提炼为前置条件,写在“Pre-Condition“栏内

6)每一步骤和结果的描述必须精准洗练,不可以冗余和重复

7)每一个测试用例只覆盖一个检查点,如果多个用例都需要覆盖中间某一个检查点,则需将该检查点作为一个独立的测试用例,其余测试用例将该检查点的结果作为前置条件。

测试用例作为测试的输入文档,以及自动化测试的基础依据,应该是简洁优美的,它体现了测试工程师思维的逻辑性和递进性,它的质量直接关系到测试执行的质量,而执行时所能够达到的覆盖度则往往是测试工程师基本功的体现。

所以,在不断将眼光投向自动化代码能力和其他测试领域扩展的时候,还是需要先夯实自己的业务基础,先编写出简洁、全面的测试用例。

文末了:

可以到我的个人号:atstudy-js,可以免费领取一份10G软件测试工程师面试宝典文档资料。同时我邀请你进入我们的软件测试学习交流平台,大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,了解测试行业的最新趋势,助你快速进阶Python自动化测试/测试开发,稳住当前职位同时走向高薪之路。

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

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

相关文章

MySQL的MVCC

MVCC(多版本并发控制)multiversion concurrency control 读读并发:可以并发 读写并发(innoDB):MVCC机制解决 写写:互斥 快照读:不加锁的简单select属于快照读,即不加…

揭秘大数据时代的内存数据存储、数据缓存:redis缓存框架!

介绍:Redis 是一个开源的、基于内存的数据存储系统,它也可以持久化数据到硬盘上。Redis 以其高性能、高可靠性和丰富的数据结构支持而著称,在现代应用程序中被广泛用作数据库、缓存和消息中间件。 主要特点: 键值存储:…

Unity工程没有创建.sln文件,导致打开C#文件无法打开解决方案

最近又开始折腾些Unity的小项目,重新遇到一些常见的小问题 点击报错文件 却没有打开文件 于是查看了下打开Window->Package Manager 选择Unity Registry 搜索Visual Studio Editor,发现并没有安装 同理,也可以安装VSCode的插件 问题解决了…

JVM多线程读写和锁

文章目录 1 原子性2 可见性3 有序性4 CAS5 synchronized 优化5.1 轻量级锁5.2 锁膨胀5.3 自旋5.4 偏向锁5.5 其他优化 1 原子性 问题:两个线程对初始值为 0 的静态变量 i 一个做自增,一个做自减,各做 5000 次,结果是 0 吗? i产生…

.NET集成IdGenerator生成分布式全局唯一ID

前言 生成分布式唯一ID的方式有很多种如常见的有UUID、Snowflake(雪花算法)、数据库自增ID、Redis等等,今天我们来讲讲.NET集成IdGenerator生成分布式全局唯一ID。 分布式ID是什么? 分布式ID是一种在分布式系统中生成唯一标识符…

Unity - transform使用

Test_03 TransformTest 控制物体位置和物体间的父子关系 public class TransformTest : MonoBehaviour {void Start(){// 【获取位置】// 世界坐标中物体的位置Debug.Log(transform.position);// 物体相对于父物体的位置Debug.Log(transform.localPosition);// 【…

实用的SQLite数据库可视化管理工具推荐

前言 俗话说得好“工欲善其事,必先利其器”,合理的选择和使用可视化的管理工具可以降低技术入门和使用门槛。今天推荐7款实用的SQLite数据库可视化管理工具(GUI),帮助大家更好的管理SQLite数据库。 什么是SQLite? SQLite是一个…

【每日一题】2.LeetCode——删除有序数组中的重复项

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有限,欢迎各位大佬指点&…

JavaScript中的事件

1 事件(Event) 事件也就是用户或者浏览器执行的某种动作,而JS与Html之间的交互是通过事件而来的。使用仅在事件发生时执行的**监听器(事件处理程序)**来订阅事件。web浏览器可以发生多种事件,在…

【Linux】yum本地配置

配置将来是在干什么? yum会根据/etc/yum.repos.d/该路径下面的配置文件,来构成自己的下载路径,(根据OS版本,根据你要下载的软件),yum帮助我们下载,安装 一般的机器,内置…

10.常用统计分析方法——主成分分析和因子分析

基础知识: 主成分分析概念 主成分分析PCA:是一种数据降维的技巧,将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分。 在特征选择方法中有一种方法是方差过滤,即如果一个特征的方差很小&#xff0c…

yarn的安装及使用教程

Yarn 是一个快速、可靠、安全的包管理工具,用于管理 JavaScript 项目的依赖项。下面是关于 Yarn 的安装和基本使用的详细教程: 安装 Yarn 访问 Yarn 官网 并按照指示下载适合你操作系统的安装程序。安装程序会自动安装 Yarn,并将其添加到系…

强化学习:MuJoCo机器人强化学习仿真入门(1)

声明:我们跳过mujoco环境的搭建,搭建环境不难,可自行百度 下面开始进入正题(需要有一定的python基础与xml基础): 下面进入到建立机器人模型的部分: 需要先介绍URDF模型文件和导出MJCF格式 介绍完…

CNAS中兴新支点——软件测试中的非功能测试包含哪些测试内容

软件测试中的非功能测试是指对软件产品在功能之外的其他特性进行测试,包括性能测试、可靠性测试、安全性测试、易用性测试、可维护性测试等。 1、性能测试:性能测试是对软件产品在特定条件下的性能进行测试和评估。包括负载测试、强度测试、数据库容量测…

Flink中的时间和窗口(时间语义,水位线,窗口,迟到数据的处理)

目录 Flink中的时间和窗口 1时间语义 1.1Flink中的时间语义 1.1.1处理时间 1.1.2事件时间 1.2那种时间语义更重要 2 水位线 2.1 事件时间和窗口 2.2 什么是水位线 2.3 如何生成水位线 2.3.1使用WatermarkGenerator 2.3.2使用SourceFunction 2.4 水位线的传递 2.5 水位…

Adobe XD 55.2.12.2软件安装教程(附软件下载地址)

软件简介: 软件【下载地址】获取方式见文末。注:推荐使用,更贴合此安装方法! Adobe XD 55.2.12.2是一款专业级的图形界面UI/UX设计工具,拥有丰富的功能和强大的性能。它集成了原型设计、界面设计和交互设计等多种功能…

从0开始学习C++ 第十一课:常量

第十一课:常量 学习目标: 了解什么是常量以及为什么要使用常量。学习如何在C中定义常量。理解字面量常量、const关键字、宏定义 学习内容: 常量的概念 概念: 常量是在程序执行过程中其值不会改变的量。使用常量可以提高程序的可…

系统移植及相关介绍

一.系统移植 系统移植(System Porting)是将一个操作系统从一种硬件平台迁移到另一种硬件平台的过程。这个过程涉及将操作系统的内核和相关的软件组件调整和适配到新的硬件环境中。 1.嵌入式系统的特点 三低:功耗低 成本低 体积小 两高&am…

【蓝桥备赛】质因数个数——数论

题目链接 质因数个数 个人思路 根据算术基本定理,每个大于1的数都可以写成若干质数相乘的形式。因此,我们从小到大依次求出这个数可能存在的质因数。 参考代码 Java import java.util.Scanner;public class Main {public static void main(String[…

android 扫描某个包下的所有类

注意事项 如果在用Android Studio开发过程中,如果新增了类,扫描不到。只能把APP卸载了,才能扫描到。 可能是Instance Run 的影响。 后面研究一下这篇文章,看看能不能解决 Android 遍历Apk下的所有类文件 package com.trs.nmip.…