軟件性能測試的目的是評估當(dāng)前系統(tǒng)性能指標(biāo),根據(jù)測試結(jié)果對性能瓶頸進(jìn)行定位及優(yōu)化,以預(yù)防規(guī)避性能風(fēng)險(xiǎn)。在進(jìn)行系統(tǒng)的調(diào)優(yōu)過程中,好的策略是按照由易到難的順序?qū)ο到y(tǒng)性能進(jìn)行調(diào)優(yōu)。
一、軟件性能的衡量指標(biāo)
1、響應(yīng)時(shí)間(Response time)
對于網(wǎng)站系統(tǒng)來說,響應(yīng)時(shí)間就是從點(diǎn)擊了一個(gè)頁面計(jì)時(shí)開始,到這個(gè)頁面完全在瀏覽器里展現(xiàn)計(jì)時(shí)結(jié)束的這一段時(shí)間間隔,響應(yīng)時(shí)間越短越好??梢约?xì)分為服務(wù)器端響應(yīng)時(shí)間、網(wǎng)絡(luò)響應(yīng)時(shí)間、客戶端響應(yīng)時(shí)間。在軟件性能測試中一般是通過事務(wù)函數(shù)Transaction Response Time來統(tǒng)計(jì)響應(yīng)時(shí)間。
2、吞吐量(Throughput)
吞吐量反映的是系統(tǒng)的處理能力,具體來說,就是指軟件系統(tǒng)在每單位時(shí)間內(nèi)能處理多少個(gè)事務(wù)/請求/單位數(shù)據(jù)等。吞吐量的大小由負(fù)載或行為方式來決定。在Performance Center中,吞吐量反映單位時(shí)間內(nèi)系統(tǒng)處理的事務(wù)數(shù)目。一般以TPS(Transaction Per Second)即每秒事務(wù)數(shù)表示。
3、資源使用率(Resource utilization)
指系統(tǒng)在負(fù)載情況下軟硬件上各種資源的占用情況。例如,CPU占用率、內(nèi)存使用率、磁盤I/O等。
4、并發(fā)用戶數(shù)(Concurrent users)
并發(fā)用戶數(shù)用來度量多個(gè)用戶同時(shí)訪問同一個(gè)應(yīng)用、同一個(gè)模塊或者數(shù)據(jù)記錄時(shí)是否存在死鎖或者其他性能問題,反映了系統(tǒng)的并發(fā)處理能力。
5、點(diǎn)擊數(shù)(Hits per second)
點(diǎn)擊數(shù)是按照客戶端向Web Server 發(fā)起了多少次 HTTP請求計(jì)算的。
二、軟件性能測試常用檢測項(xiàng)目
1.負(fù)載測試 (Load Testing)
負(fù)載測試是通過逐步增加系統(tǒng)負(fù)載,直到達(dá)到系統(tǒng)的工作極限,來評估軟件在正常和峰值條件下的性能。這種測試可以幫助確定系統(tǒng)在不同工作負(fù)載下的行為,以及系統(tǒng)是否能夠滿足性能目標(biāo)。
2.壓力測試 (Stress Testing)
壓力測試是將系統(tǒng)推向其極限,通常超過預(yù)期的工作負(fù)載,以確定系統(tǒng)的最大承載能力和故障點(diǎn)。它可以幫助識別系統(tǒng)崩潰的閾值和潛在的性能瓶頸。
3.并發(fā)性能測試 (Concurrency Testing)
并發(fā)性能測試專注于模擬多個(gè)用戶同時(shí)訪問系統(tǒng)的情況,以評估系統(tǒng)的并發(fā)處理能力。它有助于發(fā)現(xiàn)并發(fā)操作引起的性能下降和潛在的同步問題。
4.容量測試 (Volume Testing)
容量測試涉及加載大量數(shù)據(jù)到系統(tǒng)中,以驗(yàn)證系統(tǒng)在大數(shù)據(jù)量下的性能和穩(wěn)定性。它通常用于數(shù)據(jù)庫系統(tǒng)和存儲密集型應(yīng)用程序。
5.穩(wěn)定性測試 (Endurance Testing)
穩(wěn)定性測試,也稱為疲勞強(qiáng)度測試,是通過長時(shí)間運(yùn)行系統(tǒng)來評估其在持續(xù)負(fù)載下的性能和穩(wěn)定性。它可以揭示隨時(shí)間累積的性能問題,如內(nèi)存泄漏。
6.基準(zhǔn)測試 (Benchmark Testing)
基準(zhǔn)測試是建立系統(tǒng)在理想狀態(tài)下的性能指標(biāo),用于后續(xù)測試的比較。這有助于評估性能改進(jìn)或性能退化。
7.配置測試 (Configuration Testing)
配置測試檢查系統(tǒng)在不同硬件、軟件和網(wǎng)絡(luò)配置下的性能,以確保系統(tǒng)在各種環(huán)境中都能達(dá)到預(yù)期的性能水平。
8.恢復(fù)測試 (Recovery Testing)
恢復(fù)測試驗(yàn)證系統(tǒng)在遇到故障或異常情況后能否正確恢復(fù),以及恢復(fù)過程對系統(tǒng)性能的影響。
9.擴(kuò)展性測試 (Scalability Testing)
擴(kuò)展性測試評估系統(tǒng)在增加資源(如硬件、軟件或網(wǎng)絡(luò)資源)時(shí)的性能變化,以確定系統(tǒng)是否能夠隨著負(fù)載的增長而高效擴(kuò)展。
三、軟件測試方法
1.等價(jià)類
等價(jià)類劃分的辦法是把程序的輸入域劃分成若干部分,然后從每個(gè)部分中選取少數(shù)代表性數(shù)據(jù)作為測試用例。每一類的代表性數(shù)據(jù)在測試中的作用等價(jià)于這一類中的其它值,也就是說,如果某一類中的一個(gè)例子發(fā)現(xiàn)了錯誤,這一等價(jià)類中的其他例子也能發(fā)現(xiàn)同樣的錯誤:反之,如果某一類中的一個(gè)例子沒有發(fā)現(xiàn)錯誤,則這一類中的其他例子也不會查出錯誤(除非等價(jià)類中的某些例子屬于另一等價(jià)類,因?yàn)閹讉€(gè)等價(jià)類是可能相交的)。等價(jià)類又分為有效等價(jià)類和無效等價(jià)類。有效等價(jià)類代表對程序有效的輸入,而無效等價(jià)類則是其他任何可能的輸入(即不正確的輸入值)。
2.邊界值
著重對輸入域的邊界進(jìn)行測算*其中Min及Max分別表示被測項(xiàng)依據(jù)用戶手冊中規(guī)定的上下限值,單位表示取值的最小步進(jìn),中間值一般取范圍的中點(diǎn)值。
3.錯誤推斷
錯誤推測法就是基于經(jīng)驗(yàn)和直覺推測程序中所有可能存在的各種錯誤,有針對地設(shè)計(jì)測試用例的方法。
4.場景分析
①.一般場景分析:對典型的場景業(yè)務(wù)流進(jìn)行分析,確定路徑觸發(fā)條件與場景關(guān)系,并付諸于測試用例;
②.風(fēng)險(xiǎn)場景分析:對典型業(yè)務(wù)可能遇到的諸如暴力、非法操作等風(fēng)險(xiǎn)場景進(jìn)行分析,確定路徑觸發(fā)條件與場景關(guān)系,并付諸于測試用例。
5.因果圖
等價(jià)類劃分方法和邊界值分析法都是著重考慮輸入條件,并沒有考慮到輸入情況的各種組合,如果在測試時(shí)必須考慮輸入條件的各種組合,需要利用因果圖,基本步驟如下:
(1)分析程序規(guī)格說明的描述中,哪些是原因,哪些是結(jié)果。原因常常是輸入條件或是輸入條件的等價(jià)類,而結(jié)果是輸出條件;
(2)分析程序規(guī)格說明的描述中語義的內(nèi)容,并將其表示成連接各個(gè)原因與各個(gè)結(jié)果的“因果圖”;
(3)標(biāo)明約束條件。由于語法或環(huán)境的限制,并將其表示成連接各個(gè)原因與各個(gè)結(jié)果的“因果圖”。由于語法或環(huán)境的限制,有些原因和結(jié)果的組合情況是不可能出現(xiàn)的。為表明這些特定的情況,在因果圖上使用若干個(gè)標(biāo)準(zhǔn)的符號標(biāo)明約束條件;
(4)反因果法轉(zhuǎn)換成判定表;
(5)為判定表中每一列表示的情況設(shè)計(jì)測試用例。
四、軟件測試常用檢測標(biāo)準(zhǔn)
GB/T 25000.51-2016《系統(tǒng)與軟件工程 系統(tǒng)與軟件質(zhì)量要求和評價(jià)(SQuaRE) 第51部分:就緒可用軟件產(chǎn)品(RUSP)的質(zhì)量要求和測試細(xì)則》;
GB/T 25000.10-2016《系統(tǒng)與軟件工程系統(tǒng)與軟件質(zhì)量要求和評價(jià)(SQuaRE) 第10部分:系統(tǒng)與軟件質(zhì)量模型》;
GB/T 37729-2019 《信息技術(shù)智能移動終端應(yīng)用軟件(APP)技術(shù)要求》