LoadRunner生成二進位參數的方法
作者介紹:陌路不歸
5年互聯網產品測試經驗,對功能、自動化、性能測試比較擅長,有個人博客,不定期更新文章,分享測試技術。?
在使用LoadRunner的web_custom_request的時候,有時會遇到BodyBinary需要使用二進位參數,但是LoadRunner本身沒有處理二進位參數的函數,碰到這個問題,那怎麼辦呢??
一開始遇到這個,糾結出了以下兩種方法:
1、使用python第三方語言處理,但是比較麻煩,需要文本複製轉換;
2、寫個處理二進位參數的介面,直接調用;
3、使用別人寫好的程序,複製和粘貼,然後放到參數化文件中;
以上3種方法都用過,使用起來都比較費時間,當需要大量的參數化數據時,又是捉襟見肘。
然後又在思考究竟如何讓LoadRunner生成二進位參數,在偶然看到URL編碼的例子後,有眉目了;URL編碼就是一個字元ascii碼的十六進位,需要在前面加上「%」。
比如「」,它的ascii碼是92,92的十六進位是5c,所以「」的url編碼就是%5c。那麼漢字的url編碼呢?很簡單,看例子:「胡」的ascii碼是-17670,十六進位是BAFA,url編碼是「%BA%FA」。??
在LoadRunner中,有個web_convert_param函數,使用方法如下:
web_convert_param("skey", "SourceEncoding=PLAIN", "TargetEncoding=URL", LAST ); //其中skey是一個lr參數名
該例子把參數skey中的原來的值url編碼後,覆蓋了原skey參數:lr_output_message("Url編碼 = %s",lr_eval_string(""));
HTML和PLAIN的區別,在http的相應頭信息中,Content-Type欄位可能有text/html和text/plain兩種取值:
如果是html,瀏覽器在獲取到這種文本時會自動調用html的解析器對文件進行相應的處理
如果是plain,意思是純文本的形式,瀏覽器在獲取到這種文件時並不會對其進行處理?
具體實現如下:
執行結果如下:
好了,生成二進位參數已經完成一半了,怎麼把編碼結果中的「%」
替換成「x」呢?
這裡就要用到字元替換的函數了,LoadRunner本身沒有字元替換的函數,但著完全可以用C寫出來,這個難度不大,下面是實現方法。?
再來執行一次,看看結果:
在替換的時候,使用了(strlen(str)/3-1))*4)這個表達式,可以思考下為什麼這樣用?
另外,如果需要在BodyBinary中參數化UTF-8編碼的中文漢字,需要加上lr_convert_string_encoding函數?。
實現方法如下:
執行結果:
好了,這些操作已經完成二進位參數化了,既可以參數化
ascii字元,也可以參數化UTF-8的中文漢字。?
歡迎大家踴躍留言,告訴小編你在使用LoadRunner遇到的疑難雜症吧~
TAG:搜狗測試 |