常見問題:
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}'))}
可以借助這兩個函數來實現,這樣在變量或者參數文件中填寫中文,在請求中調用這兩個函數來編碼。
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
解決:
