劉紅
摘要:當(dāng)下正處于互聯(lián)網(wǎng)高速發(fā)展時(shí)期,更快、更穩(wěn)定、更安全的系統(tǒng)已成為用戶選擇軟件系統(tǒng)的一個(gè)重要因素,這使得更多的公司在軟件服務(wù)創(chuàng)新的同時(shí),更加重視應(yīng)用系統(tǒng)的性能特性。本文結(jié)合日常性能工作,主要從性能測試的定義,類型,方案的制定,流程,測試結(jié)果的指標(biāo)進(jìn)行說明。
關(guān)鍵詞:性能測試;loadrunner壓測
近年來,互聯(lián)網(wǎng)、移動(dòng)互聯(lián)飛速發(fā)展,與此同時(shí),隨著公司業(yè)務(wù)的發(fā)展,軟件需要更多的關(guān)注日漸增多的用戶數(shù)量,更加多層的交互場景及使用軟件產(chǎn)生的數(shù)據(jù)量,這就要求服務(wù)器能夠更加快速和及時(shí)地響應(yīng)用戶請(qǐng)求。為了解決以上軟件公司所面臨的挑戰(zhàn),我們可以利用性能測試檢測系統(tǒng)的成熟度和客戶需求進(jìn)行對(duì)比,確認(rèn)系統(tǒng)是否滿足用戶對(duì)軟件在功能和性能上的需求。本文著重從性能測試的類型、流程,性能測試結(jié)果的系統(tǒng)指標(biāo)進(jìn)行說明。
1 性能測試的定義及類型
1.1 性能測試定義
性能測試是通過模擬真實(shí)環(huán)境(多用戶)測試系統(tǒng)應(yīng)用,通過多種較極端的情況對(duì)測試系統(tǒng)進(jìn)行攻擊。觀察應(yīng)用軟件的系統(tǒng)指標(biāo)(如:響應(yīng)時(shí)間、吞吐量、每秒事務(wù)數(shù)、事務(wù)成功率等)和空間資源是否達(dá)到預(yù)期標(biāo)準(zhǔn),如果未達(dá)到預(yù)期,需對(duì)結(jié)果指標(biāo)進(jìn)行分析,得出系統(tǒng)瓶頸,為軟件調(diào)優(yōu)提供解決方案。
1.2 性能測試類型
常見的性能測試類型包括以下幾種:
(1)并發(fā)測試:通過模擬多用戶同時(shí)做同一操作,觀察系統(tǒng)的性能和是否存在錯(cuò)誤。
(2)壓力測試:系統(tǒng)在飽和狀態(tài)下,不斷給給定系統(tǒng)加壓,檢查系統(tǒng)長時(shí)間在較大壓力下的響應(yīng)情況。
(3)綜合場景測試:是最能模擬真實(shí)業(yè)務(wù)場景的測試,綜合場景包括幾個(gè)常見要點(diǎn):多個(gè)用戶、多個(gè)腳本、在線運(yùn)行較長一段時(shí)間,觀察系統(tǒng)性能情況。
2 性能測試的流程
2.1 性能測試的流程
對(duì)系統(tǒng)進(jìn)行性能測試時(shí),應(yīng)按照以下流程進(jìn)行測試:
(1)分析性能測試需求,進(jìn)行工作評(píng)估,制定性能測試方案,編寫測試計(jì)劃
(2)根據(jù)測試方案,準(zhǔn)備測試腳本、測試環(huán)境及測試數(shù)據(jù)
(3)創(chuàng)建場景,執(zhí)行測試
(4)運(yùn)行、監(jiān)控場景,收集性能數(shù)據(jù),進(jìn)行缺陷管理
(5)分析性能測試結(jié)果,編寫測試報(bào)告,提供系統(tǒng)調(diào)優(yōu)方案
2.2 性能測試工具loadrunner三大組件工作原理
(1)對(duì)于給定的被測系統(tǒng),Visual User Generator根據(jù)選定協(xié)議(Windows Sockets,Http/Html,MS SQL Server等協(xié)議),捕獲和記錄客戶端行為、生成腳本,用戶可進(jìn)行腳本調(diào)試(如添加檢查點(diǎn)、事務(wù)、集合點(diǎn)等)。
(2)在VuGen中針對(duì)腳本,可以設(shè)置Run-time Settings
(3)在controller中設(shè)置場景:根據(jù)需求,選擇腳本,設(shè)置運(yùn)行場景和runtime setting,并可以通過負(fù)載生成器模擬大量用戶進(jìn)行負(fù)載和壓力測試。。
(4)運(yùn)行場景,通過analysis組件查看報(bào)告,包括summary和多個(gè)graph,通過多種方法(如:合并圖表、網(wǎng)頁細(xì)分圖、鉆取、水晶報(bào)表等方法)分析性能測試結(jié)果數(shù)據(jù),提供性能調(diào)優(yōu)的數(shù)據(jù)依據(jù)。
3 性能測試指標(biāo)分析
3.1 響應(yīng)時(shí)間
響應(yīng)時(shí)間是指服務(wù)器對(duì)請(qǐng)求作出響應(yīng)所消耗的時(shí)間。注意區(qū)分用戶的感性時(shí)間和真正的響應(yīng)時(shí)間,感知時(shí)間是指從客戶端向系統(tǒng)提交請(qǐng)求開始返回信息的時(shí)間;實(shí)時(shí)響應(yīng)時(shí)間是指從請(qǐng)求發(fā)送出去到頁面展示所有數(shù)據(jù)的時(shí)間。
3.2 吞吐量
吞吐量是指單位時(shí)間內(nèi)服務(wù)器處理的字節(jié)數(shù)。如果一段時(shí)間內(nèi),用戶數(shù)量持續(xù)增加,而吞吐量趨于平衡甚至有略微減少不見遞增,說明該用戶數(shù)量即為當(dāng)前系統(tǒng)所能承受的最大用戶數(shù)量,系統(tǒng)處理能力已經(jīng)達(dá)到瓶頸。
3.3 TPS:
TPS是指服務(wù)器每秒處理的事務(wù)數(shù),tps值越大,系統(tǒng)處理能力越強(qiáng)。
4 性能測試結(jié)果分析
性能測試數(shù)據(jù)可以通過性能測試工具loadrunne的analysis組件進(jìn)行分析,得出系統(tǒng)瓶頸。常見的分析方法包括:合并圖表法、網(wǎng)頁細(xì)分圖、鉆取技術(shù)、硬件指標(biāo)分析。下面結(jié)合性能測試經(jīng)驗(yàn),提出幾個(gè)可能導(dǎo)致tps過低的原因:
(1)網(wǎng)絡(luò)帶寬
在壓力測試過程中會(huì)通過負(fù)載生成器模擬大量用戶,此時(shí)會(huì)產(chǎn)生大量對(duì)地請(qǐng)求,傳輸過程中的數(shù)據(jù)包需要較大帶寬,如果超出帶寬能力,則會(huì)造成響應(yīng)不及時(shí)。
(2)硬件資源達(dá)到瓶頸
包括CPU(%Processor Time、Processor queue length)、內(nèi)存(Avalible Mbytes)、磁盤(%Disk Time、page fault)、網(wǎng)絡(luò)(Bytes Total/sec)。
(3)數(shù)據(jù)庫設(shè)置的最大連接數(shù)不足
(4)連接池
連接池連接不夠,會(huì)導(dǎo)致請(qǐng)求響應(yīng)不過來,造成排隊(duì)等待。
隨著公司業(yè)務(wù)的發(fā)展,軟件產(chǎn)品愈加復(fù)雜,公司會(huì)面臨更多日漸增多的用戶數(shù)量,更加多層的交互場景及超大數(shù)據(jù)量等諸多問題。如何提高軟件的性能,解決實(shí)際業(yè)務(wù)中的問題,也是我們做性能測試的根本目標(biāo)。在性能測試過程中,我們應(yīng)該制定更加合理的性能測試方案,監(jiān)控性能測試流程,對(duì)軟件做更加充分的測試,定位問題,找出瓶頸,為軟件調(diào)優(yōu)提供解決方案,提供更好的軟件服務(wù)。
(作者單位:江西軟件職業(yè)技術(shù)大學(xué))