jmeter-实践-问题记录


 

常见问题:

1、中文乱码

2、linux问题记录

2.1 csv文件在linux上的路径问题

2.2 linux上执行测试计划 Error in NonGUIDriver

2.3 mysql造数

 

 

一、中文乱码处理

1、多种编码,导致数据混乱

比如一个网站有utf-8,也有gb2312编码,显示时就可能会有问题。

1)在jmeter.properties中将 sampleresult.default.encoding=ISO-8859-1  值改为gb2312

2)在beanshell后置处理器中对utf-8做单独的编码处理。

prev.setDataEncoding("utf-8");

3)在html模式下查看,问题是否解决。

 

2、获取参数化文件数据,得到的是乱码

现象1:参数化文件取值后发现是乱码

1)查看csv data set config里file encoding为utf-8(要与参数化文件保存的格式一致)

2)将参数请求值从http采样器中的parameters放到body data里,再次请求在结果树中看看是否已经变更了。

 

现象2:参数化文件保存的是utf-8格式的文件,但参数化取值后发现乱码。非数字类型转换为URL编码,比如test123显示为类似%E9%94。。123的字符。

1)将文件保存为ANSI格式,再运行下看看结果。

 

 

3、中文URL编码

现象:抓包后发现参数值中文乱码,如果改成中文会使页面数据是乱码。

1)分析下数据,看看乱码是不是URL编码。使用fiddler(工具-textWizard)工具,编解码试下。

2)将URL编码自动转码为中文。

jmetetr自带有两个函数

${__javaScript(encodeURIComponent('${token}'))}

${__urlencode('${token}'))}

可以借助这两个函数来实现,这样在变量或者参数文件中填写中文,在请求中调用这两个函数来编码。

示例见:jmeter随笔(4)--中文url编码问题

 

4、http请求的body data中写的中文有乱码,比如中间方框中有个?的这种。---jmeter3.x以上版本应该没有此问题了

解决方法:

1)jmeter.properties中搜索JSyntaxTextArea

#JSyntaxTextArea configuration
#jsyntaxtextarea.wrapstyleword=true
#jsyntaxtextarea.linewrap=true
#jsyntaxtextarea.codefolding=true
# Set 0 to disable undo feature in JSyntaxTextArea
#jsyntaxtextarea.maxundos=50
# Change the font on the (JSyntax) Text Areas. (Useful for HiDPI screens)
#jsyntaxtextarea.font.family=Hack
#jsyntaxtextarea.font.size=14

# Set this to false to disable the use of JSyntaxTextArea for the Console Logger panel 

JSyntaxTextArea 科普下。

2)将上边的注释取消,重启jmeter,加载脚本。再次查看是否正常了。

 

5、查看结果树乱码

在jmeter.properties这个文件添加上sampleresult.default.encoding=utf-8,重启jmeter

 

6、使用函数${__RandomString(5)} 生成字符乱码

使用函数,结果显示类似:ᰚᛆ↬ḡ溤 

在jmeter.properties中将 sampleresult.default.encoding使用gb2312、ISO-8859-1、utf-8、GBK时都是如此,还将JSyntaxTextArea 注释取消也是如此。

尝试其他解决方式???

 

 

二、linux上问题 

 

2.1 csv 在linux上的路径问题

jmeter3.3版本,测试计划中使用csv data set config插件,此测试计划在windows下使用的绝对路径下使用正常。上传到linux并改路径后,始终提示文件有问题,执行报错。

排查问题步骤:

1、将参数文件上传到linux下的一个文件路径,测试计划中使用linux上的绝对路径。----一直报错。

2、检查文件夹权限、参数文件权限,权限都OK。windows与linux都使用的相同jmeter版本,不同在版本问题。----一直报错。

3、将jmeter的测试计划与参数文件,放在同一目录下,地址使用 .\file.txt这样的相对路径。----一直报错。

4、将jmeter的测试计划与参数文件,放在同一目录下,地址使用 file.txt这样的相对路径。----执行OK。

 

报错信息数据如下所示:

java.lang.IllegalArgumentException: Could not read file header line for file .\file.txt

Caused by: java.lang.IllegalArgumentException: File .\file.txt must exist and be readable

 

相对路径

这个用法到处都是,只提一个特别注意的:可以把csv文件与脚本放在同一个目录下,然后路径写脚本所在的相对路径即可,也可以把csv文件放到bin下面,把bin目录作为相对路径。(注意csv函数还是csv配置元件,路径前面都没有用引号,也没有/或者./不要画蛇添脚

 

2.2 linux上执行测试计划 Error in NonGUIDriver 

 

linux上执行测试计划报错,如下所示:

Error in NonGUIDriver java.lang.IllegalArgumentException: Problem loading XML from:'/root/jmeter201808/test.jmx', missing class com.thoughtworks.xstream.converters.ConversionException:
---- Debugging information ----
cause-exception : com.thoughtworks.xstream.converters.ConversionException
cause-message :
first-jmeter-class : org.apache.jmeter.save.converters.HashTreeConverter.unmarshal(HashTreeConverter.java:67)
class : org.apache.jmeter.save.ScriptWrapper
required-type : org.apache.jorphan.collections.ListedHashTree
converter-type : org.apache.jmeter.save.ScriptWrapperConverter
path : /jmeterTestPlan/hashTree/hashTree/hashTree/kg.apc.jmeter.vizualizers.CorrectedResultCollector
line number : 170
version : 3.3 r1808647

 

解决:

产生该错误的原因,目前有两种情况:
情况1,低版本的JMeter运行高版本的测试计划(测试计划是在高版本的JMeter上编制的)。解决方法:使用相同或更高版本JMeter运行该计划。
情况2,使用第三方插件生成的测试计划,运行在没有该第三方插件的JMeter上。解决方法:在JMeter上安装插件或重新生成不包含插件的测试计划。
 
情况1不存在。
情况2,的确是使用第三方插件(TPS监听器)了,把第三方插件组件删除,再在linux上生成可以运行正常。或者是把windows上的lib包更到linux上,也可以正常运行。
 
 2.3 mysql造数
 
添加mysql的jar包,同样的测试计划,在自己的机器可以直接执行添加数据成功。但是挪到linux压测机上准备数据,怎么也不成功。
1、jar路径、参数化文件路径都确认没问题; 
2、查看jmeter.log日志也没发现明显错误; 
3、执行计划时很长时间都未显示执行结果; 
最后排查问题原因,是因为本机使用的数据库外网ip,但压测机上ping数据库外网ip不通。。。。换成内网ip就好了。这里也是做个记录。遇到这种测试计划类似问题的,可以先看一下网络原因。
 
 
 
 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM