1.什麼值需要關聯?
客戶端的某個請求是隨着服務器端的響應而動態變化的值,則需要關聯。
爲什麼要有關聯函數
如果客戶端的某個請求是隨着服務器端的響應而動態變化,我們就需要用到關聯,通過關聯函數獲取動態的返回值,傳給後面的函數使用,完成測試上下文的流程串聯。
定義:在腳本回放過程中,客戶端發出請求,通過關聯函數所定義的左右邊界值(也就是關聯規則),在服務器返回的響應內容中查找,得到相應的值,將其存儲的變量中,後續請求再通過對應變量指向的內存取出數據發給服務器發,已完成正確的業務流程的性能測試,這種動態獲得服務器響應內容的方法被稱作關聯。
2.web_reg_sava_param
舉例:web_reg_save_param("jws_session","LB=JWS_SESSION=\"","RB=\"",LAST);
解釋:jws_session爲關聯函數取一個別名,這個隨意;LB爲左邊界,就是你要關聯的值,左邊的內容;RB爲右邊界,就是要關聯值的右邊內容。
注意:(1)左邊界或者右邊界最好在返回值中是唯一的,避免不用關聯的值也會被關聯;
(2)關聯函數需要放在關聯內容的前面。
3.左邊界、右邊界
首先說的就是web_reg_sava_param是一個註冊函數,LoadRunner實現關聯的原理是:客戶端請求,通過關聯函數定義,在響應中找到關聯的值,以變量的形式替換原腳本中的值。通過原理可以看到,關聯是在響應中找到值,所以左右邊界也是在響應中找啦。
(1)首先確保錄製回放的腳本是成功的
(2)切換到Tree目錄,找到需要關聯內容的請求,再找到需要關聯的值
如上圖:可以看到關聯的user_sid,左邊界爲user_sid=",右邊界爲"
(3)在腳本中寫關聯函數
web_reg_save_param("user_sid","LB=user_sid=\"","RB=\"",LAST);
雙引號需要轉義,加了\用來轉義
4.如果打印關聯的值
例如:關聯函數如下
web_reg_save_param("user_sid","LB=user_sid=\"","RB=\"",LAST);
(1)如果是中文內容,需要轉換下編碼格式
lr_convert_string_encoding(lr_eval_string("{user_sid}"),"UTF-8","gb2312","uuu");
lr_output_message("%s",lr_eval_string("{uuu}"));
(2)如果沒有中文,則直接輸出
lr_output_message("%s",lr_eval_string("{user_sid}"));
(3)如果關聯有多個內容,則可以這樣打印
lr_output_message("%s",lr_eval_string("{user_sid_1}")); //打印第一個
lr_output_message("%s",lr_eval_string("{user_sid_2}")); //打印第二個,以此類推