上週有一個小夥伴發了這樣一篇文章:用LoadRunner,這個問題99%的人都遇到過,這次小編也有LoadRunner相關的問題和大家分享。小編覺得這個問題貌似比上週的問題覆蓋面更廣,因此掐指一算髮現,遇到這個問題的人竟然高達驚人的99.82%,驚不驚喜害不害怕?

好了,說正事兒~最近小編在做服務端壓力測試的時候,遇到了兩個小問題,雖然是兩個比較簡單的問題,但是很常見,因此小編總結了一下,分享給需要的小夥伴們。

一、發post請求時,Body中需要填充Json字元串

在小編的項目業務中,服務端跟客戶端之間通信的時候約定使用post請求,在post請求的body中發送了一串Json格式的數據。小編在LoadRunner中的代碼如下(當然,與小編真正的代碼不完全一樣):

按部就班寫出上面的幾行代碼,調試的時候發現報錯了,機智的小編斷定肯定是body裡面的Json字元串由於雙引號沒有轉義引起的,於是把上面腳本中body那一行改成了下面這樣:

想著這下應該沒問題了。再次發請求的時候發現LoadRunner提示返回500,去服務端查log發現伺服器根本沒有收到這個請求。這是怎麼回事兒呢?

查閱了資料之後發現原來是這樣:由於我們在body中傳了一個json格式的字元串,該字元串中{和 }符號與LoadRunner中參數化時的符號衝突了!對,參數化的時候也是用的這兩個符號,因此會報錯。

找到了問題,解決方法也很簡單:把LoadRunner中參數化的標記符號改一下就行了。在Tools —> General Options選項中,選擇Parameterization進行修改即可:

按照網上大神的建議,將參數化標記符號修改為<和>,再次運行腳本,順利通過,服務端收到了請求,當然返回的數據也是非常的excited!

二、發post請求時,Body中對漢字的處理

在調通上面的問題一之後,小編緊接著又發現了一個問題:在腳本中,有時候需要傳一些漢字進去,而傳了漢字之後請求就會出現異常,比如當腳本中的body變成這樣時:

發送請求,發現LoadRunner中沒有報錯,但是返回的數據為空。去伺服器上看log之後發現報了一條errorLog,說是請求格式錯誤。之前數據是英文的時候沒事兒,變成漢字就有問題,首先考慮是編碼的問題:由於客戶端的漢字是GBK編碼,發送到服務端之後無法被服務端識別,因此沒有數據返回。

在LoadRunner中,改變編碼有特定的函數:lr_convert_string_encoding ,該函數的定義如下:

LoadRunner的函數說明文檔中也給出了一些參數可以取的值:

Values for fromEncoding and toEncoding

在web_custom_request( ) 函數之前,我們先將要發送的漢字進行轉碼:

腳本中的body相應地也變成了這樣(由於之前把參數化的標記符號改成了「< >」,因此這兒的str參數需要用 「< >」 包起來):

改完之後,發請求,服務端log正常,返回的數據當然也是excited!

以上就是小編在項目中遇到的兩個小坑,在此總結並分享給大家,小編相信所有踩過的坑總結後都會變成寶貴的經驗,希望可以幫到大家。也歡迎小夥伴們留言分享自己遇到的問題,小編和其他的小編們一定儘力幫大家解決。

1、想學習軟體測試這一門技術, 對軟體測試感興趣,想從事軟體測試工作的。

2、工作0-2年,感覺自己技術不行,想提升的3、沒有工作經驗,但基礎非常紮實,想提升自己技術的。4、還有就是想一起交流學習的。5、工作遇到瓶頸了,想進階突破自己的。5.小號一律不給過,謝謝。學習交流羣:672899761

推薦閱讀:

相關文章