/catalog/a378c380ea1a4d7ea1ab221eab175270//Document/247927494942789.html/Document/247564617822277.html/Document/247199260360773.html/Document/245767172173893.html/Document/245095710138437.html/Document/244746156650565.html

没有接口文档如何进行接口测试?(上)

接下来的系列文章将为大家介绍一种方法,帮助没有接口文档的团队快速开展接口测试。

 

基于 mitmproxy生成用例 。 我们以一个小项目为例,http://123.56.99.53:9001/login/。这是一个查看地产报表的一个小系统,这里面有很多的业务操作,有各种表格,各种展示。很多链接也都能点进去,我们发现里面其实蕴涵着很多HTTP的接口,每一个操作都和服务端有交互,和服务端有交互,有交互就肯定有接口。

这个项目是没有任何文档给我们的,通过这个项目可以教会大家一些HTTP协议的基础,去里面找到底涉及到哪些接口。这个项目上除了一些加载图片的没有意义的接口以外,有意义的接口大约有11-12个左右,没有文档我们怎么做呢?录制。



很多朋友会说,不就是抓包吗,这个我会,但是抓包是有缺点的,抓包缺点在哪呢?

第一个,抓包以后,还是很难整理。有人可能会说,我用Fiddler、Charles。

抓包之后,怎么把它整理成有效的文档呢?很多人说我不用整理成文档,我就看一下就行了。这样在写用例的时候,还是要一边切换一边去看,很不方便。

那我们怎么整理呢?有的朋友说我会,Fiddler可以导出hal文件,这个HAL包是可以再导出来的。但是导出HAL包以后,很难转成你好读的数据结构,

我们是否可以直接把它转成Excel?如果我们直接转成Excel之后,我们把里面的数据稍作修改,马上就能再测一遍,那就更好了。


我们一起来看一下,一个自研发的小工具,大概代码行也就200行左右。


还是上面那个项目地址,我们现在进入到控制台里面,桌面上有一个小工具叫 fill demo,然后我们启动里面一个叫cli的客户端的小工具,里面给它一个record小命令,启动8888,咱们抓过包的朋友都知道8888是fiddler的固定端口,它就开始录制了。

image.png

这个时候我们把浏览器打开,访问项目链接。登录之后,开始抓包。都点完之后,我们把页面关掉。

停止录制以后,我们看一下,在我们的桌面上已经录制好了一个csv文件,已经把我们点的所有操作都已经录下来了,地址、请求类型、请求信息、头信息......我们点的时候的所有的参数都已经录制下来了,一个接口被录制成了一行。

这个小工具还对地址进行了筛选,录制的都是我们访问的项目域名下面的某些地址,所以我们录制的都是跟我们的业务相关的接口。里面的参数我们直接改就行。

image.png

我们这个小工具还可以测试刚才录制的这个csv,输入命令test recorder202105_204039.csv,直接用python的代码把这些接口就直接测完了。

image.png

检查了接口的的响应状态、响应时间等里面一些写死的检查点,这些东西都是可以配置的。

image.png

同时还输出了一份测试报告,报告显示18个接口全部成功,其实还有其他的一些访问图片、静态资源的接口。

image.png

这18个接口测的都是什么呢?下面还有用例详情,每一个接口的详细信息都有,请求的详细信息、请求的响应的详细信息都可以点开查看。

image.png

这样就很快。有很多朋友说我是一个小团队,我连文档都没有,用这个进行录制,在页面上点点点,全部的接口就都录下来了,一个你可以进行入库整理,第二个可以直接在这个工具上进行回放。
第三个功能,如果这个接口我想这样测,我想每隔5秒钟就测一次,我们可以开启一个监控的功能,每隔5秒钟就跑一次。

image.png

我们可以看到它在5000的端口有一个小服务,我们也可以点开查看一下。

image.png

他每隔5秒就把刚才所有接口的测试用例跑一次,页面是不停地刷新的。这是一个Monitor(监控),不借助任何工具,这个是Postman和Jmeter都没有的。 我们可以看到接口的响应时间走势图,我们也可以单独看某一个接口的详细信息,如果你不停它会一直这样监控下去,

image.png

最后我们通过end monitor把它停掉,这些测试的数据都被保存在了项目的一个后台小数据库里,是可以导出来的。

image.png

这个项目是用Python写的,这是我们用很简短的的时间开发的一个200行代码的小工具,接下来的文章会给大家具体介绍一下,这个小工具是怎么实现的。