首页 > 其他分享 >性能工具之Jmeter一个脚本的编写与调试案例

性能工具之Jmeter一个脚本的编写与调试案例

时间:2023-04-06 16:04:38浏览次数:48  
标签:请求 form Multipart 编写 POST Jmeter data 调试

 性能工具之Jmeter一个脚本的编写与调试案例_压测

引言

最近接到一个任务,需要写一个Jmeter脚本,脚本需要“登录”后从返回值获取Cookies,然后从第一个接口的返回参数中提取有用的id,在第二个接口请求的时候使用这个id,从而完成测试。然而这个看似简单的测试用例的编写并不是很容易,还经历了一些有趣的调试。

第一个问题

开始,完成了登录接口的编写,但是返回非常奇怪,我把JMeter返回的内容存入HTML中,页面如下:

性能工具之Jmeter一个脚本的编写与调试案例_压测_02

报错的原因是json的字符串没有经过规格化,如:json.loads(),后尝试做了如下操作:

性能工具之Jmeter一个脚本的编写与调试案例_字符串_03

  • Multipart/form-data的基础方法是POST,也就是说是由POST方法来组合实现的。
  • Multipart/form-data与POST方法的不同之处在于请求头和请求体。
  • Multipart/form-data的请求头必须包含一个特殊的头信息 : Content-Type , 且其值也必须规定为multipart/form-data,同时还需要规定一个内容分割符用于分割请求体中的多个POST的内容,如文件内容和文本内容自然需要分割开来,不然接收方就无法正常解析和还原这个文件了。
  • Multipart/form-data的请求体也是一个字符串 , 不过和post的请求体不同的是它的构造方式 , post是简单的name=value值连接,而Multipart/form-data则是添加了分隔符等内容的构造体。

请求的头部信息如下:

性能工具之Jmeter一个脚本的编写与调试案例_压测_04

这里因为Content-Type已经有要求了,需要把这一项去掉。

性能工具之Jmeter一个脚本的编写与调试案例_压测_05

这样登录接口就调试成功了。

第二个问题

刚松了一口气,结果第二个问题出现了,第二个请求返回报错,如下:这明显是一个长连接的问题。

性能工具之Jmeter一个脚本的编写与调试案例_字符串_06

正常的客户端访问,不会出现这样的情况,因为正常通信的情况下,服务端主动关闭,客户端连接也会释放掉。但是JMeter中,服务端主动关闭,他根本就不理会。那么有没有JMeter中实时主动关闭的办法那?

去掉勾选Use KeepAlive,连接就不会复用,这样也就不存在空闲超时,被服务端干掉的情况了。但带来的是性能的开销,因为tcp每次都要关闭然后重建。

性能工具之Jmeter一个脚本的编写与调试案例_服务端_07

到此为止,这个Jmeter脚本就调通了,从中学习到了不少的知识,感谢左泽位同学提供的在线帮助。


性能工具之Jmeter系列:

性能工具之Jmeter扩展配置元件插件

性能工具之Jmeter压测Hprose RPC服务

性能工具之Jmeter扩展函数及压测ActiveMQ实践

性能工具之Jmeter压测Thrift RPC服务

标签:请求,form,Multipart,编写,POST,Jmeter,data,调试
From: https://blog.51cto.com/u_15181572/6173483

相关文章

  • 性能工具之Jmeter扩展配置元件插件
    背景Jmeter有很多的配置元件可以定义变量值在测试过程中使用比如最常见的两个:用户自定义变量CSV数据文件设置配置元件主要是用于测试前配置,将配置转换为变量设置到Jmetercontext中。而Jmeter默认并没有配置文件(.properties)读取器,但由于Jmeter是开源的,我们自己可以自定义一个配置......
  • Rider-调试并配置本地IIS
    项目部署到IISIIS:新建Web站点,路径指向Web应用程序根目录,端口默认80端口;应用程序池:".NetCLR版本"选择.NetCLR版本v4.0.30319,托管管道模式选择"集成"。  Web项目配置在Rider中选中Web项目,输入F4,打开csproj文件,添加如下配置。1<WebProjectProperties>2<U......
  • SpringBoot中如何编写一个优雅的限流组件?
    很早以前,我曾写过两篇介绍如何在SpringBoot中使用Guava和Redis实现接口限流的文章。具体包括:使用Guava实现单机令牌桶限流使用Redis实现分布式限流现在,一个问题摆在我们面前:如何将这两种限流机制整合到同一个组件中,以便用户随时切换呢?显然,我们需要定义一个通用的限流组件,将......
  • 性能工具之Jmeter小白入门系列之五
    专气致柔,能如婴儿乎---《道德经》第十章一、Jmeter命令行启动   Jmeter有两种运行:一种是采用的界面模式(GUI)启动,会占用不少系统资源;另一种是命令行模式(non-GUI)执行,这样节约资源,在性能测试,基本都是按这种方式运行。启动命令:jmxfileresultsfile :结果保存文件类型......
  • 性能工具之Jmeter小白入门系列之四
        青,取之于蓝,而青于蓝;冰,水为之,而寒于水。木直中绳,輮以为轮,其曲中规。虽有槁暴,不复挺者,輮使之然也。故木受绳则直,金就砺则利,君子博学而日参省乎己,则知明而行无过矣。  一、Jmeter中参数取值1、TestPlan中添加变量TestPlan中设置好变量名,变量名可以在任意的位置引用,比......
  • 性能工具之Jmeter小白入门系列之二
         在上一讲中简单的介绍了Jmeter的安装与HttpRequet请求,在实际工作,咱们对工具的使用还需咱们进一步学习与操作才能掌握;  话说【间单的事情重复做,就会成为行家;简单的事情用心做,就会成为赢家。简单的法坚持修,就会成为大法,每天持之以恒做简单的事情,这个人就会不简单】......
  • jmeter模拟多IP地址访问
    1.前言:今天一同事在压测时提到怎么用jmeter里虚拟多个ip来发送请求,我想了一下以前用LR时用过虚拟ip地址,jmeter还没有使用过。想着原理应该是相通的,既然LR都能支持的话,那Jmeter应该也是支持,于是就有了jmeter虚拟化IP地址的研究。在网上也查找了相应的资料,摸索参考着实践了一把,坑吃......
  • jmeter模拟多IP地址访问
    1.前言:今天一同事在压测时提到怎么用jmeter里虚拟多个ip来发送请求,我想了一下以前用LR时用过虚拟ip地址,jmeter还没有使用过。想着原理应该是相通的,既然LR都能支持的话,那Jmeter应该也是支持,于是就有了jmeter虚拟化IP地址的研究。在网上也查找了相应的资料,摸索参考着实践了一把,坑吃......
  • 第 十八 篇 错误处理 与 调试
    bycaixin深圳常见的错误类型错误类型Error:基类型,其他错误类型都继承自该类型EvalError:使用eval()函数发生异常时被抛出RangeError:在数值超出相应范围时触发ReferenceError:在找不到对象的时候发生该错误(objectexpected),通常在访问不到变量的时候发生这种错误Synt......
  • Linux的shell脚本编写技巧和crontab计划任务的结合(沙漠一样干的干货)
    Shell脚本的重要性我想应该不需要我在重复了,本文的目的是向读者介绍Shell编程的一些固定套路,当然,也可以称之为技巧,而crontab计划任务又和Shell脚本密切相关(一般简单任务当然是写一条命令啦,如果比较复杂的场景还是脚本比较合事宜,并且,脚本更为灵活,拓展性更强啦)。一,脚本的结构就是第一......