虞 鵬,賈 婧
企業(yè)軟件建設(shè)模式為自主開發(fā)與合作開發(fā)相結(jié)合,同時還需外購部分商業(yè)軟件。這些軟件的整體性能能否滿足企業(yè)需求,能否承受企業(yè)最大并發(fā)用戶數(shù)等等問題一直困擾著企業(yè)信息管理部門。而隨著企業(yè)信息化發(fā)展,基于B/S架構(gòu)的軟件正在成為現(xiàn)有軟件模式的主流。
本文就是基于這種需求,為了加強軟件項目管理,理順軟件項目管理流程,提高軟件質(zhì)量水平,從日常的軟件性能測試工作中總結(jié)出一套針對B/S架構(gòu)主流軟件的性能測試方法。
性能測試是利用成熟先進的自動化軟件測試技術(shù)在正常環(huán)境與極端環(huán)境下模擬多種負載對軟件系統(tǒng)進行各項性能指標(biāo)的監(jiān)測與分析。通常性能測試包括負載測試與壓力測試。負載測試是在正常環(huán)境下將負載逐漸增加,記錄分析系統(tǒng)各項性能指標(biāo)的變化情況;壓力測試是在系統(tǒng)、網(wǎng)絡(luò)資源匱乏的極端條件下對內(nèi)存、CPU、硬盤空間和網(wǎng)絡(luò)帶寬占有率等進行集中監(jiān)控。
(1)基本目標(biāo) 首先測出應(yīng)用系統(tǒng)在常規(guī)環(huán)境下總體性能參數(shù),主要包括每秒HTTP響應(yīng)數(shù)、用戶負載影響、每秒用戶向服務(wù)器請求相應(yīng)的往返延遲、吞吐量等;
(2)高級目標(biāo) 找出應(yīng)用系統(tǒng)可能存在的性能瓶頸或者缺陷,確認(rèn)其是否可以達到用戶的使用需求。整理測試結(jié)果并分析產(chǎn)生缺陷原因,形成測試報告,為軟件開發(fā)及改進提供依據(jù)。
“辦公自動化系統(tǒng)”是利用信息技術(shù)改變過去復(fù)雜、低效的手工辦公方式,提高辦公效率,進而實現(xiàn)辦公電子化、自動化的軟件系統(tǒng)(見圖1)。該系統(tǒng)基于工作流的概念,能使企業(yè)內(nèi)部人員方便快捷地共享信息,高效地協(xié)同工作。該系統(tǒng)由個人辦公、網(wǎng)上辦公、公共事務(wù)、信息交流、辦公指南、系統(tǒng)設(shè)置等10個模塊組成,是利用Java語言開發(fā)的典型三層B/S架構(gòu)MIS系統(tǒng),其中間層是業(yè)務(wù)邏輯層,應(yīng)用服務(wù)器運用WebLogic中間件處理所有的業(yè)務(wù)邏輯,底層數(shù)據(jù)庫應(yīng)用ORACLE 10G,中間件和數(shù)據(jù)庫分別部署在兩臺IBM服務(wù)器上(見表 1)。


圖1 “辦公自動化系統(tǒng)”系統(tǒng)架構(gòu)圖

表1 服務(wù)器參數(shù)
(1)先用測試工具軟件錄制測試腳本,將每個人機交互動作如“提交”、“查詢”、“保存”等對應(yīng)為測試工具的每個事務(wù)。在腳本中必須準(zhǔn)備足夠的測試數(shù)據(jù);
(2)利用測試工具模擬100個不同用戶登錄系統(tǒng)。并發(fā)進行登錄系統(tǒng)的操作,操作相應(yīng)的功能模塊跟蹤事務(wù)的響應(yīng)時間,每秒的點擊率以及整個場景中通過的事務(wù),最終對測試結(jié)果進行分析(見圖2)。

圖2 測試流程圖
(1)選擇適當(dāng)?shù)膮f(xié)議。由于測試目標(biāo)設(shè)備是web服務(wù)器,所以此次選擇Https協(xié)議;
(2)錄制方式一般選擇HTML-Based Script,應(yīng)用程序中包含JavaScript腳本且產(chǎn)生請求,基于瀏覽器的應(yīng)用程序使用Https協(xié)議;
(3)默認(rèn)設(shè)置記錄的瀏覽器為IE;
(4)如果想測定某個操作的響應(yīng)時間,可以在腳本中插入事務(wù),使用事務(wù)把該操作包裝起來。分析執(zhí)行結(jié)果的時候可以查看到該事務(wù)的響應(yīng)時間;
(5)插入集合點,可以使多個用戶并發(fā)進行同一操作,提高操作的并發(fā)程度,以對服務(wù)器增加負載,測試并發(fā)能力;
(6)在Run-Time Setting設(shè)置中,設(shè)置網(wǎng)絡(luò)帶寬以模擬不同帶寬的網(wǎng)絡(luò);
(7)對腳本進行參數(shù)化,設(shè)置參數(shù)變更方式;
(8)關(guān)聯(lián)腳本。
(1)設(shè)置場景主要包括選擇腳本、設(shè)定執(zhí)行用戶數(shù)、選擇測試負載機、設(shè)置腳本執(zhí)行的方式、設(shè)置集合點、設(shè)置Run-Time Setting;
(2)如果要模擬的用戶數(shù)比較多,則應(yīng)該設(shè)置多臺測試負載機,一般主流的PC機至少應(yīng)能模擬100個用戶對服務(wù)器的訪問;
(3)設(shè)置腳本的執(zhí)行方式包括設(shè)置用戶的啟動方式和終止方式;
(4)設(shè)置集合點包括開關(guān)集合點及設(shè)置用戶通過集合點的方式;
(5)設(shè)置IP欺騙。如果服務(wù)器對用戶的IP有限制(安全原因),啟用IP欺騙;
(6)設(shè)置服務(wù)器監(jiān)控計數(shù)器應(yīng)包含:內(nèi)存,CPU,線程,進程,網(wǎng)絡(luò),磁盤。
(1)查看分析結(jié)果中事務(wù)響應(yīng)時間、服務(wù)器平均吞吐量,執(zhí)行用戶人數(shù)等;
(2)查看線程圖,用戶變化圖,響應(yīng)時間圖,吞吐量圖;
(3)查看服務(wù)器監(jiān)控的計數(shù)器圖;
(4)分析各個性能指標(biāo)是否符合需求;
(5)分析各個曲線圖是否存在異常情況;
(6)有時候分析單個要素并不能反映存在的問題,需要多個要素聯(lián)系起來進行分析。
通過模擬100個不同用戶登錄系統(tǒng),每隔5 s增加一個用戶,達到峰值并運行一段時間后再每5 s減少一個用戶直至結(jié)束,運行總時間27 min,每秒鐘平均點擊次數(shù)為276次,每秒HTTP響應(yīng)數(shù)平均值16個,平均吞吐量為8601765.306字節(jié);系統(tǒng)在壓力測試過程中主要是IST系統(tǒng)CPU利用率較小,當(dāng)并發(fā)達到100時,系統(tǒng)CPU利用率就達到30%,數(shù)據(jù)庫I/O指標(biāo)正常。
負載用戶影響圖用于顯示在負載測試過程中運行的虛擬用戶數(shù)與平均交易響應(yīng)時間之間的關(guān)系(見圖3)。可以看出在虛擬用戶負載從0~100的漸進過程中平均交易響應(yīng)時間在12~22 s變動,從第5個用戶到第20個用戶的平均交易響應(yīng)時間基本穩(wěn)定在12 s左右,增加到第89個時交易時間最長。事務(wù)響應(yīng)時間基本成一條曲線,說明系統(tǒng)性能基本穩(wěn)定。
“每秒點擊次數(shù)”圖用于顯示在負載測試場景運行期間的每一秒內(nèi)Vuser向Web服務(wù)器發(fā)出的HTTP請求數(shù)(見圖4)。在該項目測試中平均每秒點擊次數(shù)276次,在第12 s時達到340次/s峰值。

“每秒HTTP響應(yīng)數(shù)”圖用于顯示負載測試場景運行期間每秒從Web服務(wù)器返回的HTTP狀態(tài)代碼數(shù)(按狀態(tài)代碼分組)(見圖5)。而HTTP狀態(tài)代碼指示HTTP請求的狀態(tài)。例如,“請求成功”、“頁面未找到”等等。圖中X軸表示自場景開始運行以來經(jīng)過的時間,Y軸表示每秒HTTP響應(yīng)數(shù)。在場景開始運行后的第15 s達到最大響應(yīng)數(shù)27,而平均值為16。
“吞吐量”圖顯示在負載測試場景運行的每一時刻,服務(wù)器上的吞吐量。吞吐量以字節(jié)為單位,表示Vuser在任意給定的一秒內(nèi)從服務(wù)器接收的數(shù)據(jù)量。本項目測試根據(jù)服務(wù)器吞吐量對Vuser生成的負載量進行評估(見圖6)。以X軸表示自場景開始運行以來經(jīng)過的時間,Y軸表示服務(wù)器的吞吐量(字節(jié))。測試結(jié)果表明在場景開始運行后的第55s出現(xiàn)最大吞吐量,11 000 000字節(jié),而平均吞吐量為8 601 765.306。

圖6 吞吐量圖
本文利用基于B/S架構(gòu)軟件的性能測試方法對“辦公自動化系統(tǒng)”進行的實際測試,既為評價該軟件的質(zhì)量及進行軟件驗收提供的準(zhǔn)確依據(jù);又在具體實施過程中對測試方法的使用規(guī)律及要點有了更深刻的認(rèn)識和更全面的掌握。如今,該性能測試方法已經(jīng)在企業(yè)的軟件建設(shè)中普及推廣,為使今后企業(yè)信息化工作更加深入,對B/S架構(gòu)軟件性能的測試方法還需要做進一步深入的研究。