从 JMeter 2.10 开始, 录制功能已得到改进, 可以更好地处理嵌入式资源并动态创建证书. JMeter 使用 keytool 程序 (在 JRE / JDK 中可用) 来支持这些功能, 因此您需要确保配置正确. 在启动 Jmeter 之前, 请查看并确认以下问题:
问题 1: 启动 Recorder 时出现问题, 如下所示:
- ERROR - jmeter.protocol.http.proxy.ProxyControl: Could not initialise key store
- java.io.IOException: Cannot run program "keytool" (in directory "C:\apache-jmeter-2.10\bin"):
- CreateProcess error=2, The system cannot find the file specified
原因: 这意味着在 PATH 上找不到 "keytool" 应用程序.
解决: 确保 PATH 包含正确的 Java 安装的 bin 目录. 如果在安装 Java 时未正确设置环境变量, 则可能需要更新启动 JMeter 的脚本.
例如, 将以下内容添加到 jmeter.bat(Windows)
- set JAVA_HOME=<path to JDK>
- rem for example
- set JAVA_HOME=C:\jdk1.7.0_45
- set PATH=%JAVA_HOME%\bin;%PATH%
类似地, 对于 Unix, 更新脚本 "jmeter" 或 "jmeter.sh":
- JAVA_HOME=<PATH TO JDK> # for example JAVA_HOME=/usr/java170
- export JAVA_HOME
- PATH=$JAVA_HOME/bin:$PATH
- export PATH
注意: 如果安装了新版本的 Java, 几乎可以肯定 java 路径一定变了, 因此一定不要忘记修改环境变量.
问题 2: 如下所示
- Could not create script recording proxy - see log for details:
- Command :'"C:\Program Files\Java\jre7\bin\keytool" -genkeypair -alias :root_ca: -dname "CN=_ DO NOT INSTALL unless this is your certificate (JMeter root CA),
- OU=Username: user, C=US"-keyalg RSA -keystore proxyserver.jks -storepass {redacted) -keypass {redacted) -validity 7 -ext bc:c' failed, code: 1
- keytool error: java.io.FileNotFoundException: proxyserver.jks (Access is denied)
原因: JMeter bin 目录不可写, 因为 JMeter 默认在 bin 目录中创建密钥库.
解决: 在 jmeter.properties 中定义属性告诉 JMeter 在哪里创建密钥库. 如下所示
proxy.cert.directory=<JMeter bin directory>
参考: https://wiki.apache.org/jmeter/TestRecording210
二 基本步骤
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}和 ${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 代理服务器, 结束录制.
注意: 开始录制时, Jmeter 可能会弹出输入 KeyStore Password 密码提示, 默认密码是 password, 输入后就能录制了.
9. 在 Jmeter 中, 根据实际情况, 配置线程属性, 添加 CSV 数据文件设置,. 添加集合点, 添加动态关联, 添加监听器等.
注意: 为了进行关联, 我们可以使用正则表达式提取器, JSON Extractor 等后置处理器从请求中获取数据, 并将其注入另一个请求中. 要查找要关联的数据, 最简单的方法是使用 "查看结果树" 中的 "搜索" 功能.
10. 在运行测试计划之前验证脚本 (右键单击 Thread Group--> 点击 Validate-->查看 View Results Tree 是否运行正常), 保存测试计划(千万千万别忘记保存测试计划哟).
来源: http://www.bubuko.com/infodetail-3062408.html