孫嘉敏
摘 要:由于軟件行業(yè)的迅猛發(fā)展,軟件質(zhì)量的要求也越來越高。在要求軟件功能的同時(shí),軟件或者WEB的性能也越發(fā)引起人們的關(guān)注。功能測(cè)試只關(guān)注與某個(gè)功能點(diǎn),而性能測(cè)試則關(guān)注整個(gè)系統(tǒng),在軟件質(zhì)量模型中,性能測(cè)試屬于效率的一類。本文即從上述思想出發(fā),主要關(guān)注了性能測(cè)試的關(guān)注點(diǎn)、性能測(cè)試的不同指標(biāo)和性能測(cè)試過程中的注意點(diǎn)。得出性能測(cè)試是軟件開發(fā)過程中不可缺少的一部分和團(tuán)隊(duì)協(xié)作才是進(jìn)行性能測(cè)試的最好方式的結(jié)論。
關(guān)鍵字:性能測(cè)試;資源消耗;負(fù)載測(cè)試;測(cè)試團(tuán)隊(duì)
一、背景
1.性能測(cè)試的相關(guān)概念。測(cè)試的定義為:帶著發(fā)現(xiàn)缺陷的意圖來執(zhí)行工作產(chǎn)品。而性能測(cè)試(Performance Testing)的定義為:在一定的負(fù)載情況下,系統(tǒng)的響應(yīng)時(shí)間等特性是否滿足特定的性能需求。從某些角度來講,性能其實(shí)是功能的一種。
軟件的性能包括兩個(gè)方面的內(nèi)容:時(shí)間特性和資源特性。時(shí)間是指系統(tǒng)處理客戶請(qǐng)求的響應(yīng)時(shí)間;資源特性是指在進(jìn)行性能測(cè)試過程中,系統(tǒng)資源消耗的情況。常見的系統(tǒng)資源主要包括處理器(CPU)、內(nèi)存和磁盤等。所以通常說的軟件性能不僅僅包括響應(yīng)時(shí)間,還包括系統(tǒng)資源消耗。
2.性能測(cè)試的關(guān)注點(diǎn)。不同的人關(guān)注的性能層次有所不同。通常情況下,關(guān)注軟件性能的人主要包括三類人:用戶、系統(tǒng)管理員與性能測(cè)試與和性能測(cè)試工程師和軟件開發(fā)工程師,這三類人各自關(guān)注的內(nèi)容如下:
(1)用戶。從用戶的角度來看,軟件測(cè)試是軟件系統(tǒng)對(duì)用戶提交所響應(yīng)的時(shí)間。通俗的講,如果用戶單擊一個(gè)提交或輸入一個(gè)URL地址,隨后系統(tǒng)把結(jié)果呈現(xiàn)到用戶面前,這個(gè)過程所花費(fèi)的時(shí)間即為用戶對(duì)軟件性能的直觀印象。用戶體會(huì)的響應(yīng)時(shí)間為從執(zhí)行操作到已經(jīng)有一部分?jǐn)?shù)據(jù)呈現(xiàn)出來的時(shí)間,而真正的響應(yīng)時(shí)間應(yīng)該是系統(tǒng)將全部數(shù)據(jù)呈現(xiàn)出來的時(shí)間。
(2)系統(tǒng)管理員和性能測(cè)試工程師。從系統(tǒng)管理員和性能測(cè)試工程師的角度來說,在響應(yīng)時(shí)間方面的理解與用戶完全一致。但系統(tǒng)管理員和性能測(cè)試工程師不僅僅不住系統(tǒng)的響應(yīng)時(shí)間,還關(guān)注服務(wù)器系統(tǒng)資源的使用情況。
(3)軟件開發(fā)工程師。從軟件開發(fā)工程師的角度來說,他們關(guān)注用戶和管理員關(guān)注的所以問題。另外還關(guān)注內(nèi)存泄漏、數(shù)據(jù)庫(kù)是否出現(xiàn)死鎖、中間件以及應(yīng)用服務(wù)器等問題。
二、性能測(cè)試的幾大分類
1.負(fù)載測(cè)試。負(fù)載測(cè)試(Load Testing)是指在一定的軟件、硬件環(huán)境下,運(yùn)行一種或者是多種業(yè)務(wù),在不同虛擬用戶數(shù)量情況下測(cè)試服務(wù)器的性能指標(biāo)是否在用戶的峰值范圍內(nèi)一起確定系統(tǒng)的最大用戶數(shù)等。強(qiáng)調(diào)的是在一定的環(huán)境下系統(tǒng)能夠達(dá)到的峰值指標(biāo),大多數(shù)的性能測(cè)試都是負(fù)載測(cè)試。
2.壓力測(cè)試。壓力測(cè)試(Stress Testing)是指在一定的軟件、硬件等環(huán)境下,模擬大量的虛擬用戶想服務(wù)器產(chǎn)生負(fù)載,使服務(wù)器的資源處在極限狀態(tài)下并長(zhǎng)時(shí)間的連續(xù)運(yùn)行,以此來測(cè)試服務(wù)器在高負(fù)載的情況下是否能夠穩(wěn)定工作。負(fù)載測(cè)試和壓力測(cè)試相似,但負(fù)載測(cè)試用于正常峰值的測(cè)試,而壓力測(cè)試用于測(cè)試峰值極限的維持時(shí)間。
3.并發(fā)測(cè)試。并發(fā)測(cè)試(Concurrency Testing)是指通過模擬多個(gè)用戶訪問同一個(gè)應(yīng)用、存儲(chǔ)過程或數(shù)據(jù)記錄以及其他并發(fā)操作,測(cè)試是否存在死鎖、數(shù)據(jù)錯(cuò)誤等故障。
4.基準(zhǔn)測(cè)試。基準(zhǔn)測(cè)試(Benchmar Testing)是指在一定的軟件、硬件等環(huán)境下,模擬一定數(shù)量的虛擬用戶運(yùn)行一種或多種業(yè)務(wù),將測(cè)試結(jié)果做為基準(zhǔn)數(shù)據(jù),在系統(tǒng)調(diào)優(yōu)或系統(tǒng)評(píng)測(cè)的過程中,通過運(yùn)行相同的業(yè)務(wù)場(chǎng)景來比較結(jié)果,確定調(diào)優(yōu)的結(jié)果是否達(dá)到預(yù)期效果或者為系統(tǒng)的選擇提供決策數(shù)據(jù)。基準(zhǔn)測(cè)試一般用于配置測(cè)試。
三、性能測(cè)試的相關(guān)指標(biāo)
1.響應(yīng)時(shí)間。響應(yīng)時(shí)間是指應(yīng)用系統(tǒng)從發(fā)出請(qǐng)求開始到客戶端接收到所有數(shù)據(jù)所消耗的時(shí)間。強(qiáng)調(diào)所有數(shù)據(jù)都已經(jīng)被呈現(xiàn)到客戶端所花費(fèi)的時(shí)間。在性能測(cè)試中是通過事物函數(shù)來完成對(duì)響應(yīng)時(shí)間的統(tǒng)計(jì),事物是指做某件事的操作,事物函數(shù)會(huì)記錄做這件事情和該事情做完之間的時(shí)間差,稱為事務(wù)響應(yīng)時(shí)間。
2.并發(fā)用戶數(shù)。并發(fā)用戶數(shù)是指同一時(shí)刻與服務(wù)器進(jìn)行數(shù)據(jù)交互的所有用戶數(shù)量。其中有兩點(diǎn)需要注,第一:同一時(shí)刻,表示并發(fā)強(qiáng)調(diào)的是用戶同時(shí)對(duì)服務(wù)器進(jìn)行施壓。第二:強(qiáng)調(diào)要與服務(wù)器進(jìn)行數(shù)據(jù)交互,如果未和服務(wù)器進(jìn)行數(shù)據(jù)的交互,這樣的用戶是沒給服務(wù)器帶來壓力的。
3.吞吐量。在性能測(cè)試過程中,吞吐量是指單位時(shí)間內(nèi)服務(wù)器處理的字節(jié)數(shù),吞吐量的單位為字節(jié)每秒。吞吐量的大小直接體現(xiàn)服務(wù)器的承載能力。
四、性能測(cè)試注意點(diǎn)
1.性能測(cè)試應(yīng)盡早進(jìn)行。測(cè)試的工作越開展損失越少,性能測(cè)試也是如此。當(dāng)系統(tǒng)集成后,想要從眾多的模塊中分析定位模塊瓶頸是十分困難的,但是如果在項(xiàng)目初期就能對(duì)每個(gè)模塊進(jìn)行性能測(cè)試,問題自然就得到解決。
2.性能測(cè)試需要團(tuán)隊(duì)支持。質(zhì)量是靠開發(fā)人員的技術(shù),而不是依靠測(cè)試人員的測(cè)試。性能也遵循同樣的道理。并不是說一個(gè)公司擁有一個(gè)完美的性能測(cè)試部門,就能保證軟件的完美,性能的優(yōu)化需要開發(fā)部門和相關(guān)部門的通力合作。
3.性能測(cè)試需要獨(dú)立的測(cè)試環(huán)境。性能呢個(gè)測(cè)試的環(huán)境獨(dú)立性相對(duì)于功能測(cè)試更加嚴(yán)格,需要獨(dú)立的網(wǎng)絡(luò)和硬件環(huán)境,來保證被測(cè)系統(tǒng)是獨(dú)立可控的,甚至需要專門的管理員和流程來對(duì)被測(cè)環(huán)境進(jìn)行控制。
4.測(cè)試前定義明確的測(cè)試目標(biāo)。性能測(cè)試的執(zhí)行成本較高,為了保證性能測(cè)試執(zhí)行的有效性,在每一個(gè)性能測(cè)試前應(yīng)明確本次性能測(cè)試的目標(biāo),并對(duì)這個(gè)目標(biāo)進(jìn)行監(jiān)控和驗(yàn)證。
5.不要在服務(wù)器上進(jìn)行性能測(cè)試。雖然服務(wù)器可以做為負(fù)載生產(chǎn)和被負(fù)載的對(duì)象,但是如果在服務(wù)器上進(jìn)行這樣的操作,系統(tǒng)資源會(huì)被負(fù)載消耗,導(dǎo)致得出的性能測(cè)試數(shù)據(jù)脫離實(shí)際情況。
6.創(chuàng)建的負(fù)載應(yīng)該是模擬用戶最常見、最密集的操作。在進(jìn)行性能測(cè)試時(shí),應(yīng)該模擬用戶最常使用的功能,來了解在這種操作下系統(tǒng)資源消耗以及用戶體驗(yàn)。
7.在真正的性能測(cè)試前盡可能地進(jìn)行預(yù)測(cè)試。在性能測(cè)試進(jìn)行之前應(yīng)盡可能多的進(jìn)行預(yù)測(cè)試,發(fā)現(xiàn)負(fù)載生成的結(jié)果以及負(fù)載生成是否存在瓶頸,由于性能測(cè)試執(zhí)行成本較高,所以通過多次的預(yù)測(cè)試,可以降低最終測(cè)試的成本開銷。
8.使用同一用戶進(jìn)行長(zhǎng)時(shí)間大量操作是否存在內(nèi)存泄漏或者類似的錯(cuò)誤通常這樣做或發(fā)現(xiàn)系統(tǒng)某功能設(shè)置上的問題。
五、結(jié)語(yǔ)
性能測(cè)試是系統(tǒng)測(cè)試的一種,其目標(biāo)是判斷系統(tǒng)在正常負(fù)載或正常水平的活動(dòng)的情況下是否滿足性能需求。由于現(xiàn)在軟件和WEB的快速發(fā)展,性能測(cè)試也得到了更多人的關(guān)注,人們?cè)絹碓疥P(guān)心軟件的負(fù)載和容量等特性,而不是一味的追求性能的實(shí)現(xiàn)。在性能測(cè)試的過程中,雖然個(gè)人的知識(shí)水平和相關(guān)測(cè)試經(jīng)驗(yàn)十分重要,但是團(tuán)隊(duì)的合作才是更重要的,性能測(cè)試是一個(gè)要求團(tuán)隊(duì)合作的工作。總之,性能測(cè)試無非就是以較低的成本模擬一個(gè)真實(shí)環(huán)境來了解系統(tǒng)上線后的性能情況,至于定位、分析以及調(diào)優(yōu),這需要一個(gè)團(tuán)隊(duì)的支持才能完成。
參考文獻(xiàn):
[1](美國(guó))M G Limaye.軟件測(cè)試原理、技術(shù)及工具[M].黃曉磊,曾瓊譯.北京:清華大學(xué)出版社,2011.
[2]軟件工程—理論、方法及實(shí)踐;劉忠寶主編[M];國(guó)防工業(yè)出版社.
[3]性能測(cè)試進(jìn)階指南—LoadRunner9.1實(shí)戰(zhàn)[M];陳霽、牛霜霞著;電子工業(yè)出版社.