(一) 幾個重要概念說明
- 集合點:同步虛擬用戶,以便同一時間執行任務。
- 事務:事務是指服務器響應用戶請求所用的時間,當然它可以衡量某個操作,如登錄所需要的時間,也可以衡量一系列的操作所用的時間,如從登錄開始到完成一張完整的訂單。一個完整的事務是由事務開始、一個或多個業務操作/任務、事務結束三部分構成。
- 檢查點:檢查點是在回放腳本期間檢查特定的文本字符串或者圖片等內容,從而驗證服務器響應內容的正確性。檢查點可以理解為檢查實際結果是否與預期結果一致。(其實就是簡單的檢查下功能的正確性,因為得考慮高負載情況下功能不穩定的問題)
- 思考時間:用戶在執行2個連續操作期間等待的時間稱為思考時間。loandrunner 在錄制腳本時,虛擬用戶產生器(VuGen)將錄制實際的停留等待時間並將該時間插入到腳本,腳本中的lr_think_time()函數就是思考時間。
(二) 飛機訂票系統安裝
loadrunner 12.55不會自動安裝飛機訂票系統,要自己手動安裝。
https://marketplace.microfocus.com/appdelivery/content/web-tours-sample-application
上面這個地址下載:(沒賬號的話要先注冊一個賬號)
https://pan.baidu.com/s/1lG7SyP9mwEKNfbZqC61WQA 百度網盤下載地址
下載並解壓后,可以看到這2個文件
1、 運行上面的strawberry-perl-5.10.1.0.msi 文件(我是安裝這個之前先解壓了WebTours.zip文件,這個文件解壓與否應該是不影響安裝的,影響的話就先解壓WebTours.zip文件再去安裝)
2、 解壓WebTours.zip文件,然后執行下面的文件啟動服務(StartServer.bat)
3、 在瀏覽器輸入http://127.0.0.1:1080/WebTours/就可以訪問了
(三) 飛機訂票系統---客戶信息注冊(正式錄制、修改腳本前的一些說明)
1、 創建一個新的腳本。(文件--新建腳本和解決方案)
vuser_int Action vuser_end,這三個文件應該依次是初始化(vuser_int)、測試(Action)、結束(vuser_end),例如:打開網頁(初始化部分)、注冊功能測試(測試部分)、關閉網頁(結束部分),當然,我們也可以將腳本全部寫在Action中。(但是有多個Action情況下,我們可以只寫一遍初始化和結束部分的代碼)
2、 錄制腳本
3、 這邊貌似不管怎么配置都會彈出一個無Internet的提示(一般來說確定有網,瀏覽器卻打不開網頁,可能的原因之一是代理服務器設置的問題,這邊不太了解loadrunner錄制時是直接用本地的網絡,還是自己有個代理服務器(運行時設置有個代理服務器的選項,不過設置成不用代理也沒什么用)),暫時的想法是只要網頁能正常打開、腳本能正常錄制就行了,所以我直接選擇不再檢查Internet訪問了。
4、 (幫助文檔是這么說明,不過暫時看不出什么區別)如果應用程序使用SSL連接(即協議是https的),需要在錄制選項的“網絡-映射和篩選”的端口映射中配置正確的SSL版本。這部分先略過了,以后在研究,先用HP的飛機訂票軟件學習下(這個是HPPT協議的,暫時用不到這個)。
(三) 飛機訂票系統---客戶信息注冊(開始錄制腳本、修改腳本)
(已經點擊第二步的【開始錄制】)開始錄制客戶信息注冊的腳本
注冊成功后
錄制完成的初始腳本:(注釋部分是我加上的,這里說下錄制的時候錄制選項有2種模式,一種是下面這種簡略的,還有一種是比較詳細的(錄制選項中可以設置))
1 Action() 2 { 3 /*加載指定url*/ 4 web_url("WebTours", 5 "URL=http://127.0.0.1:1080/WebTours/", 6 "Resource=0", 7 "RecContentType=text/html", 8 "Referer=", 9 "Snapshot=t8.inf", 10 "Mode=HTML", 11 LAST); 12 /*點擊相應的鏈接*,C語言中 ; 表示語句的結束,就像我們用句號。來表示結束一樣/ 13 web_link("sign up now", 14 "Text=sign up now", 15 "Snapshot=t9.inf", 16 LAST); 17 /*思考時間(停留時間),這次注冊過程中,這個沒什么用,可以去掉*/ 18 lr_think_time(44); 19 20 /*提交表單*/ 21 web_submit_form("login.pl", 22 "Snapshot=t10.inf", 23 ITEMDATA, 24 "Name=username", "Value=lai", ENDITEM, 25 "Name=password", "Value=123", ENDITEM, 26 "Name=passwordConfirm", "Value=123", ENDITEM, 27 "Name=firstName", "Value=lai", ENDITEM, 28 "Name=lastName", "Value=quanhua", ENDITEM, 29 "Name=address1", "Value=贝贝村", ENDITEM, 30 "Name=address2", "Value=51000", ENDITEM, 31 "Name=register.x", "Value=43", ENDITEM, 32 "Name=register.y", "Value=9", ENDITEM, 33 LAST); 34 35 return 0; 36 }
接下來,需要在腳本中
1、設置集合點(同時打開注冊頁面進行注冊)
2、插入事務開始、事務結束
3、設置檢查點(檢查注冊是否成功)
4、參數化注冊信息
集合和事務,用工具插入,也可以直接在需要的地方敲上相應的代碼。(或者直接鼠標右鍵-插入)
參數化
插入檢查點的方式,按之前的版本,錄制過程或快照 --- HTTP數據頁/頁面視圖都可以插入檢查點才對,不過目前這個選項是灰色的(不能點擊)。看了下幫助文檔,12.55的版本中,web_find()函數已經棄用,不知道是不是這個原因導致了添加文本檢查點選項是灰色的
我們的目的只是簡單的檢查下功能的正確性,這里改用web_reg_find()函數了:web_reg_find(Text="",Search="",LAST),簡單的說下這2個參數的意思,text指要搜索的文本字符串,search指搜索范圍(默認body,HTML代碼的BODY 部分),詳細可以看幫助文檔。在編輯器里輸入 web_reg_find(),然后按F1就行了。(這個函數要放到操作的前面,例如我們注冊一個賬戶,這個函數要放到注冊操作前,而不是注冊操作后面)
參數添加完后,代碼中要使用參數的地方,使用這種格式就行了{username}
修改后的代碼
1 Action() 2 { 3 /*集合點*/ 4 lr_rendezvous("同時打開網頁進行注冊"); 5 6 /*事務開始*/ 7 lr_start_transaction("同時注冊事務"); 8 9 /*加載指定url*/ 10 web_url("WebTours", 11 "URL=http://127.0.0.1:1080/WebTours/", 12 "Resource=0", 13 "RecContentType=text/html", 14 "Referer=", 15 "Snapshot=t8.inf", 16 "Mode=HTML", 17 LAST); 18 19 /*點擊相應的鏈接*/ 20 web_link("sign up now", 21 "Text=sign up now", 22 "Snapshot=t9.inf", 23 LAST); 24 /*檢查表單提交后,是否出現指定的text 值*/ 25 web_reg_find("Text={username}",LAST); 26 /*提交表單*/ 27 web_submit_form("login.pl", 28 "Snapshot=t10.inf", 29 ITEMDATA, 30 "Name=username", "Value={username}", ENDITEM, 31 "Name=password", "Value={password}", ENDITEM, 32 "Name=passwordConfirm", "Value={passwordCofirm}", ENDITEM, 33 "Name=firstName", "Value={firstname}", ENDITEM, 34 "Name=lastName", "Value={lastname}", ENDITEM, 35 "Name=address1", "Value={address1}", ENDITEM, 36 "Name=address2", "Value={address2}", ENDITEM, 37 "Name=register.x", "Value=43", ENDITEM, 38 "Name=register.y", "Value=9", ENDITEM, 39 LAST); 40 41 42 /*事務結束*/ 43 lr_end_transaction("同時注冊事務", LR_AUTO); 44 45 46 return 0; 47 }