一、录制脚本的基本概念
Jmeter是一款免费、开源的性能测试工具,可用于测试静态或动态资源的请求,包括静态文件、动态页面、Web服务、FTP服务等。其中录制脚本是Jmeter的重要特性之一。
Jmeter的录制脚本是将HTTP请求转换为Jmeter测试脚本的一种方式,它可以记录用户与Web应用程序之间交互的HTTP请求和响应,以便实现在后续测试中模拟这些请求和响应。录制脚本包括3部分:HTTP代理服务器、浏览器和Web应用程序。
具体来说,HTTP代理服务器收集和转发浏览器通过Jmeter进行的HTTP请求。Jmeter使用代理服务器截获HTTP请求,浏览器从代理服务器接收响应,然后Jmeter通过代理服务器记录HTTP请求和响应,从而生成测试脚本。
二、录制脚本的使用方法
使用Jmeter录制脚本的步骤如下:
1. 配置HTTP代理服务器
在Jmeter的“Workbench”下找到“HTTP(S)代理服务器”,右键选择“添加”并设置端口号和Target Controller。Target Controller可以设置成根节点或者是任意一个现有节点下面的子节点。配置完成后,在“Test Plan”中保存HTTP代理服务器的设置。
<HTTPProxyControl> <stringProp name="port">8080</stringProp> <stringProp name="domain"></stringProp> <stringProp name="target">/</stringProp> <boolProp name="captureHttpHeaders">true</boolProp> <boolProp name="addAssertions">false</boolProp> <boolProp name="useRegexForSamplerName">false</boolProp> <boolProp name="responseBasedActionNaming">false</boolProp> <boolProp name="assumeHttpVersion">true</boolProp> <boolProp name="embeddedUrlRE"></boolProp> <boolProp name="includeScope">false</boolProp> <elementProp name="agreements"> <collectionProp> <stringProp name="-1">on</stringProp> <stringProp name="-241414560">on</stringProp> </collectionProp> </elementProp> <elementProp name="exclude_list"> <stringProp name="-1"></stringProp> </elementProp> <stringProp name="filename"></stringProp> <boolProp name="auto_redirects">true</boolProp> <boolProp name="follow_redirects">true</boolProp> <stringProp name="proxyChain"></stringProp> </HTTPProxyControl>
2. 配置浏览器
在浏览器中设置代理服务器。这里以Chrome为例,进入“设置”-“高级”-“系统”-“打开代理设置”,在“代理服务器”中输入“localhost:8080”,保存后关闭设置。
注:在配置完成后,要确保代理服务器已启动,可通过Jmeter工具中的“Start”按钮来开启,或者通过命令行“jmeter -n -t /path/to/script.jmx”来启动。
3. 录制脚本
打开浏览器,访问需要测试的Web应用程序。Jmeter将记录所有的HTTP请求和响应。在录制测试期间,请注意避免浏览其它网站,因为这些请求也会被记录下来,与当前所需的脚本无关。
4. 查看并编辑脚本
打开Jmeter的“Recording Controller”,可看到已经录制到的请求和相关信息。可以对请求进行编辑,例如添加断言、修改请求头等。编辑完成后,可保存测试脚本,以备后续使用。
<RecordingController guiclass="RecordController" testclass="RecordingController" testname="Test" enabled="true"> <boolProp name="gui.recording&controller.disabled">false</boolProp> <stringProp name="TestPlan.comments"></stringProp> <boolProp name="TestPlan.functional_mode">false</boolProp> <boolProp name="TestPlan.serialize_threadgroups">false</boolProp> <elementProp name="HTTPsampler.HTTPsampler-Proxy" elementType="HTTPSamplerProxy" guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" enabled="true"> <boolProp name="HTTPSampler.postBodyRaw">false</boolProp> <elementProp name="HTTPArgument.paramstyle" elementType="HTTPArgument"></elementProp> <elementProp name="HTTPSampler.method"> <stringProp name="HTTPSampler.method">POST</stringProp> </elementProp> <elementProp name="HTTPSampler.follow_redirects">true</elementProp> <elementProp name="HTTPSampler.auto_redirects">false</elementProp> <elementProp name="HTTPSampler.use_keepalive">true</elementProp> <elementProp name="HTTPSampler.DO_MULTIPART_POST">false</elementProp> <elementProp name="HTTPSampler.monitor">false</elementProp> <elementProp name="HTTPSampler.embedded_url_re"></elementProp> <elementProp name="HTTPSampler.ignore_failed_embedded_resources">false</elementProp> <elementProp name="HTTPSampler.useMultipartForPost">false</elementProp> <elementProp name="HTTPSampler.connect_timeout"></elementProp> <elementProp name="HTTPSampler.response_timeout"></elementProp> <elementProp name="HTTPSampler.protocol"> <stringProp name="http.protocol.version">HTTP/1.1</stringProp> </elementProp> <>... </elementProp> </RecordingController>
三、录制脚本的注意事项
在使用Jmeter录制脚本时,需要注意以下事项:
1. 避免浏览其它网站
在录制测试期间,要避免在浏览器中访问其它网站。因为这些请求也会被记录下来,与当前所需的脚本无关。
2. 检查测试脚本的正确性
录制测试脚本后,要对其进行检查,确保没有错误和缺陷。可以使用Jmeter内置的调试工具,查看脚本中每个请求和响应之间的关系是否正确。
3. 添加断言和验证器
测试脚本中加入断言和验证器,可用于检查是否所有请求和响应都正确,包括HTTP代码、响应时间、响应内容等。这是测试脚本的基本要求,以便达到准确测试的目的。
4. 尽量避免不必要的处理
Jmeter的录制脚本会记录所有的HTTP请求和响应,包括一些不必要的请求,例如广告请求、跟踪请求等。这些请求需要在后续的编辑中删除,以避免影响测试结果。
5. 适时保存测试脚本
在录制过程中适时保存测试脚本,避免遗失重要的测试数据。同时也避免了在一次录制中测试脚本过于臃肿,难以管理的问题。
四、总结
本文详细介绍了使用Jmeter录制脚本的基本概念、使用方法以及注意事项。通过录制脚本,可以快速生成测试用例并进行性能测试。同时也需要注意脚本的准确性和可读性,在后续的测试中可以快速定位问题和改进。