首页 > 其他分享 >Jmeter 修改Sampler result 结果信息

Jmeter 修改Sampler result 结果信息

时间:2024-12-22 13:32:33浏览次数:4  
标签:jmeter ping 响应 code result Sampler Jmeter response

首先说一下,jmeter的Sampler result是什么?

Jmeter 的Samplers result 是jmeter在向服务器发送请求后,接收到服务器响应的基本信息的展示,如 sample 的开始请求时间、发送的内容大小、基于协议的响应状态码和响应消息等信息。

什么是基于协议的响应状态码和响应消息。比如http协议的状态码:200、400等,和response message:ok,这些都是http自身定义的状态码和消息。而接口的响应内容一般也会定义一些状态码或者状态信息。不过这些是后端开发者自定义的内容,比如某个接口的响应内容中包含:{“status”:”ok”,”code”:200,response:[...]},这类信息是不会在Sample result中展示出来,而是在response data中显示。

在sampler result 中,还记录当前接口是否请求成功的信息,比如当请求某个接口失败后,在结果树中就会以红色形式标记出来。

 

一般情况下,最好不要随意修改响应结果信息,在什么情况下要修改响应结果呢?

最近在用jmeter做websocket接口连接k8s的pod对另一台pod机进行ping超出时,如果ping 的pod存在则响应ping的结果信息。如果ping 的pod不存在时,不会响应任何信息,导致jmeter 的websocket在循环接收消息超时后,会被标记为失败。与实际期望的结果不符。

大致的业务场景为:

PodA 存在,且开机状态,ip地址:15.xx.1.35

PodB 存在,且开机状态,ip地址:15.xx.1.36

PodC 存在,关机状态, ip地址:15.xx.1.37

用例1:podA ping podB 地址正常响应ping 的信息  --【pass】

用例2:podA ping podC 地址无响应信息      --【pass】

在jmeter中用websocket 实现podA ping podC时,当长时间没有响应信息,导致jmeter认为该请求失败,由于websocket是长连接类型,运行不断地请求服务信息。而且在WebSocket Single Read Sampler 中,已设置了超时不标记为错误。也没有达到预期效果。

 执行结果会有时候,没有响应时,执行通过。有时候没有响应时,执行失败

但实际期望的结果是,ping的podC(未开机)没有响应。是正确的

因此,需要通过干预当sampler result结果,当请求response code 报:Sampler error: unexpected frame type (ping). 时,忽略该错误,标记该请求为成功。

 

实际操作如下:

1、在WebSocket Single Read Sampler 中的后置处理器中,通过beanshell 获取到该sample的执行结果。

2、判断response code 等于:Sampler error: unexpected frame type (ping). 时,标记该请求成功。

实际代码如下:

import org.apache.jmeter.samplers.SampleResult;
 
// 获取当前的SampleResult
SampleResult sr = ctx.getPreviousResult();
 
// 设置新的Response Code
//sr.setResponseCode("test code");
// 
//// 设置Response Message,如果需要的话
//sr.setResponseMessage("Read timeout, no response received");
String response_code  = sr.getResponseCode();

log.info(response_code);
if(response_code.equals("Sampler error: unexpected frame type (ping).")){
    // 设置sample 为成功
    sr.setSuccessful(true);
}

最终执行结果,当出现Sampler error: unexpected frame type (ping).错误类型时,不会在显示执行失败了。

可以看到虽然,jmeter日志中显示该请求是失败的,但实际上已经标记为:通过了

标签:jmeter,ping,响应,code,result,Sampler,Jmeter,response
From: https://www.cnblogs.com/JcHome/p/18622028

相关文章

  • 【Azure Logic App】使用Logic App来定制Monitor Alert邮件内容遇见无法获取SearchRes
    问题描述在使用AzureMonitor获取自定义告警指标并发出告警邮件时,默认的告警邮件内容不满足需要,需要把自定义查询语句的结果也直接显示在邮件中。查阅官方文档(CustomizealertnotificationsbyusingLogicApps),可以通过LogicApp来自定义Alert邮件内容。但是,在实验中,遇见......
  • JMeter简介、基本组件、基本测试步骤
    一、JMeter简介定义JMeter是一款开源的性能测试工具,主要用于对软件应用程序进行负载测试、功能测试和性能测量。它是用Java语言编写的,因此可以在多种操作系统上运行,如Windows、Linux和MacOS等。用途性能测试方面:能够模拟大量用户并发访问系统,以此来评估系统在不同负载......
  • 在Windows和Linux系统中安装JMeter的详细步骤
    Windows系统下载JMeter访问ApacheJMeter官方网站(https://jmeter.apache.org/)。在官网找到“Download”链接,选择适合Windows系统的二进制文件(.zip格式)进行下载。例如,下载“apache-jmeter-[version]-bin.zip”文件,其中[version]是具体的版本号。解压文件下载完成后,找到......
  • jmeter-5.6.3性能压测
    下载地址:https://projects.apache.org/版本:apache-jmeter-5.6.3JDK:jdk-8u411-windows-x64环境:windowsapache-jmeter-5.6.3.zip解压后修改apache-jmeter-5.6.3\bin\jmeter.bat配置JAVA_HOME#指定JDK目录JAVA_HOME=D:\Java\jdk-1.8 运行jmeter双击jmeter.bat运行,默认......
  • Jmeter的使用介绍
    一、背景  工作中有个高并发的问题导致页面卡住不动,本地测试环境模拟5万个用户来同时访问,类似于描述,在10点开始的时候,马上有1万个用户进来访问页面,后续陆续又短时间内进来大量用户访问。 二.使用过程jmeter下载下来之后,解压,是一个D:\apache-jmeter-5.6.2\bin这样的文件夹。......
  • Jmeter接口测试-图片验证码的识别
    Jmeter接口测试-对图片验证码的识别Jmeter接口测试-对验证码的识别##大概说一下思路,以及方法,我的接口接口的返回值是img/base64编码的,我采用的是OCRServer识别,获取返回值,图片保存到本地,再图片转码base64,之后携带数据请求OCR识别。(网上的办法是接口这种base64位的编码,可以直接请......
  • jmeter压测报Java reset的解决办法
    解决办法:1、在注册表中按照下面的数据项去设置。win+r打开dos窗口,输入regedit,可打开注册表。一般不建议新手直接去修改注册表。2、新建txt,保存以下脚本修改后缀为reg文件,编辑值如下,保存后双击执行;重启电脑,再次压测即不会出现报错。解析中值为10进制,下方脚本已全转换为16进制。W......
  • JMeter如何对文件上传功能进行测试
    一、使用背景1、在网页中发布的内容,需要添加文件一起发布或上传2、在创建Jmeter脚本之前,首先获取文件上传/下载接口需求(接口文档)或者通过抓包的方式来获取,明确请求链接、请求方法、请求头、请求体、返回数据等信息。二、操作步骤1、获取接口信息使用Fiddler和badboy来配合抓......
  • Numercial result of HIA-SHZPMrm-N1
    ......
  • HTK-HResults计算ASR字错、句错
    工作中有测试AI智能助手,当时没有工具,脚本来不及写,人工手动进行测试,从头到尾人工手动测试比对,字错和句错也都是直接在excel中计算,感触就是,确实很累人!接触HTK,有文章已经写过下载以及安装,详情请看HTK下载安装以及示例先来介绍一下基本概念一、语音识别(ASR)语音识别(speechrecognit......