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