自动化测试如何区分用例集合及编写规范

前言

前面的文章介绍过如何设计自动化测试case,有同学在后台问到:业务比较复杂,有很多串行并行甚至组合的业务场景,执行case时经常遇到由于前后依赖导致的case失败问题,该如何处理?

当业务复杂度和工作量上来之后,在具体的实践中这是个避不开的问题。那如何解决这个问题?我建议可以通过按照业务和场景区分用例集合的方式来解决。

业务量和复杂度增长现状是什么?

以我的亲身经历而言,当业务爆发式增长时,测试团队会面临如下几点变化和调整:

对比项

业务增长前

业务增长后

团队组织架构

大团队

大团队小team,按照业务域划分不同小团队

团队协作方式

互相协作,沟通成本低

跨team协作频次变高,构成成本高

团队技术栈构成

比较单一,学习和迁移成本低

技术栈多样,学习和迁移成本高

测试case覆盖率

只覆盖核心场景,保证主流程正向流程

PO/P1/P2场景,正向逆向场景都覆盖

测试人员职责划分

每个人都熟悉整体业务流程和场景

每个人只熟悉岗位职责内的业务流程和场景

这里我们只讨论和自动化测试case相关的区别。

业务增长自然而然带来的是流程的复杂度提升和业务场景的多样性,同时用户体验和线上的小问题影响范围,也会扩大。

因此在测试case的覆盖率上,覆盖的颗粒度会更细致。

以电商下单场景为例:核心流程在case设计和执行以及结果校验时,主要会关心商品库存、是否使用优惠券、是否参与活动以及订单数据是否入库到之后的是否支付成功,这是一个正向的核心场景case。如下图所示:

正常的下单流程能否走下去,主要依赖于上图的几个校验点。

假设,团队按照不同的业务域拆分为好多个小团队,职责和边界划分更细致时,该怎么做呢?

如何区分自动化测试的用例集合?

还是以电商的主要业务流程为例说明,假设团队拆分的更细致,业务链路依赖更复杂,怎么办?如下图:

可以看到每个链路都会依赖于上下游链路的部分数据或者调用关系。面对如此复杂的场景和跨团队协调,这个时候区分用例集合的好处就体现了出来。那么如何区分用例集合呢?看下图:

如上图所示,如果团队是按照业务域或者业务链路做了区分,团队内同学负责的模块也不一致,区分的大致思路如上。

如何理解呢?就是每个人只负责设计自己所负责模块的case,考虑好正向逆向流程的校验点,然后调用和依赖模块对应的场景和数据,和对方约定好,遵循互信原则即可。

区分用例集合的过程要注意什么?

区分用例集合的注意事项,主要参考如下几点:

  • 业务团队按照一定的原则划分,而不是混乱;
  • 每个团队之间要明确好业务边界和职责边界;
  • 调用依赖和边界遵循统一的调用方式(如restful);
  • 测试数据的存储和校验建议统一维护而非各自独立;
  • 测试用例要按照不同条件做区分(类似打标签形式);
  • 持续集成任务要按照前后依赖做好执行时序的区分;
自动化测试用例选择

自动化测试主要应用于基础功能的验证和回归,对于在项目迭代过程中不断修改的功能来说,手工测试的效率是大大高于自动化测试的。

因此,我们在进行自动化之前,要挑选基础功能来进行自动化。

在这个过程中,我们可以从手工测试用例中进行挑选,也可以专门为自动化编写一套用例。

在自动化初期,建议从手工测试用例中进行挑选。一方面手工测试用例的覆盖度最为全面,可以保证测试的全面性;

另一方面,也会提高测试效率。
我们挑选用例的原则是:清晰、简单、基础、改动小的功能。

自动化测试用例编写

挑选完合适的用例之后,就是通过代码编写自动化用例的过程。这个过程主要包括数据预置、用例编写和用例后置三个步骤。

1、数据预置
在进行用例编写之前,我们需要准备一些数据,保证用例能够真正的执行起来。比如,我们在测试一个网页登录功能,我们需要系统的URL参数、需要一个可以登录的用户名和密码;
我们需要测试删除文件的功能,就需要提前上传一个文件,这个文件可以提前预置,也可以在执行删除操作之前,执行一个上传操作;通过哪种方式预置数据,需要根据项目的实际情况选择。
我们将数据预置和用例编写分开是为了减少用例之间的耦合度,保证上一个用例执行的结果不会对下一条用例产生影响。此外,有利于用例的维护和修改。

2、用例编写
我们准备好测试数据后,就要开始自动化用例的编写,在编写过程中需要注意以下几个方面:

熟悉业务。自动化测试是为了业务系统服务的,只有充分的了解业务,明确如何将手工测试用例通过自动化实现,才能保证用例质量。

使用变量。通常,我们需要将变量统一管理,写入配置文件,这样方便统一修改。例如:我们需要测试一个业务系统,这个系统包含测试环境和生产环境,我们需要将自动化脚本灵活的适用于每个环境,这个时候,我们就需要将url等系统参数写入配置文件,方便修改和迁移。

写明操作过程。在编写操作过程时,代码注释必不可少。每一步都是怎么操作的,需要验证什么功能。

设置检查点。在编写测试用例的过程中,需要设置合理的检查点,添加断言,判断用例是否执行成功。在用例执行后,将预期结果和实际结果进行对比,输出测试结果,明确功能是否执行成功,是自动化测试的关键。不添加断言的用例执行,是没有任何意义的。

3、用例后置
用例后置时指用例执行完成之后的操作,与数据预置相对应,是为了自动化能够循环执行。

比如:我们需要测试文件上传功能,在用例执行通过之后,需要将文件删除,便于下一次自动执行。

此外,我们应该在用例后置之后进行一些合理的检查,比如上个步骤中,我们如果删除文件失败的话,依然会影响下一次的操作。因此,我们需要结合项目实际情况,对一些核心文件进行检查,保证自动化的顺利执行。

用例编写规范

在用例编写过程中,我们需要遵守一些规范来提高用例质量。主要包括:连续性、独立性、完整性、可重用性、可维护性和逻辑分块。

1、连续性

2、独立性
用例之间要相互独立,保证上一个用例的执行结果不会对下一个用例的执行产生影响。这样,才能更清楚的定位到问题。此外,需要保证一个用例的执行不会修改到下一个用例的数据。

3、完整性

每一个用例都需要有数据准备、操作过程,断言和用例后置的全部过程,能够根据用例明确具体的测试内容。

4、可重用性

类似于开发的公共代码,我们要抽象出自动化测试的原子操作,提供给其他用例调用,这样可以减少开发成本

5、可维护性
用例名要清晰,做到见名知意;对每个步骤、每个变量添加明确的注释;对哪些是预置数据、哪些是检查项、预期结果都有明确的说明;用例步骤要简单明了

6、逻辑分块
根据一定的规则进行逻辑分块(例如可以根据不同功能划分),保证逻辑块的独立性,可以抽出单个功能用例进行验证。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方进群即可自行领取。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电脑软件:非常好用的万能格式转换软件File Converter介绍

目录 一、软件介绍 二、软件安装 三、使用教程 四、软件设置 五、软件获取 大家在日常工作和娱乐当中,难免会遇到格式转换的情况,很多人会直接互联网搜索在线转换或者尝试下载一些格式转换软件基本上都很难找到适合的软件,因为大部分要么…

幼儿园管理系统|基于springboot框架+ Mysql+Java+Tomcat的幼儿园管理系统设计与实现(可运行源码+数据库+设计文档+部署说明)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 用户功能模块 管理员功能登录前台功能效果图 教师功能模块 系统功能设计 数据库E-R图设计 lunwen参…

[数据结构]二叉树(上)

目录 一、树 1.树的概念 2.树的相关概念 3.树的表示 4.树的应用 二、二叉树 1.二叉树的概念 2.二叉树的性质 3.特殊的二叉树 4.二叉树的顺序存储 一、树 1.树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具…

2024.3.11 训练记录(14)

继续补题 文章目录 ICPC 2018青岛I Soldier GameICPC 2018青岛K Airdrop ICPC 2018青岛I Soldier Game 题目链接 线段树 果然稍微复杂一点的线段树就很难实现啊,不看题解根本没反应过来是线段树 struct Node {int l, r, lb, rb, nb, b; } tr[N * 4];其中&#x…

Linux:kubernetes(k8s)Deployment的操作(13)

创建deployment 命令 kubectl create deploy nginx-deploy --imagenginx:1.7.9 再去使用以下命令分别查询 ubectl get deploy kubectl get replicaset kubectl get pod 他是一个层层嵌套的一个关系 首先是创建了一个 deploy 里面包含着replicaset replicaset里面含有…

如何改掉坏习惯?

每个人在生活中,多多少少都有一些根深蒂固的坏习惯。 比如: 闲暇无聊时总会下意识刷瀑布流、短视频,不知不觉就是一个小时过去; 明明说好要早睡,但睡前总是忍不住东逛逛、西看看,熬到实在撑不住了才上床&a…

uniapp运行钉钉小程序

因项目原因,公司需要在钉钉里面开发小程序。之前用uniapp开发过app,H5,小程序。还真没尝试过钉钉小程序,今天就简单的记录下uniapp运行钉钉小程序中的过程。 在项目目录新建package.json文件,在文件中添加如下代码&am…

计算机视觉研究院 | EdgeYOLO:边缘设备上实时运行的目标检测器及Pytorch实现

本文来源公众号“计算机视觉研究院”,仅用于学术分享,侵权删,干货满满。 原文链接:EdgeYOLO:边缘设备上实时运行的目标检测器及Pytorch实现 代码地址:https://github.com/LSH9832/edgeyolo 今天分享的研究…

如果利用AOP/Aspect来修改方法的入参

问题描述: 最近项目代码过三方测试(国企项目),在一系列代码扫描审计检查下,代码发现一部分修改,例如请求参数发生了编码/加密,导致后台需要对请求的参数进行解码/解密,后端那么接口&…

山景BP1048 烧录器烧写

1.首先确保硬件连接没问题,烧写器不能亮红灯,亮红灯说明硬件没正确连接。硬件连接如下: 2.点击Flash Burner 3.编程目标闪存选择SDK包自带的烧写驱动器,闪存映像档选择编译好的bin文件。 4.点击刻录 5.看见有进度条在跑&#x…

MISC:杂项

一、文件类型识别 背景&#xff1a;遇到文件没有后缀&#xff0c;不知道文件类型。 方法一、使用Linux中的file命令 原理&#xff1a;file命令会识别文件的文件头&#xff0c;通过文件头识别出文件类型。 命令格式&#xff1a;file <filename> 而文件头则可通过010edito…

Flutter 核心原理 - UI 框架(UI Framework)

Flutter 既能保证很高的开发效率&#xff0c;又能获得很好的性能。 这两年 Flutter 技术热度持续提高&#xff0c;整个 Flutter 生态和社区也发生了翻天覆地的变化。目前Flutter 稳定版发布到了3.0&#xff0c;现在已经支持移动端、Web端和PC端&#xff0c;通过Flutter 开发的…

【设计模式】一、设计模式概述

文章目录 一、设计模式概述&#xff08;一&#xff09;设计模式是什么1. 设计模式的定义2. 设计模式的组成要素3、常用设计模式一览表 &#xff08;二&#xff09;设计模式的优点&#xff08;用途&#xff09;※ 本文小结 一、设计模式概述 &#xff08;一&#xff09;设计模式…

配置阿里云加速器

国内镜像中心常用阿里云或者网易云。在本地docker中指定要使用国内加速器的地址后&#xff0c;就可以直接从阿里云镜像中心下载镜像。 2024阿里云-上云采购季-阿里云 [rootlocalhost /]# mkdir -p /etc/docker [rootlocalhost /]# tee /etc/docker/daemon.json <<-EOF &…

第五十五天| 583. 两个字符串的删除操作、72. 编辑距离

Leetcode 583. 两个字符串的删除操作 题目链接&#xff1a;583 两个字符串的删除操作 题干&#xff1a;给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 思考&#xff1a;动态规划。本题中…

网络原理(网络协议初识)

目录 1.网络通信基础 1.1IP地址 1.2端口号 1.3认识协议 1.4五元组 1.5 协议分层 2.TCP/IP五层&#xff08;或四层&#xff09;模型 2.1网络设备所在分层 2.2网络分层对应 3.封装和分用 1.网络通信基础 网络互连的目的是进行网络通信&#xff0c;也即是网络数据传输&#…

Maven简单入门

Maven 一&#xff1a;什么是Maven&#xff1a; Maven是一个项目管理工具&#xff0c;用于构建和管理Java项目。它可以帮助开发人员自动化构建过程&#xff0c;管理项目依赖关系&#xff0c;并协助项目的发布和部署。通过Maven&#xff0c;开发人员可以定义项目的结构、依赖关…

Dubbo:常见的面试题和答案

请关注微信公众号&#xff1a;拾荒的小海螺 1、什么是 Dubbo&#xff1f;它的作用是什么&#xff1f; 答&#xff1a; Dubbo 是一款高性能的 Java RPC 框架&#xff0c;是阿里巴巴公司开源的产品&#xff0c;用于提供高性能的分布式服务框架和面向服务的架构。Dubbo 的主要作…

网络编程套接字(4)——Java套接字(TCP协议)

目录 一、Java流套接字通信模型 二、TCP流套接字编程 1、ServerSocket ServerSocket构造方法&#xff1a; ServerSocket方法: 2、Socket Socket构造方法&#xff1a; Socket方法&#xff1a; 三、代码示例&#xff1a;回显服务器 1、服务器代码 代码解析 2、客户端…

C盘清理_

1.通过注册表来找没有删干净的文件 a.winr b.输入regedit,找到下图相应路径,开始查找,或是选择计算机ctrlf搜索对应的文件夹名