JMeter在内网环境下获取HTTP接口结构与脚本组装介绍

发表于:2020-5-25 10:41

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:杨易寰    来源:51Testing软件测试网原创

    在开展针对HTTP协议接口测试过程中,核心是需要根据接口结构进行脚本设计。在明确接口结构且参数简单的情况下,用户可以直接在协议元件中进行数据拼装。但很多时候面对复杂系统的测试需求,执行中包含多个请求并且各个请求接口的结构信息不够完全了解,因此获取请求接口结构环节成为十分重要的步骤,一般称为报文录制。
  JMeter在HTTP协议下有很多获取报文结构的方法,包括使用自带录制元件、使用抓包工具查找等,如果公司具备外网办公条件,可直接使用BlazeMeter公司提供的Chrome插件进行浏览器内的录制和导出JMX文件,更加方便快捷。但一些企业内网办公环境下由于不具备联网条件,因此本文整理介绍几种内网常用的使用方式供大家参考。
  一、已知接口结构手动组装脚本
  最直接的方法就是根据已知的接口结构直接组装测试脚本。一般已知接口结构中包含接口地址、类型、参数等信息,因此直接在HTTP请求的Sampler进行填写,并且根据接口结构要求增加相应的Header报文头,下面简单介绍步骤。
  配置HTTP请求取样器。HTTP请求取样器是支持HTTP协议交互的主要组件。
  添加Http协议的取样器
  HTTP请求取样器的界面展示
  下面对一般测试中常用的取样器配置参数进行简要说明和介绍:
  1、协议:不写就默认http
  2、服务器名称或IP:请直接填IP地址或域名(不带http://)
  3、端口号:不写就默认80
  4、自动重定向/跟随重定向(默认):当responseCode为3XX,将会进行跳转,这两个选项中自动重定向将会切换到跳转页面中,而跟随重定会记录重定向过程中的所有请求。下面以同一个请求为例,通过结果数查看请求结果   
               
  跟随重定向(额外包含2次跳转请求记录)   自动重定向(仅保留最终请求记录)
  5、方法:一般为GET或POST
  6、路径:具体的接口路径
  7、内容编码:可根据实际需要进行UTF-8或ANSI等编码设置
  8、参数:一般配置为key-value类型的参数,GET将变量设置到PATH中,POST将放置到POST参数域(请注意一般POST上送通过报文请求body域传值)
   
  举例GET请求配置参数paratest
举例POST请求配置参数paratest
  消息体数据:报文请求的请求体(一般为json格式)
  举例POST请求配置字符串报文体
  
  例POST请求配置字符串报文体
  配置HTTP信息头管理器。若有对信息头进行修改的需要,例如设置session、设置header变量、或设置请求格式,可以通过添加HTTP信息头管理器来实现
  添加配置元件
  设置报文头信息
  报文头修改后请求结果
  二、善用Chrome开发者工具查看接口结构
  在没有接口文档或不了解接口信息的情况下,若目标系统页面支持Chrome浏览器,用户还可以通过Chrome自带的开发者模式来快速手动查找目标接口并查看接口的具体信息。
  Chrome中开发者模式的启动快捷键为F12。打开后点击Network标签切换至请求监控界面,准备就绪后,在当前界面中点击触发请求,即可在Network标签页中看到当下所有请求的request和response信息,捕获接口时可以点击XHR进行具体的HTTP请求筛选。
  Chrome开发者模式查看请求详情
  点击请求后,右侧可以查看本请求的请求头、请求和接受内容,根据这些内容可以辅助我们手动组装测试脚本。
  三、利用Fiddler抓包工具捕获接口请求
  Fillder是免费的HTTP协议抓包和调试工具。启动Fiddler在左侧的监控栏可看到捕捉到的所有HTTP请求内容,用户可以手动查找或设置条件进行对请求的筛选。
  Fiddler运行界面
  双击请求或在右侧详情页中的Inspectors查看请求参数信息。
  查看参数信息
  定位到目标接口后,同样是根据显示的接口结构辅助我们去测试元件中进行数据填写。不过Fiddler还有一个更快捷的方法自动生成JMeter测试脚本,就是配置网友扩展制作的JMeter脚本导出插件,可实现将请求自动化转为JMX测试脚本,插件的下载和配置方法请读者自行查询,这里不多做介绍。插件配置好后启动Fiddler,用户在请求被选中的状态下点击左上角的File->Export Sessions按需求导出。
  插件导出
  生成完毕后,启动JMeter并加载生成好的测试脚本,可以看到Fiddler插件已经将每一个请求都进行了配置,此时再可根据实际情况进行接口内容微调即可正常使用。
  生成好的测试脚本
  四、利用JMeter原生录制组件进行报文录制
  JMeter本身自带代理录制组件,但需要在使用前进行系统网络代理配置。在启动组件之前,需提前手动进行IE的代理设置调整,将代理端口设置为JMeter组件中的监听端口,随后在浏览器中正常打开目标页面或目标接口path,最后便可在录制组件下查看到所有请求的具体记录。
  类似的全局录制和导出唯一的缺点是需要在录制好的众多http接口中进行进一步的筛选和识别,剔除不必要请求、保留目标接口。此外本方法还有一个不足之处是每次使用前需进行系统网络代理配置,使用完成后需及时进行关闭,否则可能影响其他应用的网络服务。
  配置代理录制元件。HTTP Test Script Recorder(HTTP代理服务器)需要在测试计划这一级进行添加,主要功能是完成整个代理工作的全流程,当用户配置好本机网络代理端口后,所有HTTP请求都会从JMeter上的本插件经过。
  添加录制代理组件
  HTTP Test Script Recorder界面展示
  TestPlanCreation标签页中可以对捕获好的请求进行脚本位置设定。比如将捕获到的众多请求放置到当前HTTP Test Script Recorder录制组件,或放到新建Recording Controller(录制控制器)下,或者直接放在某线程组下。请注意这里的设置位置,并非要求必须放在Recording Controller下,仅仅是用于存放代理录制的所有请求内容,但从脚本可读性、请求数量多少等方面用户可以权衡放在不同的组件之下,从而便于自己进行下一步的脚本设计。
  设置捕获请求在脚本中的位置


       版权声明:本文出自51Testing会员投稿,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
  
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号