黃小林 申珅
摘要:該文使用LoadRunner對徐州工程學院網絡教學平臺,進行初步的性能測試。首先,對項目分析,設計完善測試方案;然后錄制相關腳本,并對腳本進行相應的優化處理,模擬多用戶并發,設計場景,對場景進行調試,對測試用例進行系統化整理以及細致的分析;最后反饋缺陷資料和測試分析報告。該文主要研究如何設計和實現軟件自動化測試技術。
關鍵詞:LoadRunner;自動化測試;腳本;性能測試;Web
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2017)36-0242-03
Abstract: Online teaching platform of Xuzhou Institute of Technology is tested a preliminary performance test using LoadRunne in the paper. Firstly, the test program are designed and improved by analyzing project. Then we record the relevant scrip and optimize the script, simulate multi-user concurrency, design the scene, and debug the scene, furthermore we organize the test cases systematically and analyze meticulously. Finally, the information of feedback defect and test analysis report are obtained.
Key words: automated testing; Script; multi-user concurrency; performance testing; Web
隨著Web應用技術的發展,用戶對Web服務應用的質量要求更高[1]。現代軟件規模的大型化,軟件結構的復雜化增加了軟件測試的難度。因此,有效地保證軟件的質量,需要將軟件開發和軟件測試相結合,并且加強自動化測試在整個測試領域的應用。
與以往的軟件相比,網站數據量大,業務量大,用途廣泛等特點。同時,Web 服務器可能在同一時間內會接受大量來自不同地域的數據請求,一旦Web 服務器崩潰,會造成巨大的損失,這就對網站的穩定性提出了要求[2]。本文針對Web網站的性能測試進行研究,以“徐州工程學院網絡教學平臺”為例,用LoadRunner 測試工具,對其進行外部性能壓力測試[4]。
1 性能測試工具
LoadRunner 是適用于各種體系架構,可以預測系統行為,并優化系統性能。LoadRunner 的測試對象是Web服務整個系統,它通過錄制腳本來模擬實際用戶的操作,大量的虛擬用戶模擬高并發操作,在操作的同時實時監測系統性能,更快的發現問題[3]。
事務:事務可以說是系統的業務流程,判斷系統的性能,需要去定義多個事務,去判斷各個業務流程的性能使用情況。場景:場景就是每次測試時發生的事件,由多個事務組成,可以根據性能要求去定義不同的場景。Vuser:虛擬用戶Vuser 去替代真實用戶,Vuser 模擬真實用戶的操作,去使用系統,更好地錄制腳本。一個復雜的場景,可能會包含幾十個甚至上千個 Vuser。Vuser腳本:錄制的腳本其實就是模擬真實用戶在實際情況中的操作,就是虛擬用戶在場景中所需要去執行的操作。
2 項目分析
測試對象是網絡教學平臺,是學生和老師互動的平臺,拓展和補充教學資源。該網站的主要功能是:通過課程名稱、授課教師、課程類型和所屬院系去查詢課程,從而讓學生更全面的了解這些課程,進入課程,學生之間、學生和老師之間能夠互動,發表各自對于本課程的想法。
2.1 項目測試思路
對于網站進行壓力測試的時,首先了解網站的基本功能點,測試服務器的承受能力,再對其施加高強度。壓力測試的目的就是為了判斷一個操作是否可以正常完成,并且在執行過程中是否會出現錯誤。壓力測試時,網站是否能正常運行。壓力測試必須滿足以下四個關鍵條件。
重復:測試工作就是一遍又一遍根據某個功能去反復執行某些操作。并發:并發就是多個用戶同時進行操作的現象。引入并發,意味著多線程,那么一個線程中的內容就非常有可能被其他線程中斷,所以,錯誤很難被發現,只有在一個指令集以特定的順序執行時才會被發現。量級:壓力測試應該考慮軟件系統重每個操作的負載量。隨機變化:所有的壓力測試都會存在一些隨機性。通過改變操作的時間間隔、重復次數、或者是改變事務的順序,進行不同的壓力測試。
2.2 項目測試特點
1) 主要任務為用戶登錄,用戶申請以及課程搜索。2)負載期內,將有大量用戶同時注冊和登錄,相應模塊(登錄,搜索課程,頁面切換以及選課申請)的工作強度也將增加。3)結合學生數量,以及對于網絡教學平臺的使用情況來說,某些特殊時段登錄/活動人數預計為10-100人。
2.3 項目測試用例設計
本次測試所用到的 6 個測試用例。具體描述:測試用例I為用戶并發注冊測試;測試用例II為用戶隨機注冊測試;測試用例III、 IV、 V、 VI為服務器瓶頸測試。
3 項目性能測試的實現
3.1 創建用戶腳本
本項目測試對象是Web 網站,腳本錄制時選擇Web(HTTP/HTML)協議[5]。在URL Address 中填寫徐州工程學院網絡教學平臺的網址。用戶登錄,在腳本錄制界面,設置相關參數,在登錄時,輸入用戶名和密碼,錄制完成后,VuGen 組件會自動生成腳本。接著,如需查看錄制時相關信息,點擊“Recording Log”按鈕就可以查看腳本錄制日志,最后,如果腳本錄制完成,對其進行回放,回放完成,點擊“Replay Log”按鈕,可以查看腳本回放日志[6,7]。endprint
3.2 完善測試腳本
當錄制完用戶腳本之后,需要對腳本進行完善,保證其使用效果。完善測試腳本包括事務設置、集合點和腳本檢驗這三種[8]。
1) 事務設置
LoadRunner能夠將各個事務區分開,分別標記各個事務的性能狀況,從事務的開始點計時,直到事務的結束點,計時結束。點擊“事務按鈕”進入腳本編寫區,在事務開始點,點擊“事務開始”按鈕插入事務, “Ir_start_transaction(“login”)”為事務開始的代碼,在選擇事務結束點,點擊“事務結束”按鈕,“Ir_end_transaction(“login”,LR_AUTO)”為事務結束的代碼。
以測試用例III的用戶登錄為例子,插入事務的代碼。這個事務起點為徐州工程學院網絡教學平臺首頁,結束點為我的課程頁面,事務運行結束即為登錄成功。
2) 集合點
LoadRunner 可以通過插入集合點的方式,來方便用戶區分功能點,當運行到這個集合點時,需要提交數據,控制器需要對這些數據進行檢查,判斷其是否達到最初設置的條件。多個集合點時,需要達到一定的用戶數量,才會讓所有用戶同時提交數據。
在測試用例I、 II、 III、 IV中并沒有加入集合點這個功能,而是通過事務之間的時間間隔去取代的。在測試用例V和測試用例VI中,為了保障測試時的負載情況,使用了集合點這一功能,對于先到達集合點的用戶,讓其停留等候,只有在所有用戶都完成了相關任務并且到達集合點,才在控制器的命令下所有用戶同時實現功能。在集合點按鈕界面,點擊“Insert”下拉菜單,選擇“Rendezvous”按鈕,插入集合點,在腳本編寫區生成插入集合點的代碼,為了保證負載情況,其中“Lr_rendezvous(“SubmitQueryData”)”為集合點代碼。
3) 腳本檢驗
對腳本進行優化處理之后,腳本就可以初步運行了。運行之后,VuGen會先對腳本進行編譯,判斷腳本是否存在語法錯誤。根據運行設置,開始從Generator中調試相關的腳本,腳本會根據Runtime Setting中的設置開始運行,并輸出相關日志。當腳本運行完成,如果沒有錯誤,而且從關鍵日志看,所有參數替換和動態關聯都成功,那么就表示腳本已經完全通過,可以使用。
3.3 測試方案執行
1) 創建負載測試場景
本次創建測試方案為手動方案,以測試用例 VI 為例,闡述如何創建負載測試場景,模擬 100 個用戶依次登錄網絡教學平臺,并且在一定時間內高強度訪問服務器。首先, 我們需要將 Load Generator 與 Controller 建立連接,在負載生成器中,可以看出目前使用的負載生成器為 local host,其狀態為 Down,平臺為 Windows7。點擊“Connect”按鈕,將Load Generator組件與Controller 組件建立連接,負載生成器狀態就會變成 Ready。然后,模擬真實環境,通過配置加壓的方式, LoadRunner 測試工具讓用戶逐步登錄并且逐步退出系統。同時,確定測試場景持續的時間和場景是以何種方式停止,可以更加準確地反映實際情況。
2) 運行負載測試
負載測試場景創建完畢,可以開始運行。根據上述的情況,將測試用例III 設置為設置 10 個Vuser,每10秒往上遞增1個 Vuser,持續一分鐘,按每 10 秒停止 1 個 Vuser,設置完負載參數,可以開始運行負載測試。如圖1所示為負載場景運行視圖,可以看出負載場景在運行期間的運行狀況,根據每個窗格可以查看不同的信息。
在場景運行結束,場景狀態窗格會顯示運行結果。如果運行中出現錯誤,在場景狀態窗格,顯示錯誤事務數和失敗的數量。從場景狀態,可以看出,紅色的區域為報錯的地方。
本例Login 這個事務,點擊“通過的事務”按鈕,通過的數量為 2396。點擊“失敗的事務”按鈕,失敗的數量為 4。點擊“錯誤消息”按鈕,查看場景運行過程中出現的一些錯誤。點擊“Details”按鈕,可以查看錯誤的詳細信息。
4 測試報告
LoadRunner 測試工具將使用Analysis組件對運行結果進行分析處理, 主要生成各種報告圖。在測試用例I、 II、 III、 IV、 V和VI中,測試結束,都會生成摘要報告。如圖2所示為測試用例 III 的 Analysis 摘要報告,上半部分可以看出統計信息摘要部分,顯示本次測試最大并發數為10,總吞吐量為249498501字節,平均每秒的吞吐量是1030985字節,總的請求數為88454,平均每秒的請求為365.512。從下半部分可以看出,事務摘要顯示的是, login這個事務的最小響應時間為0.037s, 最大響應時間為3.343s, 平均響應時間為0.132s, 標準響應時間為0.148s,90%響應時間為0.166s,其中通過的events為3150個,未通過的為0個。測試間的login事務的90%的響應時間為0.166s, 而平均響應時間為0.132s,90%的響應時間,略大于平均響應時間,這說明,只有10個用戶的時候,該網絡教學平臺的響應時間比較短,性能較好。
如圖3 所示為網絡響應摘要所示,LoadRunner共模擬了88454次請求,與統計信息摘要中的總請求數相同,其中“Http 200”的是88447次。 “Http 302”的是7次, “Http 200”表示服務器成功處理了請求, 并且請求被正確響應, “Http 302”表示服務器成功處理了請求,但是沒有返回任何內容。說明在本次過程中,發生的請求大部分都能正確響應,但還是有部分沒有得到任何返回內容,但是沒有影響到測試結果。
5 結論endprint
通過對網絡教學平臺這個網站進行分析,對其功能進行初步了解,然后設計出一套完善的測試方案。使用LoadRunner 性能測試工具,通過錄制測試腳本的方法, 能夠更加真實地模擬多個用戶操作,組合出較為真實的用戶場景,并且進行相關的調試工作,收集并整理測試數據,對相關數據進行合理的概括與分析,最終生成相關資料和測試報告。
參考文獻:
[1] Bozic J, Garn B, Kapsalis I, et al. Attack Pattern-Based Combinatorial Testing with Constraints for Web Security Testing[C].IEEE International Conference on Software Quality, Reliability and Security. IEEE, 2015:207-212.
[2] Novak S, Stefanovi? D, Popovi? M, et al. Web based system for automatic testing[C]. IEEE International Workshop on Consumer Electronics. IEEE, 2017:30-31.
[3] Khan R, Amjad M. Web application's performance testing using HP LoadRunner and CA Wily introscope tools[C]. International Conference on Computing, Communication and Automation. IEEE, 2017.
[4] 布朗.軟件測試:原理與實踐[M].北京:機械工業出版社,2012:78-131.
[5] 高麗萍. 云環境下自動化測試的研究與實現[D]. 西安:西安工業大學, 2016:20-32.
[6] 鄭潤萍. 基于LoadRunner的Web軟件性能瓶頸分析調優研究與實踐[D]. 廣州:華南農業大學, 2016:34-41.
[7] 魏娜娣,李文斌,裴軍霞.軟件性能測試[M].北京:清華大學出版社,2012:45-72.
[8] Abbas R, Sultan Z, Shahid N. Comparative Analysis of Automated Load Testing Tools: Apache JMeter, Microsoft Visual Studio (TFS), LoadRunner, Siege[C]. Internation Conference on Communication Technologies Comtech. 2017.endprint