宋士濤
(1.國家網(wǎng)絡軟件產(chǎn)品質(zhì)量監(jiān)督檢驗中心(濟南), 山東 濟南 250014;2.山東省軟件產(chǎn)品質(zhì)量監(jiān)督檢驗中心,山東 濟南 250014)
?
一種Web應用系統(tǒng)性能測試流程及其應用研究
宋士濤1,2
(1.國家網(wǎng)絡軟件產(chǎn)品質(zhì)量監(jiān)督檢驗中心(濟南), 山東 濟南 250014;2.山東省軟件產(chǎn)品質(zhì)量監(jiān)督檢驗中心,山東 濟南 250014)
摘要:結(jié)合LoadRunner、Segue和PTGM性能測試過程模型,提出了一種有效的Web應用系統(tǒng)性能測試流程,涵蓋從項目策劃、測試方案到結(jié)果分析并出具報告的全過程,并引入控制庫來保證過程中每個階段的成果質(zhì)量。應用本測試流程,完成了某Web應用系統(tǒng)的性能測試工作,獲取了各項預期結(jié)果,證明了該流程的可靠性。
關(guān)鍵詞:性能測試; Web系統(tǒng); 測試流程; LoadRunner測試模型
軟件測試作為軟件質(zhì)量保證的重要手段,是解決軟件危機的重要途徑,在整個軟件生命周期中占有非常重要的位置[1]。為了保證Web應用的可用性和高效性,系統(tǒng)上線前必須對Web應用進行性能測試,提前暴露出系統(tǒng)的性能問題,并提供一定數(shù)量的分析數(shù)據(jù)來優(yōu)化系統(tǒng),有效地提高系統(tǒng)的可靠性和可用性。
Web應用系統(tǒng)性能測試不同于功能性測試,功能測試關(guān)注產(chǎn)品的所有功能,要考慮到每個細節(jié)功能,每個可能存在的功能問題,而性能測試是通過自動化的測試工具模擬多種情況來對系統(tǒng)的各項性能指標進行測試,主要關(guān)注多用戶并發(fā)情況下產(chǎn)品的性能瓶頸并加以優(yōu)化,從而保證程序在實際中提供良好和可靠的性能[2]。因此,在性能測試過程中,要考慮系統(tǒng)運行時各種正常、峰值以及異常負載情況,確定并發(fā)用戶數(shù)以及關(guān)鍵功能點等[3]。
性能測試應遵循一定的測試流程,通常稱這種流程為性能測試過程模型[4]。常見的Web系統(tǒng)性能測試過程模型有LoadRunner過程模型[5]、Segue過程模型和PTGM過程模型[6]等。
LoadRunner過程模型將性能測試過程分為計劃測試、測試設計、創(chuàng)建VU腳本、創(chuàng)建測試場景、運行測試場景和分析結(jié)果6個步驟,涵蓋了性能測試工作的大部分內(nèi)容,但由于該過程過于緊密地與LoadRunner工具集成,沒有兼顧使用其他工具或用戶自行設計工具的需求[5]。
Segue過程模型從確定性能基線開始,通過單用戶對應用的訪問獲取性能取值的基線,然后設定可接受的性能目標,用不同的并發(fā)用戶數(shù)等重復進行測試。這種性能測試方法非常適合性能調(diào)優(yōu)和性能優(yōu)化,通過不斷重復的try-check過程,可以逐一找到可能導致性能瓶頸的地方并對其進行優(yōu)化。但該測試過程同LoadRunner過程一樣,同樣過于依賴工具本身,另外缺乏對計劃、設計階段的明確劃分,也沒有給出具體的活動和目標[6]。
PTGM過程模型參考了各種不同的性能測試、分析等模型,囊括了從“測試團隊組建”到“測試分析”的全部過程,為每個步驟設計了相應的活動,是一個非常有實踐指導意義的性能測試模型[6]。
總體而言,前兩個模型為基于工具的性能測試模型,通用性較差;PTGM模型通用性較強,但對性能指標與測試影響因素的界定及具體的性能需求分析能力相對不足[7-8]。為了彌補現(xiàn)有性能測試流程存在的問題,本文結(jié)合多種性能測試過程模型,在長期工作實踐的基礎(chǔ)上,提出了一套有效的性能測試流程。
1性能測試過程模型
該流程分為測試項目策劃、制定測試方案、測試設計、測試執(zhí)行、測試評估和結(jié)果分析以及報告生成6個步驟,如圖1所示。
圖1 軟件性能測試過程流程圖Fig.1 Flowchart of software performance testing process
1.1測試項目策劃
項目策劃階段是測試工作的起點,當項目組接到測試任務后,首先對被測軟件進行測試需求概要分析,根據(jù)分析結(jié)果確定項目組織架構(gòu),并制定總體實施計劃。
1.2制定測試方案
測試方案是測試過程的根本,是測試設計、測試執(zhí)行階段的指導性文件。在方案中,需詳細分析被測軟件性能需求、特點和運行環(huán)境,得出此次性能測試的主要功能點、測試過程中的數(shù)據(jù)量、并發(fā)用戶數(shù)(包括系統(tǒng)運行高峰期用戶數(shù)和正常情況下的用戶數(shù))和用戶分布情況等,并確定將要測試的性能指標。此外,對測試工具、測試方法、測試策略和測試場景等進行詳細定義,以指導測試人員據(jù)此進行測試設計。
在項目的管理方面,測試方案還將確定測試工作組的組織架構(gòu),以合理安排測試的組織與人員,確保按時完成任務;決定測試準入準出條件、制定質(zhì)量保證計劃、配置管理計劃和風險管理計劃等,以保證整個性能測試過程的順利進行[9]。
1.3測試設計
本階段將依據(jù)測試方案的規(guī)定完成測試環(huán)境的搭建,并進行測試設計。性能測試過程的測試設計不同于功能測試的設計,主要包括性能測試用例的設計、開發(fā)并完善測試腳本和設置測試場景等。在性能測試過程中,測試場景是一種用來模擬大量用戶操作的技術(shù)手段,通過配置和執(zhí)行場景可向服務器產(chǎn)生負載,以驗證系統(tǒng)各項性能指標是否達到用戶要求。測試腳本是通過測試工具,錄制軟件執(zhí)行過程并完善得到的腳本,為測試場景設計做準備[10]。性能測試用例是測試腳本、測試場景的基礎(chǔ),一個好的性能測試用例,將能夠指導測試腳本的開發(fā)及完善,并指導在測試腳本基礎(chǔ)之上的測試場景的設置[11]。因此在用例中需要定義用戶并發(fā)數(shù)、所涉及主要功能點的操作步驟、集合點的設置、檢查點的設置、參數(shù)化的設置、測試場景設置中運行時設置要求以及將要監(jiān)控的性能指標等。
1.4測試執(zhí)行
測試執(zhí)行是已設置好的測試場景執(zhí)行的過程。需要注意的是,在測試執(zhí)行時,一定要盡可能地模擬被測系統(tǒng)的真實使用環(huán)境,包括硬件環(huán)境、軟件環(huán)境和數(shù)據(jù)環(huán)境,要真實地還原被測系統(tǒng)的應用現(xiàn)場。一般情況下,測試場景的執(zhí)行按照測試方案中對測試策略的規(guī)定執(zhí)行,在進行壓力測試時,為了尋找性能瓶頸,當對相同的場景進行不同用戶數(shù)的測試執(zhí)行時,可采用折半查找法的方式設置并發(fā)數(shù),以減少測試時間,加快測試效率。同時,測試執(zhí)行中,為了保證測試結(jié)果可復現(xiàn)、可查詢,要保存測試場景及測試結(jié)果電子數(shù)據(jù)。
1.5測試評估
測試執(zhí)行完成之后,測試組應回溯測試過程,評估測試質(zhì)量,以確保測試結(jié)果的客觀、真實和有效。評估過程中發(fā)現(xiàn)與預期結(jié)果差距非常大的,應返回重新執(zhí)行測試。
1.6結(jié)果分析及報告生成
本階段包括測試結(jié)果分析與總結(jié),以及生成測試報告,是性能測試過程中最后的階段,也是最能體現(xiàn)性能測試價值的階段。通過對系統(tǒng)響應時間、TPS、資源使用率、用戶并發(fā)數(shù)、吞吐量和網(wǎng)絡流量等主要性能指標的分析,對系統(tǒng)做出性能評價,同時定位被測系統(tǒng)性能瓶頸,為系統(tǒng)性能調(diào)優(yōu)提供證據(jù)支持,給出改進方案[10]。
除上述步驟外,在性能測試過程的每個階段,都需要對階段性的成果進行評審,確保階段性成果的正確性,經(jīng)評審通過的階段性成果,需作為基線納入文件控制庫,測試項目組任何人未經(jīng)允許不得隨意修改。
2實例分析
基于上文提出的性能測試流程,以某軟件公司設計的工礦企業(yè)能耗系統(tǒng)為對象,對其進行性能測試,并對測試結(jié)果進行了深入分析。針對本文所提出流程與現(xiàn)有其他流程的不同之處,主要進行測試工具的選擇、性能指標與測試影響因素的界定以及具體的性能需求分析。
2.1項目策劃
首先對被測系統(tǒng)進行概要分析。該系統(tǒng)是一款基于B/S結(jié)構(gòu)的、適用于工礦企業(yè)的信息管理系統(tǒng)。通過對系統(tǒng)性能需求進行概要分析,初步確定了性能指標及測試影響因素,結(jié)合系統(tǒng)規(guī)模,確定了三人規(guī)模的性能測試組織架構(gòu)(不含質(zhì)量管理人員和配置管理人員),并制定了總體實施計劃。
2.2制定測試方案
PTGM模型雖然通用性較強,但對性能指標與測試影響因素的界定及具體的性能需求分析能力相對不足。我們提出的性能測試流程在保持流程通用性的同時,加強了對測試需求分析和其他相關(guān)要素分析環(huán)節(jié)的關(guān)注度,增強了性能需求分析能力,以確定性能指標及其他影響測試的因素。同時,增加了測試準入和準出條件的設定,以求盡可能地減少影響測試的其他因素,彌補了PTGM模型的不足。
2.2.1測試需求分析
經(jīng)過對被測系統(tǒng)進行詳細需求分析,認為作為一個工礦企業(yè)信息管理系統(tǒng),為了滿足企業(yè)內(nèi)部信息管理要求,該系統(tǒng)性能需求應涵蓋軟件質(zhì)量特性的時間特性和資源利用性[12]。相應地,在之后的測試中將選擇單一業(yè)務基準測試、正常使用情況時一定并發(fā)用戶數(shù)下的負載測試及長時間疲勞測試、并發(fā)用戶數(shù)峰值情況下的壓力測試和目標場景測試等,并重點關(guān)注以下性能指標[13]:數(shù)據(jù)庫、服務器CPU平均使用率、可用內(nèi)存比率、各主要功能的響應時間和TPS。同時,為了更客觀地監(jiān)測及分析系統(tǒng)性能,我們增加網(wǎng)絡流量、事務成功率等性能指標。
2.2.2測試相關(guān)要素分析
為了測試上述性能指標,需確定哪些功能為系統(tǒng)主要功能及并發(fā)用戶數(shù)、用戶分布比例、系統(tǒng)正常運行時的數(shù)據(jù)量規(guī)模等情況[14]。主要功能的選取原則如下:
(1)業(yè)務使用頻率高;
(2)單位時段內(nèi)目標用戶比較集中;
(3)業(yè)務操作的關(guān)聯(lián)數(shù)據(jù)量較大。
根據(jù)以上條件,我們確定了系統(tǒng)中參與性能測試的主要功能,包括系統(tǒng)登錄、統(tǒng)計報表、數(shù)據(jù)分析和系統(tǒng)管理等模塊下的功能。同時,根據(jù)系統(tǒng)運行實際,確定了系統(tǒng)運行高峰時期并發(fā)用戶數(shù)為1 000,各種不同角色的用戶按一定比例分布(分布比例在此不作贅述),數(shù)據(jù)量參考系統(tǒng)正常運行一年后的情況。
此外,還對系統(tǒng)性能指標的性能拐點作出了規(guī)定,以確定何時中止測試。
2.2.3測試工具、方法和策略
LoadRunner過程模型和Segue過程模型都對測試工具進行了限定,而目前市場上的測試工具有多種,其中主要的有QALoad、SilkPerformer和HP-MercuryLoadRunner等。如果一個測試流程過分依賴測試工具,將大大增加它的局限性。我們提出的測試流程并未對測試工具進行限制,在此,采用HP-MercuryLoadRunner進行本次測試。LoadRunner是一種預測系統(tǒng)行為和性能的負載測試工具,通過模擬實際用戶實施并發(fā)負載及實時性能監(jiān)測的方式來確認和查找系統(tǒng)的瓶頸[15]。
在測試過程中,我們對上節(jié)選定的主要功能均進行多用戶并發(fā)情況下的單一功能業(yè)務場景測試,以取得該功能點在某個高峰期接收到大量的并發(fā)請求時的性能狀況。此外,對所有主要的功能點,還將進行混合功能業(yè)務場景測試,模擬實際系統(tǒng)的使用情況,以得知各功能點的響應時間及此時的系統(tǒng)性能狀況。另外,設計目標場景,驗證該系統(tǒng)是否達到需求目標。
由于確定系統(tǒng)高峰時用戶并發(fā)數(shù)為1 000,但是在實際測試之前并不能確定系統(tǒng)是否能夠滿足此并發(fā)用戶數(shù)的要求,因此在設計測試策略時,針對某一功能或混合業(yè)務功能,首先模擬500個用戶并發(fā), 若500用戶并發(fā)執(zhí)行時沒有出現(xiàn)性能拐點,則模擬1 000個用戶并發(fā),以得知各功能操作的響應時間情況,每秒通過的交易數(shù)以及服務器端的資源利用情況等。通過上述測試策略,可得知系統(tǒng)在1 000用戶數(shù)并發(fā)情況下的性能情況。
2.2.4測試準入和準出條件
測試的準入與準出條件的設定,將會影響測試結(jié)果的準確性。本次測試準入條件主要包括項目組技術(shù)支持人員和軟、硬件資源到位,被測系統(tǒng)運行環(huán)境和數(shù)據(jù)準備完畢;準出條件為測試場景按要求執(zhí)行完畢并完成了測試結(jié)果的收集整理工作。
2.2.5其他
除了上述與測試密切相關(guān)的方面外,測試方案中還包括項目管理的諸多方面:項目組織實施、質(zhì)量保證計劃、配置管理計劃和風險管控計劃。這些方案的合理制定,將保證整個性能測試工作的順利實施,排除影響測試結(jié)果的不穩(wěn)定因素,對測試質(zhì)量提供有力的保障。
2.3測試設計與執(zhí)行
在本階段,我們按照性能測試過程模型中對于性能測試用例設計的要求,對測試方案中所選定的功能點進行用例設計。系統(tǒng)中其中一個功能點“采集方案日志”的性能測試用例設計見表1。
表1 某功能點性能測試用例舉例
根據(jù)上述測試用例,即可完成測試腳本的開發(fā)與完善,并生成測試場景,按照測試策略的規(guī)定進行執(zhí)行,取得測試結(jié)果。當用戶并發(fā)數(shù)為1 000時,系統(tǒng)資源使用情況分析如圖2所示。從圖中可以看出,系統(tǒng)CPU利用率長時間穩(wěn)定在70%~80%之間,平均值為72.935%,認為滿足用戶提出的CPU低于80%的需求。
圖2 1 000用戶并發(fā)執(zhí)行采集方案日志查詢時的系統(tǒng)資源圖Fig.2 System resource diagram when 1 000 users executing collection plan log query
2.4測試結(jié)果分析及報告生成
對測試結(jié)果進行評估通過之后,即進入測試結(jié)果分析及報告生成階段。2.3中測試用例執(zhí)行結(jié)果分析見表2。
表2 某功能點性能測試結(jié)果
根據(jù)測試結(jié)果,在該功能點有多用戶并發(fā)請求時,CPU平均使用率在用戶需求范圍之內(nèi),但已經(jīng)接近用戶需求限度值;內(nèi)存平均使用率滿足用戶需求;平均響應時間等在用戶預期的范圍內(nèi)。
綜合測試過程中所有的測試用例執(zhí)行結(jié)果,通過分析,我們得出如下結(jié)論:
在模擬用戶使用環(huán)境的情況下,數(shù)據(jù)庫、服務器可用內(nèi)存比率、各主要功能的響應時間均滿足用戶需求,并且可長期穩(wěn)定運行,系統(tǒng)各主要功能的TPS也能達到要求,雖然數(shù)據(jù)庫、服務器CPU平均利用率稍高,但仍在可接受的范圍內(nèi),故軟件整體質(zhì)量評價為合格。建議優(yōu)化系統(tǒng),降低CPU平均使用率。
3結(jié)語
Web應用系統(tǒng)性能作為軟件系統(tǒng)質(zhì)量的一個重要方面,對系統(tǒng)上線后的正常使用,尤其是訪問高峰期的正常使用有著至關(guān)重要的作用。通過性能測試實例,本文詳細介紹了性能測試流程,并根據(jù)性能測試結(jié)果對軟件質(zhì)量進行了評價,提出了改進建議,驗證了性能測試流程的可用性和可靠性。下一步,我們將對分布式Web應用系統(tǒng)的性能測試進行研究,對本文提出的性能測試流程進行改進,以擴大其應用范圍。
參考文獻:
[1]薛沖沖,陳堅.軟件測試研究[J].計算機系統(tǒng)應用,2010,20(2):240-244.
[2] 董娜.Web系統(tǒng)軟件性能測試的研究[D].廣州:暨南大學,2008.
[3] 陳小輝.Web性能測試技術(shù)的研究與實踐[D].上海:華東師范大學,2010.
[4] 連志剛.Web系統(tǒng)性能測試過程模型研究[D].西安:西北大學,2012.
[5] 蘇波.基于Web應用的性能測試研究[D].北京:中國石油大學,2007.
[6] 段念.軟件性能測試過程詳解與案例剖析[M].北京: 清華大學出版社,2006:23-24.
[7] 惠斌武,陳明銳,楊登攀.Web應用系統(tǒng)性能測試研究與應用[J].計算機應用,2011,31(7):1769-1772.
[8] 朱經(jīng)紛,徐拾義.軟件可靠性綜合模型的分析和研究[J].計算機科學,2009,36(4):181-184.
[9] 崔麗娜.基于CNAS準則的軟件測試方法與實踐[D].北京:北京郵電大學,2012.
[10] 石磊.Web應用系統(tǒng)性能測試模型研究與應用[J].軟件導刊,2012,11(6):83-84.
[11] 陳虹.軟件測試方法研究[J].軟件導刊,2013,12(4):24-25.
[12] GB/T 16260.2-2006, 軟件工程 產(chǎn)品質(zhì)量 第2部分:外部度量[S].
[13] 鄧璐娟,范乃梅,孫義坤,等.基于Web應用的性能測試模型研究[J].計算機工程與應用,2013,49(1):75-77.
[14] 孔平.用LoadRunner對網(wǎng)站進行性能測試[D].北京:北京交通大學,2011.
[15] 陳霽.性能測試進階指南:LoadRunner 11 實戰(zhàn)[M].北京: 電子工業(yè)出版社,2013:37-37.
PerformancetestprocessofaWebapplicationsystemanditsapplication
SONGShi-tao1,2
(1.NationalNetworkSoftwareTestingCentre(Jinan),Jinan250014,China;
2.ShandongSoftwareProductQualitySupervision&InspectionCenter,Jinan250014,China)
Abstract∶We present an effective performance testing process model for a Web application system, based on LoadRunner, Segue and PTGM performance testing models.It covers the whole process from project plan, testing policy, to result analysis and test report output.We introduce a control library to guarantee fruit quality at every stage in a test process.We finish performance testing process for a given Web application system with the model, obtain all expected results,and verify its reliability.
Key words∶performance test;Web system;test process model;LoadRunner testing model
中圖分類號:TP311
文獻標識碼:A
文章編號:1002-4026(2015)04-0094-07
作者簡介:宋士濤(1983-),男,工程師,碩士,研究方向為軟件測試技術(shù)。Email:songshitao2008@163.com
基金項目:山東省質(zhì)量技術(shù)監(jiān)督局科技計劃(2013KY22)
收稿日期:2014-12-19
DOI:10.3976/j.issn.1002-4026.2015.04.018