JMeter脚本录制的原理及如何录制http和https协议的脚本

前言

今天录制脚本,发现点击后系统没反应,以为是项目组的特殊设置,当时并未深究,便直接用浏览器抓包,自己手写脚本。

谁知写完执行时,却出现了奇怪的错误:

明明是一个登录请求,下面却催生出两个子请求来,而且,即便是绿色的这个请求,响应数据也不对。

费了好大劲,最终却发现,这个项目全部都是https请求,而我,习惯性的将协议写成了http。

由此想到,如果第一步脚本录制的时候就停下来研究一下为什么不能录制,或许,还能少走些弯路。有时候,想要偷懒绕开某些困难,绕了一大圈发现,还是要回去面对。

JMeter脚本录制的原理

启用时,JMeter相当于一个HTTP(S)代理服务器(proxy),捕获和记录用户与应用程序交互的网络请求和响应。

当用户通过浏览器与应用程序进行交互时,JMeter代理服务器会拦截并记录这些请求(包括请求的URL、HTTP方法、请求头、请求参数等),然后再将请求发送给目标服务器。这个过程就实现了脚本的录制。

按照官网的说法,它目前支持HTTP和HTTPS协议的请求,其它的,比如FTP协议,它还处理不了。

JMeter脚本录制器设置

在Test Plan上点击右键,选择Add->Non-Test Elements->HTTP(S) Test Script Recorder,即可添加一个脚本录制器:

添加后界面如下:

几个重要的配置项:

1、Port设置

作为代理服务器,JMeter通过该端口号监听HTTP/HTTPS请求。默认是8888,也可以修改成任意其它未被占用的端口号。

2、Target Controller

你希望录制的脚本被保存到哪里。可以创建一个线程组来存放,也可以先保存在脚本录制器中,再有选择地复制到目标线程组中。

3、过滤设置

如下图,添加建议排除项,过滤掉页面元素请求。

为浏览器设置代理

我通常在Windows左下角的搜索框搜索代理服务器设置来打开操作系统的设置面板,如下:

  1. 启用"使用代理服务器";
  2. 地址栏填入127.0.0.1,表示本机;
  3. 端口填入与Jmeter中Port一样的值;
  4. 点击保存。

这一系列设置表示系统将使用127.0.0.1:8888作为代理服务器。也即本机的8888端口,就是JMeter脚本录制器了。

录制HTTP请求

要录制HTTP协议的请求,到这里就可以开始使用了。在JMeter的脚本录制器中点击Start,出现证书提示信息,点击OK即可开始录制了。

如果录制的操作比较多,可以在每一步操作前设置事务名称,这样录制完成后,请求名称前面会出现事务名称作为前缀,帮你区分不同操作所触发的请求。

录制HTTPS请求

如果要录制HTTPS请求,执行时可能目标网站无法响应,这是因为没有识别到受信任的证书。所以我们需要为浏览器添加受信任的根证书。

安装根证书

在脚本录制器中点击start的时候,我们曾看到过这样一个信息:

它告诉我们,在jmeter的bin目录下,生成了JMeter的根证书ApacheJMeterTemporaryRootCA.crt,你可以将它添加到浏览器证书管理中受信任的根证书下面。

注意事项

1、这个证书的有效期是7天。这个时间由配置项proxy.cert.validity控制,如想要修改,可通过修改Jmeter.properties文件中的该配置项实现。

2、只有在JDK1.8以上时才会自动生成这个根证书。如果JDK版本较低,需要有一些手动配置,可参考官网Apache JMeter - User's Manual: Component Reference

不同浏览器安装方式略有不同,官网有详细的操作步骤。我用Chrome,步骤如下:

浏览器设置->隐私与安全-->安全-->管理证书-->受信任的根证书颁发机构-->导入, 选择证书导入,然后重启浏览器。

然后按照正常的步骤启动录制即可。

相关推荐
sszmvb123412 小时前
测试开发 | 电商业务性能测试: Jmeter 参数化功能实现注册登录的数据驱动
jmeter·面试·职场和发展
小码哥说测试14 小时前
接口测试用例设计的关键步骤与技巧解析!
自动化测试·测试工具·jmeter·职场和发展·测试用例·接口测试·postman
小钱c717 小时前
Mac下安装Apache JMeter并启动
jmeter·macos·apache
古人诚不我欺20 小时前
jmeter常用配置元件介绍总结之函数助手
jmeter
川石课堂软件测试20 小时前
性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
运维·javascript·深度学习·jmeter·docker·容器·grafana
古人诚不我欺20 小时前
jmeter常用配置元件介绍总结之取样器
jmeter
十叶知秋20 小时前
【jmeter】jmeter的线程组功能的详细介绍
数据库·jmeter·性能测试
我非夏日20 小时前
JMeter基础篇
jmeter
茶馆大橘1 天前
微服务系列五:避免雪崩问题的限流、隔离、熔断措施
java·jmeter·spring cloud·微服务·云原生·架构·sentinel
土小帽软件测试1 天前
jmeter基础01-2_环境准备-Mac系统安装jdk
java·测试工具·jmeter·macos·软件测试学习