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

news2024/11/15 20:59:54

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

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

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

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

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

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

01、本文基于的被测系统

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

选择ZrLog 的原因如下:

部署过程相对简单,功能和业务逻辑不复杂。

其接口资源包含了增、删、改、查等常用操作,服务端响应的数据也是标准的JSON格式,这一些条件均为学习接口自动化测试框架提供了便利。

ZrLog 有多种部署方式,包括 Docker 的方式,本书采用该方式进行部署。Docker 是一种容器技术,容器就是在隔离的环境中运行的一个进程,如果进程停止,容器就会销毁。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。所以,有了 Docker,就不用担心环境问题。

下面展开如何设计 ZrLog 项目的测试用例。

02、提取接口信息并分析

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

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

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

■ 图 1 登录接口的信息

登录接口的信息分析如下。

从图 1 所示的信息可以看到,登录接口采用的是 POST 请求方法, 请求的数据类型为 JSON 格式,采用的是用户名和密码的登录方式。登录成功后,服务器在响应头当中封装了 cookies 信息,这说明如果下游的接口想请求服务器中的资源,需要在请求头当中携带此 cookies 信息。

在接口测试用例中,如何让下游的接口引用上游接口的 cookies 信息呢?需要将cookies 中的 admin-token 字段的值提取出来,放在一个变量中。下游接口直接引用这个变量就可以获取到 cookies 的值。

需要注意的是,当使用错误的用户名或密码进行登录时,会提示用户名或密码错误,且此时响应的业务状态码为 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. 接口关联总结

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

发布文章接口和登录接口相关联。

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

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

查询文章接口和登录接口相关联。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

学习上

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:开心螺蛳粉】自提!

软件测试面试文档

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

在这里插入图片描述

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。

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

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

相关文章

政安晨:快速学会~机器学习的Pandas数据技能(三)(重命名与合并)

使用机器学习处理数据的第一步就得先理解它,咱们现在就帮助它们一起理解起来。 (本篇文章这次换一套数据集,数据文件可以在文章头部下载,并保存至您的虚拟环境的目录中) 不知道如何搭建环境的小伙伴请看我机器学习笔…

超九成飘红,银行成开年唯一逆势上涨板块

2024年开年以来,A股银行板块表现令人瞩目。 Choice数据显示,按照申万(2021,仅A股)分类,2024年开年以来,银行板块是唯一一个逆势上涨板块,平均涨幅为6.53%。 年内银行股近乎全线上涨…

【C语言期末】商品管理系统

本文资源:https://download.csdn.net/download/weixin_47040861/88820155 1.题目要求 商品管理系统 商品信息包括:包括编号、类别、名称、价格、折扣比例、生产时间 、存货数量等要求:1、信息首先保存在文件中,然后打开文件进行…

GPT4技术报告介绍

GPT4_Technical_Report_zh 我们创建了 GPT-4,这是 OpenAI 努力扩展深度学习的最新里程碑。GPT-4 是一个大型多模态模型(接受图像和文本输入,发出文本输出),虽然在许多现实世界场景中的能力不如人类,但在各…

Netty的序列化之MessagePack

目录 引入MessagePack依赖 实体类 服务端代码 客户端代码 执行结果 引入MessagePack依赖 <dependency><groupId>org.msgpack</groupId><artifactId>msgpack</artifactId><version>0.6.12</version></dependency> 实体类…

Stable Diffusion 模型下载:GhostMix(幽灵混合)

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 GhostMix 是绝对让你惊艳的模型&#xff0c;也是自己认为现在最强的2.5D模型。我认为模型的更新应该是基于现有的画面整体不大变的前提下&#xff0c;提高模型的成…

springboot167基于springboot的医院后台管理系统的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

大数据术语系列(1)——COW和MOR,我如何使用chatgpt通俗易懂地理解了hudi这两种表类型

从传统数据库到大数据的转变&#xff0c;首当其冲的是各种术语的理解。 所以我与chatgpt发生了一系列对话&#xff0c;以便于我能快速理解这些术语。 我先把汇总的结果放在前边&#xff0c;后边会一步步地来说明我是如何获取这些信息的。前边我也发过一些关于chatgpt提示词相…

图像处理入门:OpenCV的基础用法解析

图像处理入门&#xff1a;OpenCV的基础用法解析 引言OpenCV的初步了解深入理解OpenCV&#xff1a;计算机视觉的开源解决方案什么是OpenCV&#xff1f;OpenCV的主要功能1. 图像处理2. 图像分析3. 结构分析和形状描述4. 动态分析5. 三维重建6. 机器学习7. 目标检测 OpenCV的应用场…

Go 语言中如何大小端字节序?int 转 byte 是如何进行的?

嗨&#xff0c;大家好&#xff01;我是波罗学。 本文是系列文章 Go 技巧第十五篇&#xff0c;系列文章查看&#xff1a;Go 语言技巧。 我们先看这样一个问题&#xff1a;“Go 语言中&#xff0c;将 byte 转换为 int 时是否涉及字节序&#xff08;endianness&#xff09;&#x…

Verilog刷题笔记26

题目&#xff1a; Build a combinational circuit with 100 inputs, in[99:0]. There are 3 outputs: out_and: output of a 100-input AND gate. out_or: output of a 100-input OR gate. out_xor: output of a 100-input XOR gate. 解题&#xff1a; module top_module( …

springboot157基于springboot的线上辅导班系统的开发与设计

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

数字图像处理实验记录八(图像压缩实验)

前言&#xff1a;做这个实验的时候很忙&#xff0c;就都是你抄我我抄你了 一、基础知识 1&#xff0e;为什么要进行图像压缩&#xff1a; 图像的数据量巨大&#xff0c;对计算机的处理速度、存储容量要求高。传输信道带宽、通信链路容量一定&#xff0c;需要减少传输数据量&a…

字节跳动公益平台“公益聚力计划”上线

为更好地联合社会多方力量参与社会公益&#xff0c;字节跳动公益平台于近日正式推出“公益聚力计划”&#xff08;以下简称“计划”&#xff09;。“计划”支持公益项目的策划与筛选、公益机构撮合&#xff0c;以及多种定制化的产品功能&#xff0c;如定制版公益证书、爱心回礼…

深入探索:缓冲区溢出漏洞及其防范策略

在网络安全的广阔领域中&#xff0c;缓冲区溢出漏洞一直是一个重要的议题。这种漏洞&#xff0c;如果被恶意利用&#xff0c;可能会导致严重的安全问题&#xff0c;包括数据泄露、系统崩溃&#xff0c;甚至可能被攻击者利用来执行恶意代码。在本文中&#xff0c;我们将深入探讨…

2月3日作业

1.编程实现单向循环链表的头插&#xff0c;头删、尾插、尾删 尾插/头插&#xff0c;头删&#xff0c;尾删&#xff1a; 头文件&#xff1a; #ifndef __HEAD_H_ #define __HEAD_H_#include<stdio.h> #include<string.h> #include<stdlib.h>enum {FALSE-1,SU…

18:蜂鸣器

蜂鸣器 1、蜂鸣器的介绍2、编程让蜂鸣器响起来3、通过定时控制蜂鸣器4、蜂鸣器发出滴滴声&#xff08;间歇性鸣叫&#xff09; 1、蜂鸣器的介绍 蜂鸣器内部其实是2个金属片&#xff0c;当一个金属片接正电&#xff0c;一个金属片接负电时&#xff0c;2个金属片将合拢&#xff…

二叉搜索树题目:验证二叉搜索树

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 解法三思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;验证二叉搜索树 出处&#xff1a;98. 验证二叉搜索树 难度 3 级 题目描述 要求…

K8S之Pod常见的状态和重启策略

Pod常见的状态和重启策略 常见的Pod状态PendingPodScheduledUnschedulablePodInitializingImagePullBackOffInitializedRunningErrorCrashLoopBackOffTerminatingSucceededFailedEvictedUnknown Pod的重启策略使用Always重启策略使用Never重启策略使用OnFailure重启策略(常用) …

16、prometheus + grafana + alertmanager

16、prometheus grafana alertmanager k8s 手撕方式安装 prometheus grafana alertmanager k8s版本&#xff1a;k8s-1.29.1 prometheus grafana alertmanager 监控报警 1、k8s 手撕方式安装 prometheus mkdir ~/prometheus-ymlkubectl create ns monitoringcat > ~/…