為什么要關(guān)聯(lián)動(dòng)態(tài)數據呢?舉個(gè)例子,在對我們平臺的工作流性能測試時(shí),在待辦任務(wù)里面選擇一條記錄執行發(fā)送操作,LoadRunner VuGen會(huì )詳細記錄下來(lái)流程發(fā)送操作的細節,但在回放腳本的時(shí)候會(huì )有問(wèn)題。待辦任務(wù)里面找不到那條記錄了,已經(jīng)發(fā)送到下一個(gè)環(huán)節了。另一個(gè)更易理解的例子,在初始化查詢(xún)頁(yè)面,選擇一條記錄進(jìn)行刪除,錄下腳本進(jìn)行回放的時(shí)候會(huì )出錯,記錄已經(jīng)刪除了,回放腳本的時(shí)候服務(wù)器返回的記錄不再包含那條記錄,再向服務(wù)器發(fā)送刪除那條記錄的請求,就報錯了。關(guān)聯(lián)動(dòng)態(tài)數據需要我們在腳本中設置一個(gè)變量,保存從服務(wù)器返回的起標識作用的數據,發(fā)送請求的時(shí)候使用該變量代替動(dòng)態(tài)數據,這樣再回放、反復測試就不會(huì )報錯了。需要關(guān)聯(lián)的標識性數據一般是各種主鍵,工作流的發(fā)送的例子很復雜,需要對流程編碼、環(huán)節編碼、參與者編碼、表單編碼等進(jìn)行關(guān)聯(lián),下面使用復雜的工作流發(fā)送的例子進(jìn)行演示。
手動(dòng)關(guān)聯(lián)動(dòng)態(tài)數據的復雜做法是,回放腳本,在Execution Log和Recoding Log打出的信息中找需要關(guān)聯(lián)的動(dòng)態(tài)數據及動(dòng)態(tài)數據的左右邊界。甚是麻煩,我沒(méi)怎么看明白。其實(shí)每次回放腳本,Recoding Log打印的信息都是一樣的,也和錄制腳本的時(shí)候生成的\data\RecordingLog.txt文件的內容一樣。下面直接使用\data\RecordingLog.txt文件,關(guān)聯(lián)動(dòng)態(tài)數據的時(shí)候不再需要回放腳本,減少了關(guān)聯(lián)動(dòng)態(tài)數據的工作時(shí)間。
執行同樣的操作,先后錄制兩次腳本保存,比較一下生成的Action.c,注意動(dòng)態(tài)數據不能放在vuser_init.c文件中。自帶的WinDiff工具不好使用,推薦使用Beyond Compare工具。不是所有的差異處都要關(guān)聯(lián)的,WEB_URL()等方法的參數列表的先后順序是沒(méi)關(guān)系的,思考時(shí)間當然也可以不同。下圖中右邊的腳本已經(jīng)關(guān)聯(lián)過(guò)動(dòng)態(tài)數據了,如果是剛錄制的兩份腳本,右邊的id、processId等也是32位的主鍵,左右兩份腳本的差異一目了然,記下這些動(dòng)態(tài)數據的值。
以左圖id的值:40287ae91c4b7dbb011c4b85e17204da為例,在腳本\data\RecordingLog.txt中查找該值。找其第一次出現的地方,一般在該值的上方會(huì )有這樣的字樣:*** [tid=2258 Action 145] Receiving response from host 192.168.250.105:7001 ( 10/9/2008 17:40:37 )。如下圖,記下40287ae91c4b7dbb011c4b85e17204da的左邊界:<input type=\"hidden\" name=\"id\" value=\"和右邊界:\">。注意看一下這樣的左右邊界是否唯一。
在剛才的腳本的文件\data\RecordingLog.txt中小心向上翻動(dòng),可以找到這樣的字樣: *** [tid=2258 Action 145] Recording Function ( 10/9/2008 17:40:37 )
該字樣的下面緊接著(zhù)是方法web_submit_data("jspformtaskdeal.cmd",……),這個(gè)方法在A(yíng)ction.c中是同樣存在的,通過(guò)這個(gè)方法我們可以知道在A(yíng)ction.c的什么地方插入web_reg_save_param()方法,F在我們需要做的就是在腳本Action.c中,方法web_submit_data("jspformtaskdeal.cmd",……)的前面,緊挨著(zhù)這個(gè)方法寫(xiě)上web_reg_save_param()方法用于保存動(dòng)態(tài)數據,其中LB、RB分別是剛才記錄下的左右邊界值,primary是我們起的變量名字。完整的方法如下:
web_reg_save_param("primkey",
"LB=<input type=\"hidden\" name=\"id\" value=\"",
"RB=\">",
LAST);
修改后的Action.c的腳本,見(jiàn)下圖:
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/