Jmeter录制https请求
1.进入JMETER_HOME / bin目录,点击jmeter.bat启动Jmeter。
2.在菜单栏上选择模板,在列表中选择录制模板,生成完整的测试计划。
3.在HTTP Request Defaults中输入,协议:https,服务器名称或IP:test.com,端口号:443,路径:留着空白。
这样做可以过滤掉很多不必要的请求。
4.在User Defined Variables中定义以后可能需要参数化的变量,比如username=xiaoming,password=123456。
这样做的好处是,接下来当你开始录制请求时,所有的请求中只要包含参数值为xiaoming和123456,均会被username和username和{password}代替,方便录制结束后进行参数化。
5.在HTTP(S) Test Script Recorder中,点击“启动”按钮。这将启动JMeter代理服务器,用于拦截浏览器请求。并首先将在JMETER_HOME / bin文件夹中生成名为ApacheJMeterTemporaryRootCA.crt的文件。证书生成可能需要一段时间,在此期间GUI将无响应。证书生成完成后,GUI将显示一个弹出对话框,其中包含根CA的证书详细信息。该证书需要由浏览器安装,以便它接受JMeter生成的主机证书。注意:该证书有效期7天。
6.浏览器导入证书并设置代理。
打开Firefox浏览器-->打开应用菜单-->设置-->搜索“证书”-->查看证书-->在证书颁发机构一栏,点击“导入”-->选择Jmeter/bin目录下的ApacheJMeterTemporaryRootCA.crt文件,点击“打开”-->勾选“信任由此证书颁发机构来标识网站”,点击“确定”-->回到证书管理器,在证书颁发机构一栏,可看到此证书存在于列表中,点击“确定”,证书导入完成。
接着,搜索“代理”-->点击“设置”-->选择“手动代理配置”,http代理输入localhost,端口输入8888(与Jmeter代理服务器端口一致),勾选“为所有协议使用相同代理服务器”,点击“确定”,代理设置完成。
注意:测试完成之后记得要把代理设置修改回来,否则会无法上网。
7.Jmeter设置SSL。回到Jmeter-->点击“ok”,证书弹窗消失-->点击“选项”-->点击“SSL管理器”-->选择Jmeter/bin目录下的ApacheJMeterTemporaryRootCA.crt文件,点击“打开”
8.录制请求。回到浏览器界面,在在顶部的地址栏中输入http://test.com/index.html(将test.com替换为您的网站地址)。并按Enter键。进行登录-修改信息(初始化-编辑-保存)-退出等一系列场景操作,完成之后,关闭Jmeter代理服务器,结束录制。
9.在Jmeter中,根据实际情况,配置线程属性,添加CSV数据文件设置,.添加集合点,添加动态关联,添加监听器等。
注意:为了进行关联,我们可以使用正则表达式提取器,JSON Extractor等后置处理器从请求中获取数据,并将其注入另一个请求中。要查找要关联的数据,最简单的方法是使用“查看结果树”中的“搜索”功能。
10.在运行测试计划之前验证脚本(右键单击Thread Group-->点击
11.开始运行测试。建议调试阶段使用GUI,使用非GUI(命令行)进行负载测试。使用以下命令,在测试结束时,将生成一个HTML报告。
实践总结:
1.录制后,可能由于误操作会出现很多多余的请求,必须自己手动删除。
2.录制后的请求很乱,不易于理解。可以手动将请求改名,并添加多个事务控制器,将关联的请求添加到同一个事务控制器中,这样既有利于区分场景,又便于理解。
3.本次测试中,开发给我的网址是一个IP地址,录制时总是报如下错误:
解决方法:在本机上,手动将IP地址映射为域名。比如在C:\Windows\System32\drivers\etc\hosts文件中加入:192.168.11.11 test.com,此时就可以在浏览器中输入test.com来访问开发所给的网址了,而且还不会报错。
4.每次开始录制时,Jmeter弹出输入KeyStore Password密码提示,默认密码是password,输入后总是报如下错误:
多试几次password 就可以了
5.Jmeter录制后,每个请求会带有一些参数,其中很多参数都是取自前一个请求的服务器返回结果,此时你就需要手动将其进行关联。
6.负载测试时,最好使用命令行运行,小负载测试时,可以使用GUI界面运行,此时一定要把查看结果树、图形结果、断言结果等监听器全部关掉(只保留一个聚合报告即可,配置将结果输出到jtl文件中),因为它们真的非常影响性能。
7.当使用外网进行测试时,受网速的影响,白天和夜晚的测试结果差距很大。
8.此次测试我使用Jmeter,同事使用LR,对比发现结果相差很大。查找发现,主要原因时我们俩虽然都是用的一个无线网,但是同事的网没有限速,网速非常快,而我的网却限速了,网速很慢。另外,我俩的PC配置也不一样。后来我们就在同一台机器上运行测试了,发现结果相差不大。
9.可以将登录场景放在setup线程组(类似LR的init)中,退出场景放在teardown线程组(类似LR的end)中。