(中國電子科技集團公司第二十八研究所 江蘇 210007)
信息系統(tǒng)軟件是信息系統(tǒng)的大腦和靈魂,受信息系統(tǒng)體系結(jié)構(gòu)和作戰(zhàn)任務(wù)等因素的影響[1],復(fù)雜信息系統(tǒng)軟件的應(yīng)用規(guī)模越來越大,架構(gòu)越來越復(fù)雜,軟件質(zhì)量及性能可靠性的問題也隨之日益凸顯起來,軟件測試是保證質(zhì)量和提高性能可靠性的關(guān)鍵所在,復(fù)雜信息系統(tǒng)的軟件的性能測試就顯得尤為重要。
系統(tǒng)性能測試對一個系統(tǒng)而言一般包括執(zhí)行效率、資源占用率、穩(wěn)定性、可靠性等;與性能相關(guān)的指標一般包括響應(yīng)時間,吞吐量,資源使用率等。
根據(jù)測試目的不同,性能測試一般可分為壓力測試、負載測試、容量測試等類型[2]。
系統(tǒng)性能測試的目的一般包括兩個方面:一方面是確認系統(tǒng)在相應(yīng)負載條件下的運行是否滿足需求,另一方面是通過系統(tǒng)在一定負載下運行所得的數(shù)據(jù)分析它的瓶頸。因此,對測試的系統(tǒng)施加相應(yīng)的負載,并且能夠分析系統(tǒng)在相應(yīng)負載下的表現(xiàn)是性能測試的關(guān)鍵。
同時,性能測試需要記錄和分析系統(tǒng)在壓力下運行時的一些參數(shù),例如響應(yīng)時間、最大/最小并發(fā)數(shù)、失敗的次數(shù)、正常連續(xù)運行的最長/最短時間、并發(fā)數(shù)與失敗的關(guān)系等,對這些數(shù)據(jù)進行分析能夠幫助測試者很快地找到系統(tǒng)的瓶頸[3]。
在進行性能測試之前,需要考慮系統(tǒng)的性能指標。系統(tǒng)常用的性能指標有以下幾種[4]:
(1)響應(yīng)時間
響應(yīng)時間是指系統(tǒng)對請求做出響應(yīng)的時間。從用戶的角度來看,響應(yīng)時間指的是從用戶發(fā)出請求到收到服務(wù)器的響應(yīng)所經(jīng)歷的延遲。圖1是響應(yīng)時間的示意圖。
圖1 響應(yīng)時間示意圖
(2)資源使用率
資源使用率是對硬件資源的一種考量,就是系統(tǒng)對某個硬件資源占用百分比。應(yīng)用系統(tǒng)在運行過程中的資源使用率是衡量系統(tǒng)性能好壞的重要指標,增加硬件資源一般可以暫時消除性能瓶頸現(xiàn)象,待資源耗盡,性能瓶頸會再次出現(xiàn)。
(3)吞吐量
吞吐量是指系統(tǒng)在單位時間內(nèi)處理請求的數(shù)量。單位時間內(nèi)系統(tǒng)處理的請求量越大說明系統(tǒng)的性能越好,當用戶請求數(shù)在單位時間內(nèi)達到系統(tǒng)能夠并發(fā)處理的最大請求數(shù)時,此時的請求數(shù)量即為系統(tǒng)的最大吞吐量。
(4)TPS
TPS(Transactions per second)指的是系統(tǒng)在單位時間內(nèi)執(zhí)行的事務(wù)數(shù)量,是衡量系統(tǒng)性能的重要指標。當TPS不斷減小時,就意味著系統(tǒng)的性能開始下降。
由于系統(tǒng)的復(fù)雜性,需要高效而有序的性能測試管理流程和測試設(shè)計來保障,且在過程中不斷的定位瓶頸和優(yōu)化系統(tǒng);由于性能測試的復(fù)雜性,需要引入自動化測試工具來進行人機的相互配合。
針對復(fù)雜信息系統(tǒng)的特點,選用自動化性能測試工具LoadRunner,利用Vugen來錄制、生成編輯腳本,并模擬緩慢加壓的場景、執(zhí)行腳本[5],使用WebGate等工具記錄和分析壓力過程,定位性能瓶頸和優(yōu)化系統(tǒng)。
根據(jù)上述的測試流程進行驗證和分析。
(1)明確測試需求:本次選取某復(fù)雜信息系統(tǒng)某個業(yè)務(wù)系統(tǒng)為測試對象,測試該系統(tǒng)的業(yè)務(wù)能力及相應(yīng)的容量數(shù)據(jù);
(2)測試執(zhí)行:選用自動化性能測試工具LoadRunner,錄制編輯訪問該系統(tǒng)的腳本,模擬緩慢加壓的場景。測試開始時壓力值為100,然后通過緩慢加壓,在各階段壓力下,系統(tǒng)性能表現(xiàn)如表1。
分析測試過程,當壓力值在400之前,除了內(nèi)存占用增長過快外,其他性能指標都正常。當壓力值達到500 時,內(nèi)存占用直接超過80%的警戒值,但系統(tǒng)的吞吐量并沒有像預(yù)期那樣快速增長,當壓力值達到600后,吞吐量增長不明顯,甚至有下降的趨勢。這說明壓力值增長到600時,系統(tǒng)已經(jīng)達到瓶頸。
表1 在各階段壓力下,系統(tǒng)性能表現(xiàn)
(3)測試結(jié)果分析和優(yōu)化:按照性能瓶頸定位的分層模型,本次測試在測試設(shè)計時已經(jīng)排除了硬件和網(wǎng)絡(luò)因素,直接從系統(tǒng)和數(shù)據(jù)庫入手,系統(tǒng)參數(shù)配置和數(shù)據(jù)庫配置均正常,但系統(tǒng)日志里不斷報出的“Out of Memory Exception型的錯誤提示,這是系統(tǒng)運行內(nèi)存耗盡的跡象。和開發(fā)人一起定位分析出現(xiàn)內(nèi)存泄漏的原因,使用監(jiān)控工具監(jiān)控發(fā)現(xiàn),在內(nèi)存達到j(luò)ava虛擬機垃圾回收的條件時,系統(tǒng)進行了內(nèi)存回收,但仍有大量的對象沒有被釋放,其中一個對象仍然存在一千個實例。開發(fā)人員分析發(fā)現(xiàn),該對象在使用完成后未及時釋放,依然占用內(nèi)存,從而造成內(nèi)存泄漏。按照性能優(yōu)化策略,被占用的內(nèi)存在使用完畢后要及時釋放。開發(fā)人修改了代碼,使用完的對象強制釋放引用,并且在程序整體運行過程中,加強了對整體內(nèi)存回收的優(yōu)化。
本文分析了性能測試的基本原理,對系統(tǒng)性能瓶頸的分析和定位進行了研究,總結(jié)了一個完整的性能測試、分析、優(yōu)化過程模型,對快速、準確地找到系統(tǒng)的性能瓶頸,提高系統(tǒng)性能,降低軟件開發(fā)風險與代價以及保證軟件質(zhì)量具有積極的指導(dǎo)作用。