自动化测试用例怎么写?最全自动化测试用例设计编写指南...

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

Python自动化测试:https://www.bilibili.com/video/BV1MS4y1W79K/

自动化检查应形成一个不可拆分的单元,一个用例只能测试一个功能点。由于测试的颗粒度非常小,这与编写单元测试非常相似。

原子性的测试用例应该是这样的:
该测试用例尽可能少地断言,通常只有一个或两个断言。
测试避免与UI界面交互,最多只能在两个页面上进行。
在通常情况下,测试颗粒度越小。测试用例就会越复杂,但是将测试设计得尽可能小有很多优点。

编写原子性测试可以快速执行得到测试结果。测试报告的反馈是迅速而针对性的。检查功能状态的时间一般都是几秒钟内完成。

对于测试报告中的错误信息,很快能够复现且排查BUG的根源,并迅速解决它。

缩短测试链
如果平均单个测试用例执行的时间能够缩短一半,那么测试效率会提升两倍以上。因为测试的时间越长,误报的可能性越大,随着干扰因素的不断累计,失败的可能也越大。

编写原子测试用例可减少脆弱性,因为它减少了该测试中可能出现的断裂的数量。原子性测试用例能够减少大量误报,这又会促进出现问题的排查时间。

一个例子:
打开网页主页;
断言页面已打开;
断言某个元素存在;
打开搜索页面;
搜索文章;
断言该文章存在;

使用自动化测试时,每一个步骤都有概率出现错误。
例如,定位器或交互机制可能已更改而同步策略可能已过期。

因此一个自动化测试用例中的步骤越多,测试就越有可能中断并产生误报。

测试覆盖率
编写原子测试的第三个好处是,如果原子测试用例失败,它们将不会阻断其他功能用例的测试。

换句话说,自动化测试用例可以对业务功能进行更全面的检查,而不用担心测试链断裂导致后面的功能无法覆盖。

参考上面提到的测试:如果在步骤断言元素存在中失败,则可能永远无法检查搜索页面或搜索功能是否正常。

若是在回归测试场景中,运行大规模测试用例的时候,原子性的测试用例将减少测试范围。编写原子测试用例的另一个巨大好处是,它们在运行时会更快,因为完全可以进行并行化处理。

Web自动化用例拆分

一个简单的场景:
打开购物网站首页;
断言页面打开;
搜索商品;
断言已找到商品;
加入购物车;
断言已添加商品;
订单信息补充;
结算;
断言订单成功;

许多自动化工程师认为这个测试用例必需完整执行整个测试链的流程。
例如必须在搜索之前必需打开首页之前,依此类推。
原因是,如果购物车中没有商品,又如何才能进入结帐流程?

注入测试数据
自动化测试最佳实践方法是在UI交互之前注入数据以填充应用程序的状态。

这将极大地帮助测试过程。

例如:可以通过几个选项控制应用程序的状态:
使用API测试框架的方法将应用程序设置为特定状态;
使用JavaScript修改页面;
将数据注入数据库以将应用程序设置为特定状态;
使用cookie信息;

如果可以在应用程序的接缝之间插入数据,则可以隔离每个步骤并对其进行单独测试。

要考虑的一些选项:
发送网络请求以生成新的测试用户;
发送网络请求以填充购物车中的商品;
使用Selenium打开浏览器到购物车页面;
使用网络自动化执行结帐;
之后清理所有测试数据;

使用HTTP接口
使用API测试与在每个测试步骤中使用自动化的GUI相比,它的功能更加强大且速度更快。
例如,一个HTTP请求可以在大约几十毫秒内执行。
这意味着前置步骤中的需求只需不到一秒钟即可完成。

测试用例需要完成的唯一步骤是使用Selenium(实际要测试的唯一部分)完成结帐过程。

使用JavaScript
登录页面是测试最常见的障碍之一,而且大多数应用程序都有必需经过这一步才能进入系统。

那么,如何从测试中删除它,使测试用例可以是原子性的?

一个例子:
在某一个带有登录屏幕的页面:
使用GUI测试工具打开Web应用;
执行JavaScript脚本;
登录成功;
现在,使用GUI自动化测试工具执行要测试的单个原子测试用例。

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

每天都是一个新的开始,不要让过去的失败阻碍你前进的步伐。坚持努力,永不放弃,你一定能够实现自己的梦想。成长的路上,有挫折也有收获,相信自己,勇往直前!

每一次的挫折都是成长,每一个努力都值得珍惜。坚定自己的目标,并为之努力奋斗,只有这样才能实现自己的梦想,创造属于自己的辉煌人生!

每一次努力都是为了成为更好的自己,即使前路充满困难和挑战,也要坚定信心,勇往直前。只有不断地跨越障碍,才能够赢得成功的喜悦。让我们一起拼搏,奋斗出精彩人生!

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

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

相关文章

python---变量(3)

求字符串的长度 使用len来求字符串中有几个字符 字符串的拼接 此时是把a2字符串拼接到a1字符串的末尾,得到更大的字符串,对于原来的a1和a2是没有影响的! 不能把字符串和数字混合相加! 这个时候程序就会报错,不能…

GO语言并发编程入门:Goroutine、Channel、Context、并发安全、GMP调度模型

GO语言并发编程入门:Goroutine、Channel、Context、并发安全、GMP调度模型 1.GO并发介绍 并发:多线程程序在一个核的cpu上运行。 并行:多线程程序在多个核的cpu上运行。 由上可知并发不是并行,并行是直接利用多核实现多线程的运…

【分布式文件存储】MinIO部署及实现文件上传下载

目录 概述 MinIO集群部署 准备docker-compose.yml 测试启动 MinIO用户管理 Buckets管理 创建Buckets MinIO客户端 引入依赖 文件上传下载Demo 调用API碰到的问题 概述 MinIO | 高性能, Kubernetes 原生对象存储 MinIO是全球领先的对象存储先锋,目前在全世…

照相机标定

一.相机标定的原理 1.1 相机如何成像: 相机成像系统中,共包含四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系。 1.1.1 世界坐标系: 世界坐标系(world coordinate),也称为测量坐…

Cobalt Strike工具基本使用

Cobalt Strike 安装启动启动server端启动client目标机器连接 工具基使用用户驱动攻击屏幕截图进程列表键盘记录文件管理远程vnc远程代理端口扫描 生成后门被攻击者运行后门文件后查看结果 钓鱼攻击信息收集网站克隆文件下载 安装 网盘地址:链接:https:/…

PyG的Planetoid无法直接下载Cora等数据集的解决方法

问题描述: 在使用PyG的时候,通常会涉及到一些公共数据集的下载,由于网络问题,导致无法下载出现以下问题: 尝试了很多的方法都没有成功(主要是个人比较菜!)。但是皇天不负有心人&am…

文心一言和ChatGPT最全对比

文心一言和ChatGPT都是基于深度学习技术的自然语言处理模型,有各自的优势和使用场景,无法简单地比较 ChatGPT 和文心一言哪一个功能更强大,它们各自具有优势和局限性,需要根据具体需求进行选择,以下一些具体对比&#…

分布式网络通信框架(十)——Mprpc框架使用示例

发布一个服务提供远程调用方法的流程 若想要发布一个服务提供一些远程调用方法,步骤如下: 先在protobuf文件中添加参数和返回值的message 类型,然后再添加希望提供的服务 service 类型(如UserServiceRpc)和 其中的方…

C++内存管理和模板

文章目录 内存管理new和delete 函数模板隐式实例化显式实例化 类模板 内存管理 有时候我们需要动态的申请内存,比如队列,栈,二叉树等数据结构,我们一开始并不知道要存储多少个数据,也就是不确定究竟要多大的内存,给小了存不下,给大了会造成内存资源的浪费,因此动态的申请内存是…

原工程运行正常,重新复制一份后再 npm install 后再运行就报错的解决办法

原工程,运行正常 将刚刚的工程复制一份呢,重新 npm install 再 npm run serve 就报错 出现这个问题十之八九都是依赖的问题。有可能是因为这个工程里面之前安装过一些东西,后来莫名其妙的就把 package.json 里面相关的依赖给删掉了。但由于原…

【数据结构】顺序二叉树的实现—以堆的实现为例、堆的调整、堆的创建、堆的插入和删除、堆排序

文章目录 1.堆的概念及结构2.堆的实现(以大堆为例)2.1堆的插入2.1.1堆的向上调整算法 2.2堆的删除2.2.1堆的向下调整算法 2.3堆的创建2.4有关建堆的时间复杂度 3.堆排序4.C语言堆实现源码 1.堆的概念及结构 堆就是顺序结构二叉树。 如果有一个关键码的集…

jetcache参考文档

jetcache简介 https://github.com/alibaba/jetcache/blob/master/docs/CN/GettingStarted.md 简介 JetCache是一个基于Java的缓存系统封装,提供统一的API和注解来简化缓存的使用。 JetCache提供了比SpringCache更加强大的注解,可以原生的支持TTL、两级…

shell变量类型含义 长方形面积计算 截取相应字段方法

1.总结变量的类型及含义? 2.实现课堂案例计算长方形面积?(6种方式) 3.定义变量urlhttps://blog.csdn.net/weixin_45029822/article/details/103568815(通过多种方法实现) 1)截取网站访问的协议 …

文心一言 VS 讯飞星火 VS chatgpt (22)-- 算法导论4.2 2题

二、为Strassen算法编写伪代码。 文心一言: Strassen算法是一种用于矩阵乘法的算法,它的核心思想是通过不断将原始矩阵分割成较小的子矩阵来实现高效的乘法运算。以下是Strassen算法的伪代码: function Strassen(A, B): if A[0][0] 0 or…

Springboot整合WebSocket

目录 1.WebSocket 简介 2.WebSocket 实战 1.WebSocket 简介 WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要…

基于html+css的图展示98

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

C++入门

文章目录 😀1. 命名空间😄1.1 命名空间定义😄1.2 命名空间使用 😊2. 输入和输出😉3. 缺省参数🫠3.1 缺省参数概念🫠3.2 缺省参数分类 😬4. 函数重载🙄4.1 函数重载概念&a…

TypeScript9-声明文件

本篇文章来讲 TypeScript 的声明文件。 当我们在使用第三方库的时候,很多第三方库不是用 TS 写的,它们是通过原生的 JavaScript 或者是浏览器 / 或者是 node 提供的 run time 对象。如果我们直接使用 TS 肯定就会报编译不通过。 1. 声明语句 假设一个…

浅析变电站无人值守管理的模式与特点

安科瑞虞佳豪 近年来,随着电网的发展,变电站实行无人值班管理模式已成为电网的发展方向。自1998年始,辉县市就开始了变电站综合自动化改造,截止目前全局所属24座变电站(其中35kV19座、110kV5座)已全部实现…

API自动化测试【postman生成报告】

PostMan生成测试报告有两种: 1、控制台的模式 2、HTML的测试报告 使用到一个工具newman Node.js是前端的一个组件,主要可以使用它来开发异步的程序。 一、控制台的模式 1、安装node.js 双击node.js进行安装,安装成功后在控制台输入node …