接口自动化测试要做什么?

作者:不辣的皮皮
链接:https://www.zhihu.com/question/384727359/answer/1124441469
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

可以分为四个步骤/阶段。

原理 》 业务逻辑》 工具》 自动化测试脚本与框架

所谓原理,指的是接口是什么,依赖于何协议来进行传输,请求和响应是如何发生并完成其效果的。

拿http协议来说,你需要学习计算机网络,并且理解你的测试是在网络七层中的第七层。你还需要知道http协议有请求,有响应,以及其中包含了什么。

restful api风格也是值得一看的东西。

所谓业务逻辑,指的是你要测试的服务,是怎样利用上述协议能力,达成自己需要的业务逻辑的。此处大概率你需要研发给出一个清楚的接口文档。

例如,登录后的session,可以用login请求(body中带用户名密码),响应返回session token(利用响应头的set cookie)实现。

例如,当接口返回不正常时,它可以使用响应状态码非200来表达,也可以是响应体json中的code字段。

这样,你不仅理解了该如何进行一次接口请求,也知道怎么样的接口响应是预期值(从而得知什么样的情况是bug)

在以上两点搞明白了之后,你就可以用工具来进行“手工的”接口测试了。

你需要的工具一般分为两类:

一是请求发送和收取工具,例如postman和jmeter。当然jmeter可以作为简易的自动化or性能测试工具。

二是抓包工具,这主要是进行辅助验证。正所谓,“遇事不决先抓包”,黄金定律,切莫瞎猜,眼见为实。工具例如chrome开发者工具F12,fiddler,wireshark,tcpdump等。如果你同时有涉及UI的测试,chrome开发者工具就很重要了,可以帮助你分辨前端bug或后端bug。

最后,我们才开始把上述过程自动化。

此时你需要选择你的语言和框架,例如pytest on python,testng on java。这个教程就很多了,此处就不多说了。

而后,你还可以进行的是:

1 让研发提供的接口文档标准化。例如使用swagger和thrift。这样你可以自动生成部分测试代码。

2 自动化环境准备,数据准备。

3 自动化持续集成,即代码合入,环境部署,测试,打包发布这一整条流水线。

4 优化测试框架。

切忌跳过前面几个步骤,直接看自动化测试框架,循序渐进为好。

 总结

如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入我们,加入方式在文章的最后面

  自动化测试相关教程推荐:

2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili

2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili

测试开发相关教程推荐

2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili

postman/jmeter/fiddler测试工具类教程推荐

讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程,学jmeter接口测试一套教程就够了!!_哔哩哔哩_bilibili

2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili

2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibili

  总结:

 光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

​​

​​

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!

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

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

相关文章

【LeetCode】2626. 数组归约运算

数组归约运算 题目题解 题目 给定一个整数数组 nums、一个 reducer 函数 fn 和一个初始值 init,返回通过依次对数组的每个元素执行 fn 函数得到的最终结果。 通过以下操作实现这个结果:val fn(init, nums[0]),val fn(val, nums[1])&#…

机器学习-线性回归实践

目标:使用Sklearn、numpy模块实现展现数据预处理、线性拟合、得到拟合模型,展现预测值与目标值,展现梯度下降; 一、导入模块 import numpy as np np.set_printoptions(precision2) from sklearn.linear_model import LinearRegr…

JavaWeb的Filter详解

一、Filter过滤器简介 1、基本概念 JavaWeb的三大组件之一,三大组件为:Servlet、Filter、Listener。 过滤器相当于浏览器与Web资源之间的一道过滤网,在访问资源之前通过一系列的过滤器对请求 进行修改、判断以及拦截等,也可以对…

CMake入门教程【核心篇】导入外部库Opencv

😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「动动你的小手」:点赞👍收藏⭐️评论📝 文章目录 环境准备示例:在Windows上配置OpenCV路径示例:在Linux上配置OpenCV路径环境准备 首先确保你的系统中安装了CMake。可以通过以下命令安装: Windows: 下载并…

Transformer从菜鸟到新手(五)

引言 上篇文章我们在单卡上完成了完整的训练过程。 从本文开始介绍模型训练/推理上的一些优化技巧,本文主要介绍多卡并行训练。 下篇文章将介绍大模型推理常用的缓存技术。 多卡训练 第一个要介绍的是利用多GPU优化,因为在单卡上训练实在是太慢。这…

Camunda ServiceTask

一:Java class Java class实现JavaDelegate接口,只需要配置类的全限定名即可,不需要被Spring容器管理。 public class JavaClassServiceTask implements JavaDelegate {Overridepublic void execute(DelegateExecution execution) throws …

【mars3d】批量关闭矢量数据的startFlicker()闪烁或者全部关闭startFlicker()

问题 1.graphic/entity/billboard怎么能够批量关闭startFlicker()闪烁或者 全部关闭startFlicker()呢? 相关链接 1.http://mars3d.cn/editor-vue.html?idgraphic/entity/billboard 2.http://mars3d.cn/apidoc.html#FlickerEntity 期望效果 1.graphic.stopFlic…

【软考】二叉树的存储

目录 一、基本概念二、二叉树的顺序存储2.1 说明2.2 图示 三、二叉树的链表存储3.1 说明3.2 图示 一、基本概念 1.满二叉树:最深一层都没有子节点,其它层都有左右两个节点 2.完全二叉树:是满二叉树的子集,在完全二叉树中最深一层的…

微信小程序实战-02翻页时钟-2

微信小程序实战系列 《微信小程序实战-01翻页时钟-1》 文章目录 微信小程序实战系列前言计时功能实现clock.wxmlclock.wxssclock.js 运行效果总结 前言 接着《微信小程序实战-01翻页时钟-1》,继续完成“6个页面的静态渲染和计时”功能。 计时功能实现 clock.wxm…

shp格式样本转微软COCO格式样本标注

在做影像识别时,需要大量的样本,对于从事GIS和遥感专业的人员来说,可能使用ArcGIS对着影像,绘制样本效率更高。但是很多框架和开源的代码都是基于PASCAL VOC格式和微软COCO格式的样本。这里我分享一下如何将栅格和shp数据转换微软…

记录汇川:ITP与Autoshop进行仿真连接

1、定义如下程序: 2、ITP新建工程: 3、依次选择,最后修改IP 4、定义两个变量 5、拖一个按钮和一个圈出来,地址绑定:M1 6、地址绑定:Y1 7、PLC启动仿真 8、ITP启动在线模拟器 9、即可实现模拟仿真

Python中调用matplotlib库三维可视化图像像素曲面分布

为了更直观的从3D视角观察一副图像的像素分布,且拖动观察没一个像素细节,可以使用下面代码实现。 目录 一、代码二、效果展示 一、代码 使用代码修改修改的地方如下: 具体实现代码如下: import numpy as np import matplotlib.pyplot as …

大创项目推荐 深度学习实现行人重识别 - python opencv yolo Reid

文章目录 0 前言1 课题背景2 效果展示3 行人检测4 行人重识别5 其他工具6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习的行人重识别算法研究与实现 ** 该项目较为新颖,适合作为竞赛课题方向&#xff0c…

python接口自动化测试框架介绍

之前在项目中搞了一套jmeter jenkins git ant接口自动化测试框架,在项目中运行了大半年了,效果还不错, 最近搞了一套requests unittest ddt pymysql BeautifulReport的接口自动化测试框架, 测试用例在yaml文件中&#xff0c…

【C语言】time.h——主要函数介绍(附有几个小项目)

time.h是C标准函数库中获取时间与日期、对时间与日期数据操作及格式化的头文件。返回值类型 size_t:适合保存sizeof的结果,类型为unsigned int(%u)clock_t:适合存储处理器时间的类型,一般为unsigned long&…

vue3+vite+tailwind.css无效问题,兄弟们我来解救你们了

1.按照文档配置,原模原样写,最终发现没效果。。。。。 那是应为vite.config.ts没有配置, 保你100%有效果!

一次性讲清楚INNER JOIN、LEFT JOIN、RIGHT JOIN的区别和用法详解

文章目录 Join查询原理Nested-Loop JoinINNER JOIN、LEFT JOIN、RIGHT JOIN的区别INNER JOIN操作LEFT JOIN操作RIGHT JOIN操作总结 参考 Join查询原理 查询原理:MySQL内部采用了一种叫做 Nested Loop Join(嵌套循环连接) 的算法。Nested Loop Join 实际上就是通过 …

力扣——C语言:合并两个有序数组

88. 合并两个有序数组 - 力扣(LeetCode) 这道题有多种方法可以解决 一、暴力求解 这种方法最简单,我们只需要把两个数组合在一起然后在冒泡排序就可以了 代码如下: void merge(int* nums1, int nums1Size, int m, int* nums2…

springboot——消息中间件

消息的概念 从广义角度来说,消息其实就是信息,但是和信息又有所不同。信息通常被定义为一组数据,而消息除了具有数据的特征之外,还有消息的来源与接收的概念。通常发送消息的一方称为消息的生产者,接收消息的一方称为…

OpenAI ChatGPT-4开发笔记2024-02:Chat之text generation之completions

API而已 大模型封装在库里,库放在服务器上,服务器放在微软的云上。我们能做的,仅仅是通过API这个小小的缝隙,窥探ai的奥妙。从程序员的角度而言,水平的高低,就体现在对openai的这几个api的理解程度上。 申…