首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我无法在Jmeter中录制脚本,脚本未生成

在JMeter中无法录制脚本并生成脚本文件,可能是由于多种原因造成的。以下是一些基础概念、问题原因以及解决方案:

基础概念

JMeter是一款开源的负载测试工具,主要用于对各种服务进行性能测试。录制脚本是指通过JMeter的代理服务器记录用户在浏览器上的操作,自动生成测试脚本的过程。

可能的原因

  1. 代理服务器配置错误:JMeter的代理服务器未正确配置,导致无法捕获浏览器请求。
  2. 端口冲突:JMeter使用的端口可能被其他应用程序占用。
  3. 浏览器设置问题:浏览器的代理设置不正确,或者浏览器不支持JMeter的代理插件。
  4. 网络问题:网络连接不稳定或存在防火墙限制。
  5. JMeter版本问题:使用的JMeter版本存在bug或不兼容问题。

解决方案

  1. 检查代理服务器配置
    • 确保在JMeter中正确配置了代理服务器。通常需要在“HTTP(S) Test Script Recorder”中设置端口,并确保该端口未被占用。
    • 确保在JMeter中正确配置了代理服务器。通常需要在“HTTP(S) Test Script Recorder”中设置端口,并确保该端口未被占用。
  • 检查端口冲突
    • 使用命令行工具(如netstatlsof)检查端口是否被占用。
    • 使用命令行工具(如netstatlsof)检查端口是否被占用。
  • 配置浏览器代理
    • 确保浏览器正确配置了JMeter的代理设置。例如,在Chrome中可以通过以下步骤设置:
    • 确保浏览器正确配置了JMeter的代理设置。例如,在Chrome中可以通过以下步骤设置:
  • 检查网络连接
    • 确保网络连接稳定,并检查是否有防火墙限制JMeter的代理端口。
  • 更新JMeter版本
    • 如果使用的是较旧的JMeter版本,尝试更新到最新版本,可能已经修复了相关bug。

示例代码

以下是一个简单的JMeter代理服务器配置示例:

代码语言:txt
复制
<jmeter>
  <testPlan version="1.2" properties="5.0" jmeter="5.4.1">
    <hashTree>
      <TestPlan enabled="true">
        <stringProp name="TestPlan.comments"></stringProp>
        <boolProp name="TestPlan.functional_mode">false</boolProp>
        <boolProp name="TestPlan.tearDown_on_shutdown">true</boolProp>
        <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
        <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
          <collectionProp name="Arguments.arguments"/>
        </elementProp>
        <stringProp name="TestPlan.user_define_classpath"></stringProp>
      </TestPlan>
      <hashTree>
        <ThreadGroup enabled="true">
          <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
          <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
            <boolProp name="LoopController.continue_forever">false</boolProp>
            <stringProp name="LoopController.loops">1</stringProp>
          </elementProp>
          <stringProp name="ThreadGroup.num_threads">1</stringProp>
          <stringProp name="ThreadGroup.ramp_time">1</stringProp>
          <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
          <elementProp name="ThreadGroup.sub_thread_group" elementType="ThreadGroup" guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="HTTP(S) Test Script Recorder" enabled="true">
            <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
            <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
              <boolProp name="LoopController.continue_forever">true</boolProp>
              <stringProp name="LoopController.loops">-1</stringProp>
            </elementProp>
            <stringProp name="ThreadGroup.num_threads">1</stringProp>
            <stringProp name="ThreadGroup.ramp_time">1</stringProp>
            <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
            <elementProp name="ThreadGroup.configuration" elementType="HTTP(S) Test Script Recorder" guiclass="HttpTestScriptRecorderGui" testclass="HTTP(S) Test Script Recorder" testname="HTTP(S) Test Script Recorder" enabled="true">
              <boolProp name="HTTP(S) Test Script Recorder.proxy.start">true</boolProp>
              <stringProp name="HTTP(S) Test Script Recorder.proxy.host">localhost</stringProp>
              <stringProp name="HTTP(S) Test Script Recorder.proxy.port">8888</stringProp>
              <boolProp name="HTTP(S) Test Script Recorder.ignore_subdomains">false</boolProp>
              <stringProp name="HTTP(S) Test Script Recorder.include_pattern"></stringProp>
              <stringProp name="HTTP(S) Test Script Recorder.exclude_pattern"></stringProp>
              <boolProp name="HTTP(S) Test Script Recorder.use_keepalive">true</boolProp>
              <boolProp name="HTTP(S) Test Script Recorder.rewrite">false</boolProp>
              <boolProp name="HTTP(S) Test Script Recorder.autorecover">true</boolProp>
              <stringProp name="HTTP(S) Test Script Recorder.default_encoding"></stringProp>
              <boolProp name="HTTP(S) Test Script Recorder.use_https">true</boolProp>
              <boolProp name="HTTP(S) Test Script Recorder.keystore">false</boolProp>
              <stringProp name="HTTP(S) Test Script Recorder.keystore_path"></stringProp>
              <stringProp name="HTTP(S) Test Script Recorder.keystore_password"></stringProp>
              <stringProp name="HTTP(S) Test Script Recorder.truststore_path"></stringProp>
              <stringProp name="HTTP(S) Test Script Recorder.truststore_password"></stringProp>
            </elementProp>
          </ThreadGroup>
        </hashTree>
      </hashTree>
    </hashTree>
  </testPlan>
</jmeter>

参考链接

通过以上步骤和配置,应该能够解决JMeter无法录制脚本的问题。如果问题仍然存在,建议查看JMeter的日志文件,以获取更多详细的错误信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 性能测试工具Jmeter你所不知道的内幕

    谈到性能测试,大家一定会联想到Jmeter和LoadRunner,这两款工具目前在国内使用的相当广泛,主要原因是Jmeter是开源免费,LoadRunner 11在现网中存在破解版本。商用型性能测试工具对于中小型企业很难承担相关的费用。国内的性能测试工具有:CPTS(华为)、kylinTOP(奇林)、PTS(阿里)、WebTest(腾讯)等,国外的性能测试工具LoadRunner相对比较出名。Loadrunner在国内出名的原因主要还是因为LoadRunner 进入中国的市场比较早,而且网上还存在破解版本。现在我们主要研究一下Jmeter工具。网络上经常看到网友们抱怨Jmeter工具测试的结果不准,而为什么不准都是丈二的和尚摸不着头脑。那么今天我就和网友们分享一下Jmeter工具在使用上到底有什么限制,以期对网友们有帮助,提高对Jmeter工具的认知。

    00

    Jmeter常用函数之__CSVRead使用

    __CSVRead函数用于对脚本进行参数话,当脚本中不同变量需要不同参数值时,可以考虑__CSVRead函数。 以登录的用户名、密码为例:实际进行压力测试时,需要模拟使用不同的用户并发访问系统,此时需要我们对脚本中的用户名、密码进行参数化;下面具体介绍如何使用csvread函数: 1. 准备好参数取值List清单,文件格式为:csv或者txt文件,里面保存变量要读取的参数值,每个变量间用逗号相隔。每行表示每一组参数值,每列表示同一种变量; 如准备10个不同的用户,文件名user parameter.txt,其用户名、密码取值如下: liuke01@163.com,12 liuke02@163.com,123 liuke03@163.com,hai123 liuke04@163.com,12abc liuke05@163.com,23dcs liuke06@163.com,ed12q liuke07@163.com,jumper liuke08@163.com,poi2qwe liuke09@163.com,122dewq  liuke10@163.com,123dew23 2.准备好参数取值List清单后,打开Jmeter的函数助手,选择csvread函数,生成函数; 在Jmeter“选项”中-->选择“函数助手对话框”-->选择csvread函数或者直接采用快捷键Ctrl+F打开, 其中:   CSV file to get values from | *alias:表示要读取的文件路径,应该是绝对路径(如:D:\Software\jmeter\User parameter.txt)   CSV文件列号| next| *alias:表示当前变量读取第几列数据,注意第一列是0   点击生成按钮,则生成了函数,如:${__CSVRead(D:\jmeter\User parameter.txt,0)},表示是从D:\jmeter\User parameter.txt文件中第一列读取数据。以此类推。 3.在Jmeter录制的脚本中,找到登录这块需要参数桦的用户名、密码,对用户名、密码的value值进行参数化,其中用户名的value值替换为${__CSVRead(D:\jmeter\User parameter.txt,0)},密码的value值替换为${__CSVRead(D:\jmeter\User parameter.txt,1)},保存当前脚本,参数化完毕,(注:如果要修改要读取的参数值,则可直接在txt清单中修改数字而不用重新在csvread函数生成中修改)

    01

    基于性能测试工具kylinTOP构建虚拟用户自身请求的并发模型

    在对于WEB系统进行性能测试时,第一时间想到的是测试出WEB系统能够承受的最大并发虚拟用户(VU)用户数,因为系统的最大VU并发数可以直接反应系统的承载能力。但是人们往往忽略了VU的并发模型。什么是VU的并发模型呢?如下图所示,我们使用浏览器访问一个页面,浏览器会有多个HTTP请求发向服务端,这些请求有串行的也有并行的(water中有时间重叠的请求属于并行请求。串行请求是指:前一请求结束,后一请求才下发请求)。如果性能测试工具提供WEB录制功能并能按照浏览器的行为模型模拟VU行为,那是最好的了(如果你使用Jmeter或LoadRunner 11那么工具是无法做到的,详见:《性能测试工具Jmeter你所不知道的内幕》、《性能测试工具LoadRunner你所不知道的内幕》)。截止目前我了解到的性能测试工具:kylinTOP可以实现(Jmeter,CPTS(华为),PTS(阿里)均无法实现),但本文并是不讨论如何使用kylinTOP来录制脚本并模拟浏览器的行为,而是如何利用kylinTOP手工构建这样的场景。为什么要手工构建呢,主要是有些web系统对外提供的服务不是WEB页面,而是HTTP接口功能,对这种场景就需要我们手工来构建。

    01

    一款类似loadRunner的优秀国产性能测试工具——kylinTOP测试与监控平台

    市面上流行的压力/负载/性能测试工具多是来自国外,近年来国内的性能测试工具也如雨后春笋般崛起,但大部分产品是基于Jmeter开源内核包装起来的性能测试工具,其中也不乏佼佼者,如:kylinTOP测试与监控平台,它是一款集性能测试、自动化测试、业务监控于一体的B/S架构的测试平台,支持跨平台(WINDOWS/LINUX/SOLARIS/麒麟/MAC)运行。该工具没有基于任何开源免费组件,是一款完全国产化的性能测试工具,是目前国内一款非常难得好用的性能测试工具,可以完全替代国外的同类产品。目前在军工领域、测评检测机构、国有企业、银行体系、大型企业有着广泛的应用。支持的协议较多,尤其在视频领域支持的协议非常多,具有独特的优势。

    01
    领券