解決Jmeter響應信息亂碼問題

場景:

在測試過程中,我們可能需要查看結果樹,但是發現裏面的響應數據在“Document”以外的其他表現形式下都有亂碼,如下圖就是設置了以Text的形式展示,響應數據包含亂碼:

wKioL1gJ2QTiPjG4AACGMIrdV7Q436.png

 

 

分析:原因是Jmeter的結果處理編碼與被測試對象的編碼不一致;

1、Jmeter的sampler請求結果的默認編碼方式爲:ISO-8859-1(不支持中文);

2、被測對象的結果編碼可能是gbk、UTF-8;

 

解決方法:

1、使用後置控制器"BeanShell PostProcessor"來動態修改結果處理編碼,使之與被測對象保持一致;

優點:靈活,隨時修改;

缺點:要根據不同的對象設置不同的編碼,

適用範圍:測試不同的公司項目,有些公司喜歡GBK,有些事UTF-8;

 

2、修改Jmeter的默認編碼;

優點:一次修改,長久使用;

缺點:如果要測試不同的公司項目,需要多次修改,較麻煩;

使用範圍:測試本公司的項目,畢竟同一個公司的項目基本上都是使用同一個編碼的;

 

那麼就很明確了,大家可以根據自己的需要來設置;

下面說明兩個方法的操作步驟

1、使用後置控制器"BeanShell PostProcessor"

(1)確定返回結果的編碼(可跟開發人員確認,如果是web頁面,可查看源文件得知),如;

wKioL1gJ0u-CQdgCAAAm4aj4cwI649.png

 

(2)右鍵httpSampler,添加“BeanShell PostProcessor”元件;

wKiom1gJ01yxPr80AABMs2kr0tY824.png

 

(3)設置“BeanShell PostProcessor”;

在“Script”中增加“prev.setDataEncoding("UTF-8");”

wKioL1gJ08KA7bhSAABmuUkM4eM116.png

 

(4)驗證是否解決,如下圖,已成功處理;

wKioL1gJ1MvQw2BVAABytBPkw7I192.png

 

 

2、修改Jmeter的默認編碼

(1)進入%JmeterHome%/bin,找到Jmeter.properties,並打開;

wKiom1gJ1s_wqBQ9AABEat1h1xs753.png

(2)搜索“sampleresult”,找到sampler的編碼設置代碼;

wKioL1gJ13binjlZAABGNb4xrcA300.png

 

(3)修改編碼爲“UTF-8”,去掉“#”(註釋符號),保存設置,並重啓Jmeter;

wKioL1gJ2BmSU3QpAAA6vTg6pKo402.png

(4)驗證是否解決,如下圖(無BeanShell PostProcessor),已成功處理;

wKiom1gJ2fyTprOKAACCC7a824k908.png

 

延伸:

1、向服務器發送的post請求中存在亂碼(一般是中文)時,

可在請求中設置content-encoding,如UTF-8;

wKioL1gJ3HmQf5xBAABtPr_cQAc732.png

 

2、“BeanShell PostProcessor”一定要設置在http請求中麼?

答:不是,後置處理器在監聽器之前處理(如不知道元件的作用域與執行順序請自行Google,我後面有時間再整理一份),所以只要在作用域內,後置處理器放哪裏都是同樣的效果;

如下圖:

wKiom1gJ4feQ3XV2AAB3zNVN0Bk164.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章