黃小林+申珅


摘 要:本文使用LoadRunner工具對貼吧網站進行Web性能測試。貼吧是為學生們提供一個互動的空間。在開發和使用過程中,不可避免地會出現用戶訪問規模大、負載重等性能方面的問題。因此,可以采用LoadRunner專業工具,進行性能測試,檢測這些問題。首先,通過對項目分析,設計完善的測試方案;然后,錄制相關腳本,對腳本進行優化處理,并模擬多用戶并發,設計場景;最后,對測試用例進行系統化的整理,生成測試分析報告。本文為研究采用LoadRunner工具對Web網站進行自動化測試提供一種技術方案。
關鍵詞:Web;性能測試;自動化測試;LoadRunner
中圖分類號:TP311 文獻標識碼:A
Abstract:In this paper,LoadRunner tools are applied to implement web performance testing on post bars.Post bars provide students with interactive space.In the development and application of post bars,some performance problems are unavoidable,such as the excessive load caused by too many visitors.Therefore,professional LoadRunner tools can be applied to implement performance testing and detect the problems.Firstly,the paper designs a thorough test scheme based on the project analysis.Then,the paper records and optimizes relevant scripts,simulates multi-user concurrency,and designs the scene.Finally,the test cases are systematically organized to generate test analysis reports.This paper offers a technical solution to automated website testing with LoadRunner tools.
Keywords:web;performance testing;automated testing;LoadRunner
1 引言(Introduction)
本測試主要針對徐州工程學院貼吧進行性能方面的測試,目的是檢測網站功能和性能上的缺陷,完善該平臺。性能測試是指在軟件開發后期,為了證實該軟件的可用性、穩定性和可靠性,通過增加變換負載對軟件系統進行的壓力測試,主要目的是檢測出軟件系統最大承受的負載量是否能夠達到需求的標準[1]。
測試方法為基于LoadRunner的負載測試。測試目標為檢測出軟件系統能承受的最大負載和檢測性能是否符合基本客戶要求。通過不斷改變負載環境來全面檢測系統性能,避免性能盲點,以及一臺計算機運行腳本、多臺客戶機進行重復,并給出這種方法在Web應用性能測試實踐中的一個具體應用[2]。
LoadRunner是當下測試工作中較為常用的負載測試工具[3]。該軟件分為三個部分,先由測試者根據需求自行錄制對應的腳本,再通過設置負載環境對腳本進行用戶模擬操作,最后使用自動化分析插件對運行結果進行分析,生成線形圖。
2 LoadRunner功能(LoadRunner features)
2.1 LoadRunner術語
(1)場景:場景文件是根據性能需求來定義每次測試期間通過的事務。
(2)Vuser:虛擬用戶處于場景中,LoadRunner用虛擬用戶來代替真實用戶,模仿真實用戶的操作來使用應用系統。一個場景可以包含成百上千個Vuser。
(3)腳本:腳本描述Vuser在場景中所執行的動作。
(4)事務:要檢測服務器的性能,首先需要定義事務。事務表示要評測的終端用戶業務流程。
2.2 創建虛擬用戶
通過使用Virtual User Generator組件[4],錄制相關用戶腳本。首先模擬真實用戶操作,錄制相關模塊的腳本,待錄制完畢,對腳本進行優化處理。然后將其轉換成測試腳本。該組件通過模擬真實環境的業務操作來對網站進行性能測試,讓很多虛擬用戶模擬真實用戶,并發操作,對服務器進行負載。利用這些虛擬用戶,測試人員能夠在多個服務器上并發訪問網站,從而對服務器生成負載。LoadRunner測試工具能有效地減少測試過程中的資源耗費。在通過Virtual User Generator組件創建并優化測試腳本后,需要對相關參數進行設置,可以通過模擬多種實際情況來測試網站性能。
2.3 創建真實的負載
在建立虛擬用戶之后,測試人員需要根據測試需要來確定虛擬用戶的數量,從而更好地測試網站性能[5]。利用LoadRunner測試工具中的Controller組件,能夠快速設置測試場景,并且確定虛擬用戶數,并明確測試方案。Controller組件中有一個Rendezvous功能,能夠有效提供給測試人員一個互動的環境,讓負載循環操作,并且能夠讓測試人員更好地管理負載測試方案。同時,測試人員還可以設定虛擬用戶訪問網站的時間對網站設定不同的負載。在一定程度上,讓測試過程更加智能化。Controller組件還可以設定虛擬用戶同時執行,從而達到模擬峰值數據的目的。endprint
2.4 定位性能問題
LoadRunner測試工具中,有一個實時監測的功能。在運行測試過程中,測試人員可以通過折線圖來觀察系統每個時間段的運行情況。這樣,測試人員可以及時發現系統運行過程中性能的不足,能夠實時定位性能的弱點。通過LoadRunner中的ContentCheck TM組件,還能有效判斷哪個模塊的哪個功能是否正常運行。ContentCheck組件在虛擬用戶運行過程中,能夠判斷是否有錯誤數據傳出,能夠有效地幫助測試人員查看系統性能情況。
2.5 測試報告
當測試結束以后,LoadRunner會自動收集并匯總,生成測試結果數據,提供高級的分析報告,測試人員可通過此工具及時發現性能問題并進行實時反饋。使用分析工具,可以很快地查找到缺陷所在,并及時將錯誤內容和需要改進的地方做出反饋。
通過Controller對目標進行負載測試之后,進入Analysis進行性能測試分析,擬寫測試報告。完整的測試報告應當包含幾個部分[6]:
(1)摘要報告:查看平均時間、最大時間、前一次時間等各項數據。
(2)Vuser日志:虛擬用戶在運行的過程中所產生的運行明細。
(3)測試狀態(Controller中查看):查看虛擬用戶在場景中的運行情況。
(4)正在運行的Vuser:在指定的時間內Vuser運行的數量。
(5)每秒點擊次數線形圖:根據線形圖觀察用戶對服務器發出的請求量。
(6)吞吐量:單位時間內傳輸數據的數量(以比特、字節、分組等測量)。
(7)事務概要:查看在特定數量的并發用戶運行時,能夠通過的事務數量和不能通過的事務數量。
(8)事務響應時間:在特定時間內,隨著并發用戶數量的變化而變化的事務響應所需的時間。
(9)CPU和內存使用情況:隨著時間和并發用戶數量的變動,CPU占用百分比和內存占用量產生的變化。
3 測試項目(Project undertesting)
黑盒測試主要采用自動化測試的方法。選用LoadRunner這個測試工具,對貼吧重要的功能進行性能測試,找出運行缺陷,從而擬寫完善的測試報告。
3.1 測試內容
測試用戶注冊、用戶登錄、我的帖子和我的設置這四個大模塊,其中我的帖子測試中包括四個子功能的測試:發帖、刪帖、評論和回復;我的設置測試中也包括四個子功能的測試:簽到、關注、刷新和分享。根據這些內容編寫測試用例,對每個功能進行測試分析,從而發現缺陷,完善功能。
3.2 測試思路
根據對徐州工程學院百度貼吧實際運用中出現的特點,分析出徐州工程學院貼吧在實際運用中將會出現以下特點:
(1)VIP用戶模塊使用率較低,普通用戶使用率很高。
(2)主任務為登錄、發帖、頁面的切換。
(3)負載期間,將會有大量用戶登錄,相應模塊的壓力增強。
(4)結合本校和百度貼吧的普及率考慮,特定時間段預計登錄人數約為10到500人,相應的測試方案也會在此基礎上形成。
3.3 測試方案設計
網站主要操作為用戶登錄、用戶注冊和游客瀏覽等功能,可以確定主任務為用戶注冊、用戶登錄、發帖評論和游客頁面切換。
基本流程為(1)進入頁面首頁,點擊注冊按鈕。(2)進入用戶注冊頁面,輸入用戶注冊的賬號和密碼,點擊發送驗證碼,輸入驗證碼。(3)注冊成功,跳轉到貼吧首頁并且自動登錄。(4)點擊發帖按鈕,在標題和正文文本框中輸入內容,點擊“我要發表”發表成功。(5)點擊進入帖子頁面。點擊“我也說一句”按鈕,輸入內容,點擊發表。(6)點擊刪除按鈕,確認刪除。(7)退出登錄,返回徐州工程學院貼吧首頁。
根據測試思路,本次測試將創建Vuser腳本去模擬用戶在操作時的不同情況,根據測試目標去定義虛擬用戶并發形式、并發數量,設置合適的負載,并且在錄制過程中將腳本完善、具體化,用集合點來模擬高峰期的使用情況。
3.4 測試用例設計
測試用例Ⅰ為10Vuser低負載發帖操作,測試用例Ⅱ為50Vuser中負載發帖操作,測試用例Ⅲ為500Vuser高負載發帖操作,測試用例Ⅳ為10Vuser低負載注冊登錄操作,測試用例Ⅴ為50Vuser中負載注冊登錄操作,測試用例Ⅵ為500Vuser高負載注冊登錄操作。根據本次測試的需求情況,從所有用例中篩選出6個較為典型的測試用例。
以測試用例Ⅲ為例,測試場景描述:總共登錄500個用戶,登錄模式為每5秒100個用戶并發操作。(1)用戶在用戶發帖模塊中活動,過程包括:輸入標題與正文內容,界面輸出相應數據,此過程重復兩次。(2)用戶點擊“我要發表”鏈接,提交并提示發表成功。(3)用戶進行界面切換,順序為:主頁面、帖子界面。(4)返回用戶主頁并退出。
4 測試報告(Report)
4.1 性能概要
以測試用例Ⅲ為例,Analysis對腳本運行的結果的摘要報告如圖1所示。
4.2 圖形方式查看性能
(1)正在運行Vuser
運行開始后,虛擬用戶的數量逐步增加,之后逐步遞減。并發線形圖如圖2所示。
(2)吞吐量
吞吐量指的是系統在負載測試中單位時間內通過的事務數量即交換的數據量。如圖3所示為測試用例Ⅲ吞吐量的情況,網絡資源呈平穩趨勢。
(3)平均事務響應時間
圖4中曲線表示action,通過觀察可以看出,隨著虛擬用戶的增加,action沒有呈現穩定趨勢,而且突然急劇拉長呈快速上升和下降趨勢。因此,當并發用戶為500時,服務器無法承受這樣的負載,將會崩潰。endprint
(4)每秒點擊次數
每秒點擊次數表示用戶每秒向Web服務器發出的請求次數,服務器承受的壓力與點擊次數成正比,通過查看點擊對服務器產生的影響來進行性能分析。運行的初期,縱坐標有很大的波動,當虛擬用戶開始減少時,縱坐標趨向穩定,結合running vuser進行觀察,當虛擬用戶在50左右時,性能相對達到比較穩定的階段。
(5)事務概要
圖5中,最高柱形圖為未通過事務,最低柱形圖為通過的事務,最后兩個為被終止的事務??梢钥闯?,大部分事務都沒有通過,因此當虛擬用戶為500時,性能很不穩定,服務器幾近崩潰,性能達到一個瓶頸。虛擬用戶為10時,運行良好,不能說明性能有問題。
5 結論(Conclusion)
通過設計測試用例,使用LoadRunner錄制腳本,通過Controller模擬多用戶并發測試場景,調試,收集測試數據,再由Analysis對測試的結果進行分析探討,對貼吧性能實現了初步的檢測并最終生成測試報告。測試結果顯示的是貼吧服務器軟件各事務的平均響應時間與負載的關系;當虛擬用戶并發量達到60的時候,通過率極佳,比重約為100%。在所有通過的事務之中,登錄事務所占比重最大,這個決定因素主要在于事務的性質;在高并發高負載的情況下,事務響應時間和每秒點擊次數會發生驟升,也就是通過這樣的情況來檢測系統的瓶頸所在;當并發用戶達到300時,服務器會直接面臨崩潰。
參考文獻(References)
[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] 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:56-61.
[4] 陳英,孫忠林.基于LoadRunner的Web系統性能測試與優化[J].軟件導刊,2017,16(9):26-27.
[5] 宋巍,張春柳,鄔斌亮.Web系統性能測試研究與實踐[J].計算機應用與軟件, 2015(3):4-6.
[6] 魏娜娣,李文斌,裴軍霞.軟件性能測試[M].北京:清華大學出版社,2012:45-72.
作者簡介:
黃小林(1975-),男,碩士,實驗師.研究領域:軟件測試,軟件開發.
申 珅(1980-),女,碩士,講師.研究領域:軟件測試,智能優化.endprint