构造客户端请求的第100种办法

背景

最近在做一个服务的测试,由于这个服务对安全性要求非常高,所以使用了一套非常复杂的加密逻辑,以至于即使知道如何加密的,想要用其它语言写出来也非常麻烦;测试需求是完成例行的接口测试case,和服务稳定性测试,尝试用python构造请求,发现成本太高,于是尝试了这个偷懒的办法;

思路
  • 1、根本目的是构造客户端请求,所以从客户端入手,客户端一定会将正确的请求发到服务器上;

  • 2、在测试服务端之前搭一台nginx服务,nginx将所有满足条件的请求均转发到测试服务器;

  • 3、客户端配置host将请求发到配置的nginx服务器上;

  • 4、nginx服务器把客户端请求的url、请求body都记录到log中;

  • 5、使用客户端做冒烟用例的操作,让客户端发送各种需要的请求;

  • 6、这时,nginx服务器上已经把各种需要的请求都记录到了log中,例如下图;

  • 构造客户端请求的第100种办法

    怎么做

    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发了;

    转换脚本

    构造客户端请求的第100种办法

    构造客户端请求的第100种办法

    这样,就不需要自己重新写复杂的加密逻辑就可以构造一些简单的case来完成自动化接口测试了;

    适用需求

    1、编写接口自动化回归测试用例时构造请求 

    2、结合客户端自动化,收集大量请求数据,用来做压测和稳定性测试;

    缺点

    这样做有一些缺点,比如:没办法构造异常情况;没办法自定义请求中的某些参数等;

    结尾

    对于构造客户端请求,你有什么更nb的办法没?可以留言分享一下,让我们看看你的脑洞~