1.关闭启动Jmeter时出现的面板
说明:启动Jmeter的同时往往会打开一个下图所示的面板,经常不小心关掉后,导致Jmeter停止运行,偶尔写了好久的脚本没来得及保存就没了,烦恼不已
怎样避免如上情况的发生呢?
我们在使用Jmeter的时候,不再双击安装目录下的 jmeter.bat ,改为 双击 jmeterw.cmd ,即可完美解决
2.更换Jmeter工具的外观
Jmeter工具中内置了工具不同的外观显示,小伙伴们可以根据自己的使用习惯(我用的第一个Metal),更换不同的皮肤,嘻嘻,具体步骤如下:
不
3.更改Jmeter工具的语言
Jmeter工具中内置了工具的不同语言展示,小伙伴们可以根据自己的习惯(对于英语不好的人简直是福音啊),使用不同的语言,具体步骤如下:
Jmeter 设置默认语言为中文
(1).在apache-jmeter-4.0\bin目录下,打开jmeter.properties;
(2).将#language=en下一列添加language=zh_CN,保存;
(3).重新启动jmeter即可。
4.Jmeter启动报错
4.1 报错 Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
jmeter能正常打开,但是看到报错,感觉有点不舒服(强迫症患者无法接受),就尝试着解决了一下
解决方案思路如下:
(1)查看命令行中的信息可知,启动 Jmeter 的时候,Jmeter 在写 windows 7 时无法成功写入,导致系统抛出了 RegCreateKeyEx 的异常
(2)由警告信息可知,Jmeter 写入键值的位置:Softwar\JavaSoft\Prefs,打开注册表编辑器(命令行窗口输入 regedit,回车后允许即可),
HKEY_CURRENT_USER \Softwar\JavaSoft\ 和 HKEY_LOCAL_MACHINE\Software\JavaSoft
查看下面是否有子项Prefs,若无则添加子项(JavaSoft目录点击右键,选择新建->项(key),命名为Prefs),有则忽略;
分别在2个JavaSoft上,单击右键,更改权限为完全控制并应用;
报警信息,至此问题解决。
5.Jmeter中中文乱码
5.1 请求消息中中文显示乱码
产生原因: 这种情况在jmeter3.0的版本中才会产生。这不是乱码,而是由于3.0中优化body data后,使用默认的字体(Consolas)不支持汉字的显示。
解决办法:打开 %JMeter_HOME%\bin\jmeter.properties文件,找到jsyntaxtextarea.font.family这个选项,取消前面的#号,使其使用Hack字体即可,当然,你也可以换成 宋体以及其他支持的字体集。
5.2 响应消息中中文显示乱码
产生原因: Jmeter的结果处理编码与被测试对象的编码不一致。Jmeter的sampler请求结果的默认编码方式为:ISO-8859-1(不支持中文),Jmeter的sampler请求结果的默认编码方式为:ISO-8859-1(不支持中文)。
解决办法一: 使用后置控制器”BeanShell PostProcessor”来动态修改结果处理编码,使之与被测对象保持一致;
优点:灵活,随时修改; 缺点:要根据不同的对象设置不同的编码;
适用范围:测试不同的公司项目,有些公司喜欢GBK,有些是UTF-8;
配置方法:
(1)确定返回结果的编码(可跟开发人员确认,如果是web页面,可查看源文件得知);
(2)右键httpSampler,添加“BeanShell PostProcessor”元件;
(3)设置“BeanShell PostProcessor”;在“Script”中增加“prev.setDataEncoding(“UTF-8”);”
(4)测试验证,OK,设置完毕。
解决办法二: 修改Jmeter的默认编码方式;
优点:一次修改,长久使用; 缺点:如果要测试不同的公司项目,需要多次修改,较麻烦;
适用范围:测试本公司的项目,毕竟同一个公司的项目基本上都是使用同一个编码的;
配置方法: 打开 %JMeter_HOME%\bin\jmeter.properties文件,搜索“sampleresult”,找到sampler的编码设置代码;修改编码与被测系统同样的编码方式,如UTF-8,去掉“#”(注释符号),保存设置,并重启Jmeter验证即可。
解决办法三:使用 BeanShell 后置处理程序
线程组---->添加---->后置处理器---->BeanShell 后置处理程序
复制下面的内容,加入BeanShell 后置处理程序中即可
String s=new String(prev.getResponseData(),"UTF-8");
char aChar;
int len= s.length();
StringBuffer outBuffer=new StringBuffer(len);
for(int x =0; x <len;){
aChar= s.charAt(x++);
if(aChar=='\\'){
aChar= s.charAt(x++);
if(aChar=='u'){
int value =0;
for(int i=0;i<4;i++){
aChar= s.charAt(x++);
switch(aChar){
case'0':
case'1':
case'2':
case'3':
case'4':
case'5':
case'6':
case'7':
case'8':
case'9':
value=(value <<4)+aChar-'0';
break;
case'a':
case'b':
case'c':
case'd':
case'e':
case'f':
value=(value <<4)+10+aChar-'a';
break;
case'A':
case'B':
case'C':
case'D':
case'E':
case'F':
value=(value <<4)+10+aChar-'A';
break;
default:
throw new IllegalArgumentException(
"Malformed \\uxxxx encoding.");}}
outBuffer.append((char) value);}else{
if(aChar=='t')
aChar='\t';
else if(aChar=='r')
aChar='\r';
else if(aChar=='n')
aChar='\n';
else if(aChar=='f')
aChar='\f';
outBuffer.append(aChar);}}else
outBuffer.append(aChar);}
prev.setResponseData(outBuffer.toString());
(2).将#language=en下一列添加language=zh_CN,保存;
(3).重新启动jmeter即可。
4.Jmeter启动报错
4.1 报错 Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
jmeter能正常打开,但是看到报错,感觉有点不舒服(强迫症患者无法接受),就尝试着解决了一下
解决方案思路如下:
(1)查看命令行中的信息可知,启动 Jmeter 的时候,Jmeter 在写 windows 7 时无法成功写入,导致系统抛出了 RegCreateKeyEx 的异常
(2)由警告信息可知,Jmeter 写入键值的位置:Softwar\JavaSoft\Prefs,打开注册表编辑器(命令行窗口输入 regedit,回车后允许即可),
HKEY_CURRENT_USER \Softwar\JavaSoft\ 和 HKEY_LOCAL_MACHINE\Software\JavaSoft
查看下面是否有子项Prefs,若无则添加子项(JavaSoft目录点击右键,选择新建->项(key),命名为Prefs),有则忽略;
分别在2个JavaSoft上,单击右键,更改权限为完全控制并应用;
报警信息,至此问题解决。
5.Jmeter中中文乱码
5.1 请求消息中中文显示乱码
产生原因: 这种情况在jmeter3.0的版本中才会产生。这不是乱码,而是由于3.0中优化body data后,使用默认的字体(Consolas)不支持汉字的显示。
解决办法:打开 %JMeter_HOME%\bin\jmeter.properties文件,找到jsyntaxtextarea.font.family这个选项,取消前面的#号,使其使用Hack字体即可,当然,你也可以换成 宋体以及其他支持的字体集。
5.2 响应消息中中文显示乱码
产生原因: Jmeter的结果处理编码与被测试对象的编码不一致。Jmeter的sampler请求结果的默认编码方式为:ISO-8859-1(不支持中文),Jmeter的sampler请求结果的默认编码方式为:ISO-8859-1(不支持中文)。
解决办法一: 使用后置控制器”BeanShell PostProcessor”来动态修改结果处理编码,使之与被测对象保持一致;
优点:灵活,随时修改; 缺点:要根据不同的对象设置不同的编码;
适用范围:测试不同的公司项目,有些公司喜欢GBK,有些是UTF-8;
配置方法:
(1)确定返回结果的编码(可跟开发人员确认,如果是web页面,可查看源文件得知);
(2)右键httpSampler,添加“BeanShell PostProcessor”元件;
(3)设置“BeanShell PostProcessor”;在“Script”中增加“prev.setDataEncoding(“UTF-8”);”
(4)测试验证,OK,设置完毕。
解决办法二: 修改Jmeter的默认编码方式;
优点:一次修改,长久使用; 缺点:如果要测试不同的公司项目,需要多次修改,较麻烦;
适用范围:测试本公司的项目,毕竟同一个公司的项目基本上都是使用同一个编码的;
配置方法: 打开 %JMeter_HOME%\bin\jmeter.properties文件,搜索“sampleresult”,找到sampler的编码设置代码;修改编码与被测系统同样的编码方式,如UTF-8,去掉“#”(注释符号),保存设置,并重启Jmeter验证即可。
解决办法三:使用 BeanShell 后置处理程序
线程组---->添加---->后置处理器---->BeanShell 后置处理程序
复制下面的内容,加入BeanShell 后置处理程序中即可
String s=new String(prev.getResponseData(),"UTF-8");
char aChar;
int len= s.length();
StringBuffer outBuffer=new StringBuffer(len);
for(int x =0; x <len;){
aChar= s.charAt(x++);
if(aChar=='\\'){
aChar= s.charAt(x++);
if(aChar=='u'){
int value =0;
for(int i=0;i<4;i++){
aChar= s.charAt(x++);
switch(aChar){
case'0':
case'1':
case'2':
case'3':
case'4':
case'5':
case'6':
case'7':
case'8':
case'9':
value=(value <<4)+aChar-'0';
break;
case'a':
case'b':
case'c':
case'd':
case'e':
case'f':
value=(value <<4)+10+aChar-'a';
break;
case'A':
case'B':
case'C':
case'D':
case'E':
case'F':
value=(value <<4)+10+aChar-'A';
break;
default:
throw new IllegalArgumentException(
"Malformed \\uxxxx encoding.");}}
outBuffer.append((char) value);}else{
if(aChar=='t')
aChar='\t';
else if(aChar=='r')
aChar='\r';
else if(aChar=='n')
aChar='\n';
else if(aChar=='f')
aChar='\f';
outBuffer.append(aChar);}}else
outBuffer.append(aChar);}
prev.setResponseData(outBuffer.toString());