手把手带你设计接口自动化测试用例(一):提取接口信息并分析

news2024/10/6 0:32:08

1、测试行业市场现状

随着市场需求的变化,大部分企业在招聘测试人员时,都会提出接口自动化测试的相关要求,为什么会这样呢?

目前,软件构架基本上都是前后端分离的,软件的主要功能由服务端提供。从整个软件测试市场来看,大部分的测试人员还是以功能测试和 UI 自动化测试为主,即以前端的页面测试为主,并不涉及过多的服务端测试。但由于软件开发成本提高,开发周期和迭代周期缩短,仅仅做前端的页面测试已不能满足软件对质量的各项要求。

服务端测试的主要对象是由服务端所提供的接口,因此也被称为接口测试。接口测试的优势在于,在一个前端页面的开发还未完成时,测试就可以提前介入。测试工作介入得越早,解决 Bug 的成本越低,产品也会更加稳定,因此接口自动化测试几乎成了 UI 自动化测试人员发展的必经之路。

接口测试也分为手工接口测试及接口自动化测试。手工接口测试一般可以通过 posman 或者 jmeter 等接口工具来完成;在接口的功能趋于稳定之后,便可以实现代码级的接口自动化测试及持续集成。

从目前的市场需求来看,接口自动化测试人才在市场中所占比例较低,薪资高,市场缺口巨大。

本文内容摘自《接口自动化测试项目实战:Python 3.8+Requests+PyMySQL+pytest+Jenkins 实现》一书,书中采用项目驱动模式,并通过Python库建立起一套基础的、实用的接口自动化测试框架。内容结构如下:        

2、本文基于的被测系统


本书将ZrLog 博客系统(https://www.zrlog.com/)作为被测系统。

选择ZrLog 的原因如下:

部署过程相对简单,功能和业务逻辑不复杂。
其接口资源包含了增、删、改、查等常用操作,服务端响应的数据也是标准的JSON格式,这一些条件均为学习接口自动化测试框架提供了便利。
ZrLog 有多种部署方式,包括 Docker 的方式,本书采用该方式进行部署。Docker 是一种容器技术,容器就是在隔离的环境中运行的一个进程,如果进程停止,容器就会销毁。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。所以,有了 Docker,就不用担心环境问题。

3、提取接口信息并分析

接口测试主要是测试对服务端资源的增删改查操作,所以在 ZrLog 系统中提取了 5 个与增、删、改、查有关联的接口信息,分别是登录接口、发布文章接口、修改文章接口、删除文章接口、查询文章接口。在设计接口测试用例之前,需要对这5 个接口进行初步的了解与分析,并了解接口之间的关联关系,以便为设计接口用例做准备。

1)登录接口信息的提取与分析

通过 Fiddler 工具获取到的登录接口的信息如图 1 所示。

图 1 登录接口的信息

2)发布文章接口信息的提取与分析

通过 Fiddler 工具获取的发布文章接口的信息如图2 所示。

图2 发布文章接口的信息

发布文章接口的信息分析如下。

从图2 所示的信息可以看到,发布文章接口采用的是 POST 请求方法, 请求的数据类型为 JSON 格式,且携带了 cookies 信息,这说明发布文章的接口在请求的信息中引用了登录接口所设置的变量信息(为 admintoken 字段的值所设置的变量)。
从请求的正文可以看到,title 的值为“付出”,这说明此次发布文章的标题就是“付出”。
从响应的正文可以看到,当文章发布成功后,服务端生成了一个 id 的参数,这个参数为文章的 id 号,此次发布文章的 id 为 1。但需要注意的是,此 id 号是动态变化的,因为每发布一次新的文章,生成的 id 号都是不一样的。如果下游接口要修改或删除此文章,则需要引用此 id 号。
在接口测试用例当中,如何让下游的接口引用上游接口的 id 信息呢?需要将 id 的值提取出来,放在一个变量中,下游接口直接引用这个变量就可以获取 id 的值。

3)修改文章接口信息的提取

通过 Fiddler 工具获取的修改文章接口的信息如图3 所示。

图3 修改文章接口的信息

修改文章接口的信息分析如下。

从图3 所示的信息可以看到,修改文章接口采用的是 POST 请求方法,请求的数据类型为 JSON 格式,且携带了 cookies 信息,这说明修改文章的接口在请求的信息中引用了登录接口所设置的变量信息(为 admintoken 字段的值所设置的变量)。
从请求的正文可以看到,此次修改的是 id 为 1 的文章,并且将文章的标题由原来的“付出”修改成“付出才能杰出”。但由于文章 id 是动态变化的,所以修改文章时需要引用发布文章接口所设置的 id 的变量。
4)删除文章接口信息的提取

通过 Fiddler 工具获取的删除文章接口的信息如图4 所示。

图4 删除文章接口的信息

删除文章接口的信息分析如下。

从图4 所示的信息可以看到,删除文章接口采用的是 POST 请求方法,请求的数据类型为表单格式,且携带了 cookies 信息,这说明删除文章的接口在请求的信息中引用了登录接口所设置的变量信息(为 admintoken 字段的值所设置的变量)。
从请求的正文可以看到,此次删除的是 id 为 1 的文章,但由于文章的id 是动态变化的,所以删除文章时需要引用发布文章接口中为 id 设置的变量。
5)查询文章接口信息的提取

此次查询的内容为“付出才能杰出”,通过 Fiddler 工具获取的查询文章接

口的信息如图5 所示。

图5 查询文章接口的信息

查询文章接口的信息分析如下。

从图5 所示的信息可以看到,删除文章接口采用的是 GET 请求方法,所以要查询的内容直接放在接口地址里面,而不是放在请求的正文中。查询文章接口同样在请求头中携带了 cookies 信息,这说明查询文章接口在请求头中引用了登录接口所设置的变量信息(为 admin-token 字段的值所设置的变量)。
从响应的正文可以看到,error 字段的值为 0,说明业务查询成功,并且total 和 records 字段的值均为 0,这说明“付出才能杰出”这篇文章已彻底删除,已查询不到任何记录。
6)接口关联总结

通过以上的接口分析,可以得出以下的结论。

发布文章接口和登录接口相关联。
修改文章接口既和登录接口相关联,又和发布文章接口相关联。
删除文章接口既和登录接口相关联,又和发布文章接口相关联。
查询文章接口和登录接口相关联。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

在这里插入图片描述

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

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

相关文章

生成国密SM2密钥对

在线生成国密密钥对 生成的密钥对要妥善保管,丢失是无法找回的。

windows无法与设备或主DNS服务器通信

今天电脑连上wifi后发现qq可以登录,爱奇艺也可以正常使用,但是就浏览器不能用,不管哪个网站都是无法访问,点击下面的Windows网络诊断后发现是因为windows无法与设备或主DNS服务器通信 1.右下角右键wifi图标,打开网络和internet设置 2.点击网络和共享中心 3. 点击更改适配器设置…

(杭电多校)2023“钉耙编程”中国大学生算法设计超级联赛(9)

1002 shortest path 记忆化搜索可以用 map 实现&#xff0c;频繁读取而不考虑元素顺序的可以使用 unordered_map &#xff0c;有效降低时间空间复杂度 dfs(n/2)n%21,其中n%2表示将n变为偶数的次数,1表示操作n/2,dfs(n/2)即表示将n/2变为1的次数 AC代码: #include<iostre…

深入探索Spring后置处理器:解析作用与实际应用场景

前言 BeanDefinitionRegistryPostProcessor &#xff0c; BeanFactoryPostProcessor &#xff0c;InstantiationAwareBeanPostProcessor&#xff0c; BeanPostProcessor是spring生命周期中常见的4个后置处理器&#xff0c;但是对于其作用和执行顺序很多人还不是非常清楚&#…

软件测试的调用接口怎么调用,逻辑是什么?

一、什么是接口测试&#xff1f; 接口测试是测试系统组件之间接口的测试。接口主要用于检测外部系统和内部子系统之间的交互点。测试的重点是检查数据交换、传输、控制和管理过程&#xff0c;以及系统之间的相互逻辑依赖。 二、为什么要做接口测试&#xff1f; 在淘宝系统的…

Java8新特性---Stream流

什么是Stream 是数据渠道&#xff0c;用于操作数据源&#xff08;集合、数组等&#xff09;所生成的元素序列。集合讲究的是数据&#xff0c;流讲的是计算 注意&#xff1a; Stream不会自己存储元素Stream不会改变源对象&#xff0c;相反&#xff0c;他们会返回持有结果的新…

GPT-4耗尽全宇宙数据!OpenAI接连吃官司,竟因数据太缺了,UC伯克利教授发出警告

穷尽「全网」&#xff0c;生成式AI很快无数据可用。 近日&#xff0c;著名UC伯克利计算机科学家Stuart Russell称&#xff0c;ChatGPT和其他AI工具的训练可能很快耗尽「全宇宙的文本」。 换句话说&#xff0c;训练像ChatGPT这样的AI&#xff0c;将因数据量不够而受阻。 这可能…

五、修改官方FreeRTOS例程(STM32F1)

1、官方源码下载 (1)进入FreeRTOS官网&#xff1a;FreeRTOS官网 (2)下载FreeRTOS。(选择带示例的下载) 2、删减目录 (1)下载后解压的FreeRTOS文件如下图所示。 (2)删除下图中红框勾选的文件。 FreeRTOS-Plus&#xff0c;FreeRTOS的生态文件&#xff0c;非必需的。tools&…

esp8266+电压检测模块检测电池电压

该模块5v时输出1v&#xff0c;因esp8266 ADC引脚(A0)支持电压范围是0v-1v&#xff0c;所以该方案仅支持0-5v电压检测 接线&#xff1a; - 接 esp8266GND 可不接 S 接 ADC esp8266 为 A0 VCC 被检测直流电 GND 被检测直流电- #include <Wire.h>const int adcPin A0; // …

Redis五大基本数据类型及其使用场景

文章目录 **一 什么是NoSQL&#xff1f;****二 redis是什么&#xff1f;****三 redis五大基本类型**1 String&#xff08;字符串&#xff09;**应用场景** 2 List&#xff08;列表&#xff09;**应用场景** 3 Set&#xff08;集合&#xff09;4 sorted set&#xff08;有序集合…

excel逻辑函数篇1

1、AND(logical1,[logical2],…)&#xff1a;用于测试所有条件是否均为TRUE 检查所有参数均为true&#xff0c;如果是则返回true 2、OR(logical1,[logical2],…)&#xff1a;用于测试是否有为TRUE的条件 如果任意参数值为true&#xff0c;即返回true&#xff1b;只有当所有参数…

223、仿真-基于51单片机温湿度PH值二氧化碳(C02)报警Proteus仿真设计(程序+Proteus仿真+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件设计 二、设计功能 三、Proteus仿真图 四、程序源码 资料包括&#xff1a; 需要完整的资料可以点击下面的名片加下我&#xff0c;找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一&…

机器学习笔记 - 基于keras + 小型Xception网络进行图像分类

一、简述 Xception 是深度为 71 层的卷积神经网络,仅依赖于深度可分离的卷积层。 论文中将卷积神经网络中的 Inception 模块解释为常规卷积和深度可分离卷积运算(深度卷积后跟点卷积)之间的中间步骤。从这个角度来看,深度可分离卷积可以理解为具有最大数量塔的 Inception 模…

学习笔记230804---restful风格的接口,delete的传参方式问题

如果后端提供的删除接口是restful风格&#xff0c;那么使用地址栏拼接的方式发送请求&#xff0c;数据放在主体中&#xff0c;后端接受不到&#xff0c;当然也还有一种可能&#xff0c;后端在这个接口的接参设置上是req.query接参。 问题描述 今天遇到的问题是&#xff0c;de…

windows子系统wsl2备份(迁移D盘)还原系统

windows子系统wsl2备份还原系统 1.查看wsl版本 wsl -l -v2.停止wsl子系统 wsl --terminate Ubuntu-22.043.导出子系统备份 wsl --export Ubuntu-22.04 D:\Ubuntu_bak.tar4.删除原有系统 wsl --unregister Ubuntu-22.045.还原系统 wsl --import Ubuntu-22.04 d:\Ubuntu-ws…

Jenkins-发送邮件配置

在Jenkins构建执行完毕后&#xff0c;需要及时通知相关人员。因此在jenkins中是可以通过邮件通知的。 一、Jenkins自带的邮件通知功能 找到manage Jenkins->Configure System&#xff0c;进行邮件配置&#xff1a; 2. 配置Jenkins自带的邮箱信息 完成上面的配置后&#xf…

【0基础入门Python笔记】三、python 之函数以及常用内置函数

三、python 之函数以及常用内置函数 函数函数定义函数调用函数参数返回值 常用内置函数input()函数range()函数其它 函数 函数是一种用于封装可重复使用代码块的工具&#xff0c;能够将一系列操作组织成一个逻辑单元。 函数定义 在Python中&#xff0c;函数通过def关键字进行…

Python可视化在量化交易中的应用(12)_Seaborn柱状图

Seaborn中柱状图的绘制方法 seaborn中绘制折线图使用的是sns.barplot()函数&#xff1a; sns.barplot(x,y,hue,data,order,hue_order,estimator,ci95,n_boot1000,units,seed,orient,color,palette,saturation0.75,errcolor‘.26’,errwidth,capsize,dodgeTrue,ax,**kwargs,) …

linux RabbitMQ-3.8.5 安装

软件版本操作系统CentOS Linux release 7.9.2009erlangerlang-23.0.2-1.el7.x86_64rabbitMQrabbitmq-server-3.8.5-1.el7 RabbitMQ的安装首先需要安装Erlang,因为它是基于Erlang的VM运行的。 RabbitMQ安装需要依赖:socat和logrotate&#xff0c;logrotate操作系统已经存在了&…

内网穿透技术之神卓互联如何检测本地环境

在使用神卓互联Windows版客户端的过程中添加和编辑映射通道默认会自动生效&#xff0c;如您遇到无法访问的情况&#xff0c;可通过客户端上的检测工具进行环境检测。 Windows客户端检测本地环境&#xff0c;登录神卓互联客户端&#xff0c;在主界面下方的按钮组里选择【环境检…