(广州华南商贸职业学院,广东 广州 510000)
在通常的产品测试过程中,一般都会采用功能测试方法去发现bug,为什么要做接口测试呢?现今的软件产品架构不断复杂化,传统的功能测试已经难以满足系统发展的需求。根据历史数据模型推算,底层1个bug大约会引起上层8个bug,而底层的bug很容易引起全网宕机,可见接口测试的重要性。接口测试还可以自动化,相对于功能测试是一种低成本且高效的测试方法[1]。如果测试人员没有代码基础,无法进行测试脚本的编写、运行、维护,也可以使用接口测试工具进行接口测试。掌握接口测试工具的使用方法,对于接口测试工来说是很重要的。比如进行Web前端操作时,使用抓包工具抓取实际的请求数据。
软件接口一般是指HTTP网络协议接口,目前有很多HTTP接口模拟工具,其原理是将用户填写的请求数据按照协议的要求组装成请求报文发送给服务器,然后接收服务器的响应数据并进行解析和展示。Fiddler是一款典型的桌面抓包工具,其功能非常强大,既可以应用于Web浏览器客户端,又可以应用于移动端的手机应用APP[2-3]。用户可以在Fiddler的官网下载该软件(http://www.telerik.com/fiddler);安装时需要下载证书才能抓到https请求的数据包。配置Fiddler捕获https会话如图1所示。
在Fiddler工作界面图(见图2)中,(1)URL列指被请求的特定页面或者端点(如果使用了隧道的话是指根URL)。但是很多后端服务会使用看起来不熟悉的URL,比如,docs.live.net:443实际上是微软OneDrive。(2)进程(Process)列是指哪个应用发出给定的请求。例如Explorer这个进程,它指的是Windows Explorer(而不是IE)。Windows Explorer基本上就是Windows自己,其流量往往是Windows刷新live title的数据引起的。(3)协议列是指软件接口的网络协议,常见的协议有Http,https两种。(4)状态码列指接口响应状态的代码,200代表成功;400代表失败;500代表服务器端的问题。
图1 配置Fiddler捕获https会话
一般在使用Fiddler工具进行录制Web应用操作前需设置过滤条件,如设置过滤域名,设置过滤css、js、图片等静态素材,过滤不成功的状态码,减少捕获无用的会话。
首先需要下载1个dll扩展文件:JmeterExport.dll(这个文件是为了扩展Fiddler的导出功能,支持导出JMeter使用的.jmx格式文件)[4],拷贝至FiddlerImportExport目录。
(1)打开Chrome浏览器,录制操作:先打开百度首页www.baidu.com,然后进行一次搜索,如搜索javascript,可以看到Fiddler经过过滤之后,只抓取了对Hosts:baidu.com的操作。
(2)对于请求,可以添加相关注释:选中Http请求→右键选中并点击Comment,找到访问首页及搜索的Http请求,分别添加注释。
(3)在Fiddler中删除非必需的Http请求,只保留访问百度首页及搜索的请求:右键选择Remove→Selected Sessions。
图2 Fiddler工作界面
(1)在Fiddler中选择File→Export Sessions→All Sessions。
(2)选择导出类型为JMeter,点击Next按钮保存即可。
(1)运行Jmeter,打开刚才保存的jmx文件,可以看到这里只有两个Http请求,分别是打开百度首页及搜索。
(2)新建线程组(点击测试计划,右键选择Threads(users)→线程组),并将这两个Ht t p请求拖到线程组下。
(3)添加查看结果树及概要报告Summary Report:点击线程组,右键选择添加→监听器→查看结果树/Summary Report。
(4)在JMeter中启动测试即可。
通过Fiddler抓包,单一接口可以复制到jmeter中进行接口测试;如果抓包获取了大量的接口,通过安装插件JmeterExport可以支持导出Jmeter文件,快速实现接口转换成jmx文件。Fiddler还支持设置过滤条件,极大地提高了jmx文件的利用率。