背景
最近在做一个服务的测试,由于这个服务对安全性要求非常高,所以使用了一套非常复杂的加密逻辑,以至于即使知道如何加密的,想要用其它语言写出来也非常麻烦;测试需求是完成例行的接口测试case,和服务稳定性测试,尝试用python构造请求,发现成本太高,于是尝试了这个偷懒的办法;
思路
●1、根本目的是构造客户端请求,所以从客户端入手,客户端一定会将正确的请求发到服务器上;
●2、在测试服务端之前搭一台nginx服务,nginx将所有满足条件的请求均转发到测试服务器;
●3、客户端配置host将请求发到配置的nginx服务器上;
●4、nginx服务器把客户端请求的url、请求body都记录到log中;
●5、使用客户端做冒烟用例的操作,让客户端发送各种需要的请求;
●6、这时,nginx服务器上已经把各种需要的请求都记录到了log中,例如下图;
怎么做
1、配置nginx服务器及转发就不多说了,sogo一下吧;
2、这里要强调的是,nginx默认log好像是没有请求body,需要在log的定义里加上$request_body;
3、拿到的postbody之后是这种格式的"0\x00\x07\x00\x00\x01\x00\x01\x06giugai\x1E\x008"
4、这个是nginx把请求body转成文本之后的样子,这个东西是不能直接用的,试验了一下,写了个脚本把这种东西转换一下就可以作为postbody发了;
转换脚本
这样,就不需要自己重新写复杂的加密逻辑就可以构造一些简单的case来完成自动化接口测试了;
适用需求
1、编写接口自动化回归测试用例时构造请求
2、结合客户端自动化,收集大量请求数据,用来做压测和稳定性测试;
缺点
这样做有一些缺点,比如:没办法构造异常情况;没办法自定义请求中的某些参数等;
结尾
对于构造客户端请求,你有什么更nb的办法没?可以留言分享一下,让我们看看你的脑洞~