干货 | 实战演练基于加密接口测试测试用例设计

news/2024/11/28 5:50:40/

如果接口测试仅仅只是掌握一些requests或者其他一些功能强大的库的用法,是远远不够的,还需要具有根据公司的业务以及需求去定制化一个接口自动化测试框架能力。所以在这个部分,会主要介绍接口测试用例分析以及通用的流程封装是如何完成的。

首先在做用例分析之前,可以通过追查公司一年来所有的故障原因,定位问题起因,或者通过与CTO、产品经理、研发、运维、测试调查,得到质量痛点,还可以分析业务架构、流程调用,以及监控系统了解到业务的使用数据,从而得到质量需求。

得到质量需求之后,通过与产品经理、项目经理、研发总监等对接后得知待测业务范围、业务场景用例、业务接口分析,从而确定公司的测试计划。将测试计划与质量需求结合进行分析,就可以开始进行业务用例的设计,而接口测试用例分析,也在其内。

接口封装思想主要分为3个大维度,配置、接口封装、业务流程。其中配置主要用作根据配置文件获取初始配置和依赖;接口封装遵循apiobject设计模式,对接口的调用进行抽象封装;业务流程则负责数据初始化、业务用例设计,包含有多个api形成的流程定义,不要再包含任何接口实现细节、以及断言。后面将会与实战案例结合,进行详细的介绍。

由于信息安全的原因,许多的接口在传输的时候会对请求与响应进行加密处理,如果直接对这部分数据做断言显然是行不通的。还需要对这部分接口额外进行解密的处理之后,才可以对已解密的接口进行断言。

在进行实战之前,需要先准备一个对响应加密的接口。对它发起一个get请求后,得到一个加密过后的响应信息。

先准备一个json格式demo

{"topics":
{
"orange":"movie",
"shool":"testing-studio",
"president":"seveniruby"
}
}

使用base64对其做加密,得到一个加密后的文件demo64.txt

base64 demo.json >demo64.txt

使用python命令在“demo64.txt”所在目录启动一个服务

python -m http.server 10000

启动后的样子如图:

使用curl命令对这个服务进行get请求

curl http://127.0.0.1:10000/demo64.txt

如果请求成功的话就代表环境已经准备成功

调用base64,直接对返回的请求做解密,即可得到解密后的响应,将解密后的响应转为json格式,此时就可以对这个返回值做断言且不会报错了

import base64
import json
import requests
class TestEncode:url = "http://127.0.0.1:10000/demo64.txt"def test_encode(self):r = requests.get(self.url)encode = json.loads(base64.b64decode(r.content))assert encode["topics"]["president"] == "seveniruby"

这样的写法显然不够优雅,如果被测接口的协议发生变化,requests库无法支持改变后的协议,需要调用别的第三库发送请求信息,则还是需要修改底层的源码。碰到这种情况,可以增加一层封装,构造一层更加通用的发送方法。

首先需要通过一个字典的结构体,保存所有的请求信息,包括发送的协议、解码方式、请求method等等,而这种字典形式的结构体也为后面的数据驱动改造做好了一个重要的铺垫。

   req_data={"schema": "http","method": "get","url": "http://127.0.0.1:10000/demo64.txt",headers": None
}

通过请求信息的结构体中的schema,添加判断条件,去选择不同的请求协议。举个例子,如果schema为“http”的话,就选择调用被封装的requests库。

   class ApiRequest:#构造send方法,通过def send(self, data: dict):if "http" == data["schema"] :res = requests.request(data["method"],data["url"],header=data["headers"])return json.loads(base64.decode(res.content))elif "dubbo" ==  data["schema"]:passelif "websocket" == data["schema"]:passelse:pass    

调用在ApiRequest类中的send方法发送请求并进行断言


http://www.ppmy.cn/news/241585.html

相关文章

回溯算法part4 | ● 93.复原IP地址 ● 78.子集 ● 90.子集II

文章目录 93.复原IP地址思路思路代码官方题解代码困难 78.子集思路思路代码官方题解代码困难 90.子集II思路思路代码困难 今日收获 93.复原IP地址 93.复原IP地址 思路 参考分割字符串问题,是一个类型的问题,startindex表示子串从哪里开始。path记录分…

图漾相机—windows- Python SDK(官网下载编译)

文章目录 一、 安装依赖:二. 下载swig和SDK:swig下载连接:[https://www.swig.org/](https://www.swig.org/)下载python SDK下载 Windows Camport3 SDK 三、配置python和swig环境变量编译前,请先:安装 Python。 安装 Nu…

同步模式之犹豫模式Balking

tip: 作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。 文章目录 一、同步模式之犹豫模式Balking二、代码样例三、优缺点 一、同步模式之犹豫模式Balking 同步模…

Banana Pi BPI-Wifi6路由器采用创耀科技TR6560/TR5220 wifi芯片方案设计,支持PoE网络供电

香蕉派BPI-Wifi6路由器设计采用了创耀科技TR6560 TR5220 wifi无线芯片设计,是一款标准的wifi6路由器解决方案。内置高性能双核ARM Cortec A9处理器,用于WIFI消息转发或智能业务处理,内置高性能LSW和硬件NAT,最大支持5Gbps的报文转…

用国产显卡能跑AI绘画吗?

一、背景 “AI绘画是否会在未来替代画师”是近一段时间内的一个非常火爆的话题。作为国内GPU芯片原厂的天数智芯也关注到了这个应用场景,并很快在天数智芯(Iluvatar)国产通用GPU上做了代码移植,通过智星云算力平台可以让大家真实…

校园综合能效平台建设的意义

摘 要:为响应国家绿色校园建设的号召,切实提高高校能源利用水平,促进学校能源资源合理配置,服务学校高质量发展大局,根据教育部印发的《关于开展节能减排学校行动的通知》《关于勤俭节约办教育建设节约型校园的通知》…

Nginx+Tomcat(多实例)实现动静分离和负载均衡四层、七层(总有些惊奇的际遇,比方说当我遇见你)

文章目录 一、Tomcat 多实例部署二、反向代理的两种类型三、NginxTomcat实现负载均衡和动静分离(七层代理)1.动静分离和负载均衡原理2.实现方法3.部署实例(1)部署Nginx负载均衡服务器(2)配置Tomcat多实例服…

联想计算机连接不上蓝牙耳机,thinkpad如何连接蓝牙耳机_thinkpad连接蓝牙耳机的步骤...

现在的电脑一般都配备有蓝牙功能,可以方便用户们使用一些蓝牙设备。例如最近就有小伙伴问小编thinkpad如何连接蓝牙耳机?那么针对这一问题,今天小编就来为大家整理分享关于thinkpad连接蓝牙耳机的步骤,一起往下看吧。 具体步骤如下…