之所以需要動態關聯的原因是在系統交互過程中,服務器會動態的生成一些動態的信息給客戶端,客戶端需要將接受到的動態信息原封不動或者經過相應的處理再次返回給服務器,通過這樣的交互,服務器可以認定客戶端的可靠性或者適應業務的需要。比如session的動態信息;OA系統中發布新的公文產生的新的流水號;C/S應用中服務器可能動態的給客戶端分配新的端口號。
2.LR中動態關聯的原理
在HTTP的LR腳本中,LR實現動態關聯的機制是在服務器返回的信息中匹配查找一些特征串信息,然后將找到的特征串保存在變量中,在后續的業務操作中,LR將保存的變量值提交給服務器,從而實現了動態信息的關聯,聯動,保證LR的腳本回放過程中使用的是新的動態參數,而不是歷史的臟數據信息。
在C/S的LR腳本中,LR提供相關的函數,可以將從服務器接收到的buffer中的部分內容保存在變量中,替換后續的變量信息,就可以實現動態參數的關聯了。
3.B/S動態關聯的方法
B/S動態關聯的方法可以分為自動關聯和手動關聯兩種。
自動關聯就是LR中已經默認的定義了一系列的動態參數查找匹配的規則,錄制的腳本回放后,LR會自動的識別一些動態參數,自動的修改腳本,添加相關的腳本關聯函數,實現動態參數的關聯;
手動的關聯是在LR不能自動關聯的情況下被迫進行的相關的手動修改腳本的方式,同樣實現自動關聯的效果。
4.自動關聯的實現
自動關聯在回放腳本后,LR會自動彈出提示對話框,詢問是否進行correlation(自動關聯),確認后LR會自動比對,查找出腳本中需要自動關聯的參數位置,供測試人員選擇確認參數是否需要自動關聯;
5.手動腳本的關聯實現
明確腳本中需要關聯的參數,觀察的細節一般是腳本中頻繁出現的一些變量,比如腳本中的web_submit_data提交的客戶端請求中包含的一些參數,比較兩次錄制的腳本,可能會發現里面的某些變量的參數值發生變化,這種情況一般需要引起關注,是否存在動態參數的關聯。另一種方式可能需要和開發人員交流,在業務的交互中,是否存在某些動態的驗證參數數據。
動態參數的查找位置一般是提交動態參數前的web交互中的服務器響應中查找,可以將LR的視圖切換到TREEVIEW視圖下,測試人員可以看到每一個web交互過程中的服務器響應的詳細數據信息以及客戶端提交的web請求信息。點擊查看示意圖
定位到要找的動態參數的服務器響應位置后,下面的操作是進行手動的關聯,將動態參數值保存在變量中。首先在返回動態參數值的web請求前注冊一個變量,使用web_reg_save_param注冊一個變量,可以詳細的查看一下該函數的幫助信息。在LR的TREEVIEW視圖下,用戶可以使用GUI交互的方式很方便的注冊一個變量,用來保存動態參數。步驟如下:
在返回參數的web請求上點右鍵:insertbefore–》service->web_reg_save_param,填寫相應的參數特征信息,解釋一下,左右邊界(左右邊界是動態參數值的左邊和右邊的特征串,LR就是通過左右邊界來唯一的找到web請求的服務器響應數據中的動態參數的。)另外一個比較重要的地方就是部分特殊字符的轉義問題,如果在左右邊界中出現了特殊字符,如引號,在出現問題是需要考慮這個環節。
確認以后,測試人員可以在scripteview視圖中看到LR自動添加的參數注冊函數。
測試人員可以使用lr_error_message函數來打印調試信息,檢查是否正確的捕獲了動態參數;方式如下:
lr_error_message(“theparamvalueis%s”,lr_eval_string(“{變量名}”));
這樣,在腳本的回放中,用戶可以看到紅色的打印輸出信息。
最后的步驟就是將腳本中的歷史動態參數信息替換成已經注冊的變量,這樣LR就可以自動的提交動態參數值了,而不是提交不進行修改的歷史數據信息。替換方法是將以前的值替換成{變量名}的方式即可。
文章來源于領測軟件測試網 http://www.kjueaiud.com/