您好,登錄后才能下訂單哦!
場景:
在測試過程中,我們可能需要查看結果樹,但是發現里面的響應數據在“Document”以外的其他表現形式下都有亂碼,如下圖就是設置了以Text的形式展示,響應數據包含亂碼:
分析:原因是Jmeter的結果處理編碼與被測試對象的編碼不一致;
1、Jmeter的sampler請求結果的默認編碼方式為:ISO-8859-1(不支持中文);
2、被測對象的結果編碼可能是gbk、UTF-8;
解決方法:
1、使用后置控制器"BeanShell PostProcessor"來動態修改結果處理編碼,使之與被測對象保持一致;
優點:靈活,隨時修改;
缺點:要根據不同的對象設置不同的編碼,
適用范圍:測試不同的公司項目,有些公司喜歡GBK,有些事UTF-8;
2、修改Jmeter的默認編碼;
優點:一次修改,長久使用;
缺點:如果要測試不同的公司項目,需要多次修改,較麻煩;
使用范圍:測試本公司的項目,畢竟同一個公司的項目基本上都是使用同一個編碼的;
那么就很明確了,大家可以根據自己的需要來設置;
下面說明兩個方法的操作步驟;
1、使用后置控制器"BeanShell PostProcessor"
(1)確定返回結果的編碼(可跟開發人員確認,如果是web頁面,可查看源文件得知),如;
(2)右鍵httpSampler,添加“BeanShell PostProcessor”元件;
(3)設置“BeanShell PostProcessor”;
在“Script”中增加“prev.setDataEncoding("UTF-8");”
(4)驗證是否解決,如下圖,已成功處理;
2、修改Jmeter的默認編碼
(1)進入%JmeterHome%/bin,找到Jmeter.properties,并打開;
(2)搜索“sampleresult”,找到sampler的編碼設置代碼;
(3)修改編碼為“UTF-8”,去掉“#”(注釋符號),保存設置,并重啟Jmeter;
(4)驗證是否解決,如下圖(無BeanShell PostProcessor),已成功處理;
延伸:
1、向服務器發送的post請求中存在亂碼(一般是中文)時,
可在請求中設置content-encoding,如UTF-8;
2、“BeanShell PostProcessor”一定要設置在http請求中么?
答:不是,后置處理器在監聽器之前處理(如不知道元件的作用域與執行順序請自行Google,我后面有時間再整理一份),所以只要在作用域內,后置處理器放哪里都是同樣的效果;
如下圖:
參考鳴謝:
testtang的jmeter響應結果亂碼問題:http://www.cnblogs.com/tangmaokai/p/5830344.html
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。