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