(中國電子科技集團公司第二十八研究所 江蘇 210007)
信息系統軟件是信息系統的大腦和靈魂,受信息系統體系結構和作戰任務等因素的影響[1],復雜信息系統軟件的應用規模越來越大,架構越來越復雜,軟件質量及性能可靠性的問題也隨之日益凸顯起來,軟件測試是保證質量和提高性能可靠性的關鍵所在,復雜信息系統的軟件的性能測試就顯得尤為重要。
系統性能測試對一個系統而言一般包括執行效率、資源占用率、穩定性、可靠性等;與性能相關的指標一般包括響應時間,吞吐量,資源使用率等。
根據測試目的不同,性能測試一般可分為壓力測試、負載測試、容量測試等類型[2]。
系統性能測試的目的一般包括兩個方面:一方面是確認系統在相應負載條件下的運行是否滿足需求,另一方面是通過系統在一定負載下運行所得的數據分析它的瓶頸。因此,對測試的系統施加相應的負載,并且能夠分析系統在相應負載下的表現是性能測試的關鍵。
同時,性能測試需要記錄和分析系統在壓力下運行時的一些參數,例如響應時間、最大/最小并發數、失敗的次數、正常連續運行的最長/最短時間、并發數與失敗的關系等,對這些數據進行分析能夠幫助測試者很快地找到系統的瓶頸[3]。
在進行性能測試之前,需要考慮系統的性能指標。系統常用的性能指標有以下幾種[4]:
(1)響應時間
響應時間是指系統對請求做出響應的時間。從用戶的角度來看,響應時間指的是從用戶發出請求到收到服務器的響應所經歷的延遲。圖1是響應時間的示意圖。

圖1 響應時間示意圖
(2)資源使用率
資源使用率是對硬件資源的一種考量,就是系統對某個硬件資源占用百分比。應用系統在運行過程中的資源使用率是衡量系統性能好壞的重要指標,增加硬件資源一般可以暫時消除性能瓶頸現象,待資源耗盡,性能瓶頸會再次出現。
(3)吞吐量
吞吐量是指系統在單位時間內處理請求的數量。單位時間內系統處理的請求量越大說明系統的性能越好,當用戶請求數在單位時間內達到系統能夠并發處理的最大請求數時,此時的請求數量即為系統的最大吞吐量。
(4)TPS
TPS(Transactions per second)指的是系統在單位時間內執行的事務數量,是衡量系統性能的重要指標。當TPS不斷減小時,就意味著系統的性能開始下降。
由于系統的復雜性,需要高效而有序的性能測試管理流程和測試設計來保障,且在過程中不斷的定位瓶頸和優化系統;由于性能測試的復雜性,需要引入自動化測試工具來進行人機的相互配合。
針對復雜信息系統的特點,選用自動化性能測試工具LoadRunner,利用Vugen來錄制、生成編輯腳本,并模擬緩慢加壓的場景、執行腳本[5],使用WebGate等工具記錄和分析壓力過程,定位性能瓶頸和優化系統。
根據上述的測試流程進行驗證和分析。
(1)明確測試需求:本次選取某復雜信息系統某個業務系統為測試對象,測試該系統的業務能力及相應的容量數據;
(2)測試執行:選用自動化性能測試工具LoadRunner,錄制編輯訪問該系統的腳本,模擬緩慢加壓的場景。測試開始時壓力值為100,然后通過緩慢加壓,在各階段壓力下,系統性能表現如表1。
分析測試過程,當壓力值在400之前,除了內存占用增長過快外,其他性能指標都正常。當壓力值達到500 時,內存占用直接超過80%的警戒值,但系統的吞吐量并沒有像預期那樣快速增長,當壓力值達到600后,吞吐量增長不明顯,甚至有下降的趨勢。這說明壓力值增長到600時,系統已經達到瓶頸。

表1 在各階段壓力下,系統性能表現
(3)測試結果分析和優化:按照性能瓶頸定位的分層模型,本次測試在測試設計時已經排除了硬件和網絡因素,直接從系統和數據庫入手,系統參數配置和數據庫配置均正常,但系統日志里不斷報出的“Out of Memory Exception型的錯誤提示,這是系統運行內存耗盡的跡象。和開發人一起定位分析出現內存泄漏的原因,使用監控工具監控發現,在內存達到java虛擬機垃圾回收的條件時,系統進行了內存回收,但仍有大量的對象沒有被釋放,其中一個對象仍然存在一千個實例。開發人員分析發現,該對象在使用完成后未及時釋放,依然占用內存,從而造成內存泄漏。按照性能優化策略,被占用的內存在使用完畢后要及時釋放。開發人修改了代碼,使用完的對象強制釋放引用,并且在程序整體運行過程中,加強了對整體內存回收的優化。
本文分析了性能測試的基本原理,對系統性能瓶頸的分析和定位進行了研究,總結了一個完整的性能測試、分析、優化過程模型,對快速、準確地找到系統的性能瓶頸,提高系統性能,降低軟件開發風險與代價以及保證軟件質量具有積極的指導作用。