萬鈞
摘要:當今社會的信息化建設模式主要包括自主開發(fā)、合作開發(fā)及外購商業(yè)軟件三種模式,這些軟件的整體性能是否滿足各建設單位需求,能否承受最大用戶數(shù)并發(fā)使用等一系列問題,一直困擾著各建設單位的信息化管理等相關部門。其中,隨著信息化建設發(fā)展,基于B/S架構的軟件系統(tǒng)已經(jīng)成為了各個建設單位信息化建設項目的主流。因此,為了提高軟件可靠性和效率,進一步驗證功能正確性,那么,從性能測試工作中總結研究出一套行之有效的針對B/S架構軟件系統(tǒng)的性能測試方法論變得尤為重要。
關鍵詞:性能;事務;負載;腳本;工序
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2017)27-0211-02
隨著軟件規(guī)模的不斷擴大,軟件質量問題已成為制約計算機發(fā)展的主要因素之一。其中,基于B/S架構的軟件系統(tǒng)正在成為各個建設單位信息化建設項目的主流。與以往的軟件相比,它有著不同于以往軟件的特點,主要體現(xiàn)在:數(shù)據(jù)庫集中、信息系統(tǒng)管理集中、業(yè)務管理集約化、用戶所在地域分布廣泛、數(shù)據(jù)量大、業(yè)務量大等方面。
由于存在以上這些特點,基于B/S架構的信息化軟件相比傳統(tǒng)軟件,帶來了非常大的優(yōu)越性,但同時也帶來了很多挑戰(zhàn),這是因為基于B/S架構的信息系統(tǒng)的大分布,決定了Web服務器要同時接受大量的數(shù)據(jù)請求。
通過驗證軟件系統(tǒng)是否能夠達到用戶提出的性能需求,發(fā)現(xiàn)軟件系統(tǒng)中存在的性能瓶頸,了解軟件系統(tǒng)的可靠性能力,才能達到不斷提高軟件系統(tǒng)性能的最終目的。
1 測試工序
性能測試工序主要包括:設計測試用例、搭建測試環(huán)境、創(chuàng)建測試腳本、設置方案場景、運行方案場景、分析測試結果幾大部分,見圖1。具體內容如下所述:
(1) 根據(jù)評審通過的軟件需求規(guī)格說明書中的性能需求部分,設計性能測試用例,包括:性能測試環(huán)境描述、所需測試功能點、測試場景設計、基礎數(shù)據(jù)量準備、所需監(jiān)控的各項性能指標等;
(2) 搭建性能測試環(huán)境,包括待測軟件系統(tǒng)的安裝與部署及性能測試工具(控制臺服務器與并發(fā)服務器)環(huán)境的搭建;
(3) 根據(jù)性能測試用例中的所需測試業(yè)務場景,通過腳本編輯器創(chuàng)建性能測試腳本,并將每個業(yè)務場景以事務(transaction)的形式添加到腳本之中;
(4) 根據(jù)性能測試用例中的測試場景設計、基礎數(shù)據(jù)量準備、所需監(jiān)控的各項性能指標,通過場景設計器對各種場景進行設置;
(5) 通過場景設計器運行每個場景,并分別記錄及保存性能測試結果;
(6) 最終借助測試結果分析器對性能測試結果進行分析和總結,形成性能測試報告。
2 測試工具
隨著軟件測試的地位逐步提高,測試的重要性逐步顯現(xiàn),測試工具的應用已經(jīng)成為了普遍的趨勢。目前用于測試的工具一般可分為白盒測試工具、黑盒測試工具、性能測試工具,測試管理工具(測試流程管理、缺陷跟蹤管理、測試用例管理)。
目前行業(yè)內比較流行的性能測試工具有很多種,例如:WAS、OpenSTA、QALoad、TeamTest、WebLoad、LoadRunner等。
3 測試方法
3.1 測試用例設計
性能測試用例主要分為預期目標用戶測試,用戶并發(fā)測試,疲勞強度與大數(shù)據(jù)量測試,網(wǎng)絡性能測試,服務器性能測試五大部分。設計測試用例時要根據(jù)實際情況進行裁減,在項目應用中遵守低成本、重策略、具體化等原則。性能測試用例設計策略需注意三點:一是要選擇典型的業(yè)務場景進行測試,尤其要選擇并發(fā)用戶數(shù)目較大的業(yè)務場景。二是要覆蓋全面,即設計出的用例要覆蓋到系統(tǒng)高峰期的主要業(yè)務場景。按照80/20法則,大約80%的用戶會集中在20%的時間段內進行頻繁操作,為了更好地體現(xiàn)出在不同用戶數(shù)使用下,系統(tǒng)的各項性能指標變化趨勢。三是要選擇合適的性能監(jiān)控指標,否則性能測試的整個過程會事倍功半。
另外,大多數(shù)用戶的真實使用場景中并不存在所有用戶只使用一個功能模塊的情況,而是每個功能模塊都有可能被用到,因此還需要適當采用組合業(yè)務性能測試方法。
3.2 Virtual User腳本開發(fā)
利用虛擬用戶腳本編輯器技術,可以將每個測試用例中的業(yè)務場景進行腳本語言轉化,形成性能測試工具可以識別的業(yè)務場景語言。
根據(jù)被測系統(tǒng)的開發(fā)框架不同,可以選擇Web(HTTP/HTML)、Web Services等針對基于B/S架構軟件系統(tǒng)的腳本框架協(xié)議進行腳本開發(fā)。開發(fā)過程中可以通過以下手段滿足不同性能測試要求:通過事務(Transaction)的封裝來獲取某個業(yè)務操作的響應時間;插入Text/Image檢查點,可以檢查Web服務器返回的網(wǎng)頁是否正確,驗證網(wǎng)頁上是否存在指定的Text或Image;腳本關聯(lián)技術,可以把腳本中某些寫死的(Hard-coded)數(shù)據(jù),轉變成是取自被測服務器所發(fā)送的、動態(tài)的數(shù)據(jù),繞過服務器端在每一次請求之后返回的唯一辨識碼(Session ID),提高腳本的正確性和可靠性。
3.3 測試場景運行
場景設計器的運行方式分為兩種:目標場景設置和手動場景設置。目標場景設置的目的是通過設置目標來驗證軟件系統(tǒng)能否達到預期目標,在項目最后確認質量時可以使用目標場景來完成最終的測試報告。目標場景設置中無法設置集合點策略,系統(tǒng)自動形成并發(fā)負載,定位瓶頸位置較難;手動場景設置可以定制化虛擬用戶的啟動策略、持續(xù)負載時間、事務運行思考時間等,盡可能真實的模擬系統(tǒng)負載狀態(tài)。
3.4 測試結果分析
性能測試結果分析是在整個性能測試過程中最為關鍵和重要的一個階段。無論用什么樣的測試工具和測試方法,都需要測試工程師利用其豐富的經(jīng)驗、精湛的技術對這些原始數(shù)據(jù)進行全面的邏輯分析和推導,才能得出正確的結論。endprint
性能測試結果分析需要遵循“由外到內,由表及里,層層深入”的基本原則。對于一個軟件系統(tǒng)來說,性能開始出現(xiàn)下降的最直觀表象就是系統(tǒng)的響應時間變長了,這時可以把系統(tǒng)響應時間作為分析性能的起點,要從原始測試數(shù)據(jù)中查看系統(tǒng)的響應時間是否滿足用戶的性能需求。下面我們主要講一下服務端性能問題的結果分析過程:
(1) 平均事務響應時間(Average Transaciton Response Time)是分析性能測試結果的第一步,根據(jù)測試結果來確定軟件系統(tǒng)變慢了的業(yè)務操作,它顯示了在測試場景運行期間的每一秒內事務執(zhí)行所用的平均時間,通過它可以分析測試場景運行期間應用系統(tǒng)的性能走向。
(2) 每秒事務數(shù)分析(Transaction per Second)顯示在場景運行的每一秒中,每個事務通過、失敗和停止的數(shù)量,是考察系統(tǒng)性能的一個重要參數(shù),通過它可以確定系統(tǒng)在任何指定時刻的實際事務負載,也可以直接看出系統(tǒng)的性能變化趨勢。并且可以將其與平均事務響應時間圖進行對比,以分析事務數(shù)對響應時間的影響。
(3) 點擊率(Hits per Second),即每秒點擊次數(shù),顯示了在場景運行過程中虛擬用戶每秒向Web服務器提交的HTTP請求數(shù),可依據(jù)點擊次數(shù)來評估虛擬用戶產(chǎn)生的負載量,還可將其與平均事務響應時間圖進行比較,以查看點擊次數(shù)對事務性能產(chǎn)生的影響
(4) 吞吐率(Throughput),顯示場景運行過程中服務器每秒的吞吐量。表示虛擬用戶在任何給定的某一秒上從服務器獲得的數(shù)據(jù)量??梢砸罁?jù)吞吐量來評估虛擬用戶產(chǎn)生的負載量,吞吐量的單位是字節(jié)。
(5) Windows系統(tǒng)資源(Windows Resources),表示了服務端的各項監(jiān)控指標表現(xiàn)情況,圖3為被測系統(tǒng)的Windows系統(tǒng)資源監(jiān)控圖。
除了上面介紹的分析指標外,根據(jù)不同的實際情況還需有選擇性的針對每秒HTTP響應數(shù)、連接數(shù)、每秒服務器重試次數(shù)、場景運行期間服務器重試摘要等指標進行結果分析,這里不再一一撰述。
4 結束語
性能測試是一項找到軟件系統(tǒng)性能瓶頸“攻堅戰(zhàn)”中的重要過程,需要通過對系統(tǒng)層層深入的分析,才能對問題進行更加準確的定位。本文對基于B/S架構軟件系統(tǒng)的性能測試提出了一套較為全面的性能測試方法論。通過測試用例設計、Virtual User腳本開發(fā)、測試場景運行、測試結果分析等一系列測試工序,發(fā)現(xiàn)軟件系統(tǒng)的性能瓶頸,同時找出引起性能下降的原因,為優(yōu)化系統(tǒng)提供重要依據(jù)。
參考文獻:
[1] 張大陸,偉力.基于WEB應用系統(tǒng)的評測方法和技術[J].計算機工程,2003,29(4).
[2] 中國軟件評測中心測試中心. 性能——軟件測試的重中之重[J],2003.
[3] 劉群策.LoadRunner和軟件項目性能測試[M].北京:機械工業(yè)出版社,2008.
[4] 姜昌華,朱敏.Web應用程序壓力測試[J].計算機應用,2003,23(10).
[5] 李煜,苗放.LoadRunner在Web應用程序性能測試中的應用[J].軟件導刊,2007.
[6] 劉艷會.LoadRunner使用手冊[A].軟件測試中心,2003-8-21.endprint