测试老鸟总结,接口自动化测试用例设计编写,高级测试之路...

news2024/11/17 13:20:50

目录:导读

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


前言

接口信息来源

与界面功能测试相比,除了要明确需求和测试目标之外,接口测试还需要有针对性地去设计测试数据和接口的组合,确定接口信息通常有两条路径,一是通过接口文档获取,二是通过接口抓包获取。

接口文档

开发人员一般不喜欢写接口文档,同时也讨厌别人不写接口文档,就像程序员一般不喜欢写注释,同时也讨厌不写注释的代码,所以测试人员想要获取一份相对完善的接口文档有时是比较麻烦的,这就需要驱动开发人员提供,这对于开发人员来说并不困难。

作为测试人员需要关注接口文档的有效性和及时性,包括:Request URL、Request Method、Content-Type、请求参数、响应结果、请求示例等。

抓包

如果没有接口文档,那就只能自己动手丰衣足食,通过抓包分析的方式来获取接口信息。
常见的抓包工具比如:浏览器 F12、Fiddler、Charles 等,还可以把 Fiddler 抓到的接口导出,通过工具转成接口平台可识别的脚本,进而提高效率。

在获取到接口信息后,还需要与开发人员多进行交流,明确接口参数的含义和来源,以便于我们有针对性地进行用例的设计。

有不明确的点应当直接找开发同学问清楚,而不应该自己过多的猜想,避免自己的猜想有误造成后续用例设计的错误。在此阶段,还需梳理接口的优先级和重要程度,根据优先级顺序进行用例设计,在有限的时间内,做最大价值的事。

单接口测试

单接口测试主要验证接口的请求地址、请求类型、请求格式、请求参数、权限、返回值等为主,目的是保证接口能跑通,这类用例一般在接口设计完成后定稿,使用过程中可配合 Mock 服务完成用例编写。

场景逻辑验证

场景逻辑验证是以用户场景为基础,验证接口间的参数传递和业务流程是否能够正常流转。

比如:用户注册接口 --> 用户登录接口 --> 修改用户信息接口,使得业务流程形成闭环。

这个阶段的用例复杂度较高,需要非常熟悉业务与接口之间的关系,同时也是接口测试的核心部分、最有价值的部分。

异常测试

与界面功能测试类似,除了测试各种正常场景外,还需要验证各种异常情况,主要验证参数异常。

比如:某个参数的类型是 String,当你传入其他类型时是否会报错并给出提示;某个参数的长度限制 200 个字符,当超过 200 个字符时是否给出提示;

某个参数是必填,当不传为空时是否有非空判断。还需要验证逻辑异常等情况下接口是否能够处理并给出友好的提示信息、提示是否准确清晰以及返回的信息是什么。

通常情况下,关注参数的异常场景会比较多,可以用等价类、边界值等方法进行传参的设计。

尽量做自动化

所有用例应该是非交互式的,能自动化就不要手动去获取。最常见的就是 token 的获取,获取 token 的方法也有很多种。

最常用的就是通过调用登录接口获取返回值中的 token,用于后续接口的鉴权,还有一些开放平台接口,token 有特定的生成规则,就可以将其写成脚本自动生成 token,而不是每次执行测试用例之前,需要手动生成 token 再复制粘贴到脚本中。

特别是分环境测试时就会很麻烦,而且 token 一般是有有效时间的,写成自动化脚本,每次都获取都是最新的,就不用担心 token 过期的问题了。

合理的断言

黑盒测试的重点是输入和输出,其实集成后的接口测试也属于黑盒测试,也许我们不需要关注内部的代码是如何实现的,更多的是关注请求参数和响应结果,因此在设计用例时,需要重点关注断言的设计。

好的断言能够帮助我们发现问题,没有断言的用例或者脚本就是在耍流氓,完全没有意义,如果没有断言,全部用例都是 pass,那我们也无法真正对系统放心,无法确保一定没有问题。

从接口层面上看,我们至少需要关注两方面的验证,一是数据结构验证,二是核心数值验证。

数据结构验证就是校验接口返回的数据结构是否与事先约定好的一致,调用方在处理数据时,肯定是按照事先约定好的数据结构来解析数据,如果数据结构发生了变化,那么对调用方来说,无疑是灾难性的事故,也就是说之前已经开发完成的程序在对接时就会出错,导致需要重新开发。

核心数值的验证需要根据不同的业务场景,有针对性地验证某些键值是否与预期一致,同时可以结合数据库查询的方式来验证。

比如:用户注册接口调用成功后会返回一个用户 ID,此时就可以使用 SELECT * FROM user_table WHERE user_id = “”; 以判断是否真的注册成功,这个比较依赖于测试人员对于业务的了解程度,根据实际情况灵活设计即可。

除此之外,还有一些额外的验证点在需要的时候也可以进行校验。

比如:返回的 URL 是否能访问、涉及到数据流转的、返回的数据是否真的有必要(避免返回数据量过大导致意外情况发生)。

通过添加合理的断言,才能让接口自动化用例有一定的业务价值,能够真正帮助到团队提升效率,这样的测试结果才能让人安心。

接口自动化测试用例

1、公共参数
接口自动化测试中一个很重要的环境就是测试数据的准备,要想让脚本可以在多套环境中运行,那么测试数据就不能写得太死,需要根据具体环境去自动获取一些数据值。

公共参数就是通过不同作用域或标识的区分,有一个专门的模块来处理一些公用数据的存放,比如:不同环境的账号密码,不同环境的 URL 等。

2、数据集合
通过特定的 API 或数据库 SQL,事先生成一些所需的数据作为前置条件,然后存放到一个特定的集合中,需要的时候再从数据集合里面取。

3、数据模板
由于测试环境一般会有多套,为了方便环境的切换,我们不应该把太多的数据信息写死,而是通过填写一些简单的信息,再调用基础接口,自动生成一整套业务数据。

比如:用户信息包含用户名、手机号、邮箱、注册时间等,此时我们不应该把这些信息都写死,而是通过用户 id 去调用用户信息查询接口获取一整套用户信息数据等等。

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

每一天都是一个全新的开始,不要停下脚步,勇敢前行!只有坚持不懈,才能收获成功的喜悦。不要怕失败,要敢于尝试,相信自己一定能够克服任何困难,实现自己的梦想。只要心怀信念,就能创造奇迹!

只有不断奋斗才能实现自己的梦想,不要畏惧挫折和失败,要坚持不懈地追求自己的目标。每一次努力都是积累,每一天都有可能改变命运,加油吧!

每一次的坚持和努力,都会有回报,无论是成功或失败,都是成长的一部分。所以不要放弃,不要停下脚步,继续前行,在路上遇到的风景和惊喜,都将成为你奋斗路上最美的记忆。

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

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

相关文章

百度图像识别 API

首先预览下效果 feaa250077a543a39f037ae8e78a3e80~tplv-k3u1fbpfcp-zoom-in-crop-mark:1512:0:0:0.awebp (640594) (byteimg.com) 从以上预览图中可看出,每张图片识别出5条数据,每条数据根据识别度从高往下排,每条数据包含物品名称、识别度…

VisualStdio中scanf报错问题

VisualStdio中scanf报错问题 目录 一. 概述二. 解决方法 一. 概述 报错代码及说明 报错代码为C4996 会在哪种编译器中报错? VisualStdio系列编译器 为什么会报错? 因为VisualStdio比较严谨,认为scanf不…

内网安全:横向传递攻击( RDP || Cobalt Strike )

内网安全:横向传递攻击( RDP || Cobalt Strike ) 横向移动就是在拿下对方一台主机后,以拿下的那台主机作为跳板,对内网的其他主机再进行后面渗透,利用既有的资源尝试获取更多的凭据、更高的权限&#xff0…

【基础知识整理】时间复杂度 空间复杂度

概览 时间复杂度与空间复杂度的作用是在衡量一个算法的优劣性,以及在二者之间进行权衡,寻找二者的平衡点。 时间复杂度是指执行算法所需时间的增长率,而空间复杂度则是指执行算法所需存储空间的增长率。 高时间复杂度的算法可能需要在短时间…

合金氢化物动力学与瞬时流量

在经典的合金氢化物动力学描述中,有一种是用JMAK方程来描述和拟合合金的吸放氢过程,方程很简洁:,其中是反应程度或者百分比,表示合金氢化物吸氢或者放氢的程度,是该合金吸氢或放氢的一种特征常数&#xff0…

使用wab2app将网页打包成APK

前言 通过开源项目ChatGPT-Next-Web部署完了私人网页ChatGPT,为了使访问更加便捷,便想着使用wab2app打包为APK,虽然最终达成了效果,可一路走来遇到了很多坑儿,记录下 打包流程 有要打包的网站和软件HBuilder X&…

【Kubernetes存储篇】持久化存储PV、PVC详解

文章目录 一、PV、PVC持久化存储理论1、PV、PVC是什么?2、PV的供应方式3、PV、PVC的回收策略 二、案例:PV、PVC持久化存储案例演示1、搭建NFS服务端2、创建PV,并使用NFS共享存储3、创建PVC,并和PV绑定4、创建Pod,并挂载…

docker中运行PostgreSQL容器

我们如何在docker中运行postgresql容器,要进过如下几个步骤就可以了。 拉取postgresql容器 docker pull postgres:latest使用上述命令将从 Docker Hub 存储库中提取最新可用版本的 PostgreSQL。 从 PostgreSQL 服务器 Docker 镜像运行容器 在部署之前,…

2023年6月DAMA-CDGA/CDGP数据治理工程师认证报名特惠

DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…

WinDbg安装入坑3(C#)

由于作者水平有限,如有写得不对的地方,请指正。 使用WinDbg的过程中,坑特别的多,对版本要求比较严格,如: 1 32位应用程序导出的Dump文件要用32位的WinDbg打开,想要没有那么多的问题&#xf…

Xcode 15 beta (15A5160n) - Apple 平台 IDE

Xcode 15 beta (15A5160n) - Apple 平台 IDE IDE for iOS/iPadOS/macOS/watchOS/tvOS/visonOS 请访问原文链接:https://sysin.org/blog/apple-xcode-14/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org Xcode 15 使…

windows系统cmd命令设置别名,并添加到环境变量

众所周知,Linux 命令很强大,使用起来也很方便,但是想在 windows 系统上使用 Linux 命令有些困难,要么下载第三方终端工具,要么就是安装一系列命令环境。 作为一个前端开发,其实可以全局安装一下 npm 命令行…

分库分表-ShardingSphere

分库分表拆常见分方法与特点 分片策略 数据分布 以后扩展 基于Hash:hash(分片键)%分片数 数据分布均匀 不易扩容,扩容需要数据迁移 范围分片:例如按年分,按月,按日 数据分表可能不均匀 易扩展,扩展…

API自动化测试利器Postman,帮助你更好地进行 API 自动化测试

目录 前言: 一、基本功能 二、测试工具 三、示例 前言: Postman 是一个易于使用的 API 开发和测试工具,可以在其中快速构建、测试和文档化 Web API。Postman 提供了一个直观的用户界面,可以轻松地创建 HTTP 请求、测试响应、…

深入解析XMLHttpRequest:实现异步通信的利器

文章目录 介绍什么是XMLHttpRequest?XMLHttpRequest的基本用法1.创建XMLHttpRequest对象2.配置请求3.发送请求 XMLHttpRequest 属性sendreadyStatestatusstatusTextresponseresponseTextresponseTyperesponseURLtimeoutwithCredentials 异步请求与同步请求请求类型和…

淡季,老手买入的季节。

刚在刷抖音,刷到马云的视频。心里在想:这么大的企业家大富豪怎么会哽咽呢?他缺钱吗?他需要为生存奋斗吗? 他当然不缺钱,也不需要为生存去奋斗。如果以家庭生活支出来算,他的钱够几代儿孙挥霍了。…

漂亮国因一颗气球而疯狂给质量团队带来的启示

最近漂亮国因为我国的一颗漂洋过海的淘气的民用气球而疯狂。这颗气球成功躲过了号称全球最先进的防空系统,跨越大半个漂亮国,直到被一居民拍照无意间发现,漂亮国才反应过来。多次派战斗机拦截无果,在气球降到15km后,F2…

数据链路层之以太网协议基本知识总结分享

目录 1. 以太网协议报文格式 2. MTU是什么?它对哪些协议有影响? 1. 以太网协议报文格式 这里的目的地址不是ip地址,是Mac地址,mac地址是6个字节,比ipv4地址大了2个字节,当前的mac地址是可以让每个设备都是唯一的,且不需要动态分配,一般是网卡出厂就分配好了的.这就代表我们…

【他山之石】基于Echarts表格的时间线(轴)组件触发时间变化事件,带多种方案比较

【他山之石】基于Echarts表格的时间线组件触发时间变化事件 1 背景2 调整思路3 函数监听 1 背景 在开发中遇到一个场景:要展示的数据随着时间的变化发生改变,有以下几点要求的的时间线。 水平方向可以切换时间变化,带播放按钮时间节点背景图…

chatgpt赋能python:Python编程:如何删除前面的代码?

Python编程:如何删除前面的代码? 在Python编程中,我们有时会需要删除之前写的一些代码,以便更好地组织我们的代码结构和逻辑。那么,Python中如何删除前面的代码呢?在本文章中,我们将为您详细介…