什么是性能測試?
在軟件中,性能測試(也稱為性能測試)確定或驗(yàn)證被測系統(tǒng)或應(yīng)用程序的速度,
可伸縮性和/或穩(wěn)定性特征。性能與實(shí)現(xiàn)滿足項(xiàng)目或產(chǎn)品性能目標(biāo)的響應(yīng)時(shí)間,
破壞和資源利用水平有關(guān)。
進(jìn)行Web應(yīng)用程序性能測試是為了降低系統(tǒng)可用性,可靠性,可伸縮性,響應(yīng)性,
穩(wěn)定性等風(fēng)險(xiǎn)。
性能測試包含多種不同類型的測試,例如負(fù)載測試,體積測試,壓力測試,容量測試,均熱/耐久測試和逐步測試,以測試測試發(fā)現(xiàn)或解決系統(tǒng)中的性能問題。
性能工程是一門學(xué)科,其中包括在軟件開發(fā)生命周期(SDLC)的每個(gè)階段中的最佳實(shí)
踐和活動(dòng),以測試和調(diào)整應(yīng)用程序,以實(shí)現(xiàn)所需的性能。
性能測試可模擬實(shí)際的最終用戶負(fù)載,以確定系統(tǒng)的速度,響應(yīng)能力和穩(wěn)定性。
它涉及在各種參數(shù)(例如響應(yīng)時(shí)間,并發(fā)用戶負(fù)載,服務(wù)器吞吐量等)下測試和報(bào)告
應(yīng)用程序的當(dāng)前性能。
性能調(diào)整是一個(gè)專注于提高系統(tǒng)性能的過程。
有兩種類型的性能調(diào)整。
1.硬件調(diào)優(yōu):優(yōu)化,添加或替換系統(tǒng)的硬件組件以提高系統(tǒng)性能的過程稱為硬件調(diào)優(yōu)。
2.軟件調(diào)優(yōu):通過對代碼,數(shù)據(jù)庫等進(jìn)行概要分析來確定軟件級(jí)別的瓶頸。
借助微調(diào)或修改軟件來解決瓶頸的方法稱為軟件調(diào)優(yōu)。
通過優(yōu)化代碼,性能分析有助于微調(diào)應(yīng)用程序。
必須對代碼進(jìn)行分析,調(diào)試和審查,以確定使其運(yùn)行更快的最有效方法。
性能測試的目的是消除性能瓶頸。一些常見的性能瓶頸如下
CPU利用率
內(nèi)存利用率
網(wǎng)絡(luò)利用
軟件限制
磁盤使用情況
進(jìn)入標(biāo)準(zhǔn):明確定義的服務(wù)水平協(xié)議(SLA)/性能目標(biāo)
退出標(biāo)準(zhǔn):實(shí)現(xiàn)SLA /性能目標(biāo)
識(shí)別測試環(huán)境:
確定物理測試環(huán)境,生產(chǎn)環(huán)境,并知道可用的測試工具。
在開始測試過程之前,請了解硬件,軟件和網(wǎng)絡(luò)配置的詳細(xì)信息。
必須在項(xiàng)目的整個(gè)生命周期中定期重新審查此過程。
確定性能驗(yàn)收標(biāo)準(zhǔn):
這包括響應(yīng)時(shí)間,吞吐量和資源利用率的目標(biāo)和約束。
響應(yīng)時(shí)間是用戶關(guān)心的問題,吞吐量是業(yè)務(wù)問題,資源利用率是系統(tǒng)問題。
還必須確定那些目標(biāo)和約束可能無法捕獲的項(xiàng)目成功標(biāo)準(zhǔn)。
計(jì)劃和設(shè)計(jì)性能測試:
確定關(guān)鍵方案以測試所有可能的用例。
確定如何模擬該可變性,定義測試數(shù)據(jù)以及建立要收集的指標(biāo)。
配置測試環(huán)境:
在執(zhí)行之前準(zhǔn)備測試環(huán)境,安排工具和其他資源
實(shí)施測試設(shè)計(jì):
根據(jù)測試設(shè)計(jì)進(jìn)行性能測試
執(zhí)行測試:
執(zhí)行和監(jiān)控測試
分析結(jié)果,報(bào)告并重新測試:
合并,分析和共享測試結(jié)果。
微調(diào)并重新測試以查看性能是否有所提高。
當(dāng)所有度量標(biāo)準(zhǔn)值都在可接受的范圍內(nèi)時(shí),就說明您已經(jīng)在該特定配置上測試了
該特定方案。
性能測試應(yīng)該在開發(fā)過程中,質(zhì)量保證過程中,產(chǎn)品發(fā)布之前,新版本發(fā)布之后以及市場計(jì)劃中進(jìn)行。
簡單的答案是在系統(tǒng)更改時(shí)的任何時(shí)候。
市場上許多性能測試工具都包含用于執(zhí)行自動(dòng)化測試的組件。
我們的構(gòu)建系統(tǒng)使用自動(dòng)化來完成重復(fù)性任務(wù),因此我們有更多時(shí)間花在分析結(jié)果上。
由于執(zhí)行了這些重復(fù)性的自動(dòng)化任務(wù),因此更容易定期進(jìn)行測試,并且可以及早發(fā)現(xiàn)問題。
給出一些性能測試用例的例子
與編寫功能測試用例相比,編寫用于性能測試的測試用例需要不同的心態(tài)。
驗(yàn)證應(yīng)用程序是否能夠處理一定數(shù)量的同時(shí)用戶
當(dāng)網(wǎng)絡(luò)連接緩慢時(shí),驗(yàn)證負(fù)載下應(yīng)用程序的響應(yīng)時(shí)間是否在可接受的范圍內(nèi)
驗(yàn)證應(yīng)用程序在低,正常,中等和重負(fù)載條件下的響應(yīng)時(shí)間
檢查服務(wù)器在高負(fù)載下是否仍可正常運(yùn)行而不會(huì)崩潰
驗(yàn)證峰值負(fù)載后應(yīng)用程序是否恢復(fù)到正常行為
驗(yàn)證峰值負(fù)載下的數(shù)據(jù)庫服務(wù)器以及應(yīng)用程序的CPU和內(nèi)存使用情況
性能測試生命周期的各個(gè)階段如下
非功能需求分析
性能測試策略
性能測試設(shè)計(jì)
性能測試執(zhí)行
性能測試結(jié)果分析
基準(zhǔn)和建議
功能測試 | 非功能測試 |
---|---|
系統(tǒng)實(shí)際執(zhí)行的是功能測試 | 系統(tǒng)的性能如何是非功能測試 |
確保您的產(chǎn)品符合客戶和業(yè)務(wù)要求,并且沒有任何重大錯(cuò)誤 | 確保產(chǎn)品符合客戶期望 |
驗(yàn)證軟件與預(yù)期輸出的準(zhǔn)確性 | 驗(yàn)證軟件在各種負(fù)載條件下的行為 |
在非功能測試之前執(zhí)行 | 在功能測試后執(zhí)行 |
功能測試用例的示例是驗(yàn)證登錄功能 | 非功能測試用例的示例是檢查是否在不到2秒的時(shí)間內(nèi)加載了主頁 |
測試類型為 ·單元測試 ·冒煙測試 ·用戶接受度 ·集成測試 ·回歸測試 ·本地化 ·全球化 ·互操作性 | 測試類型包括 · 性能測試 ·容量測試 ·可伸縮性 ·可用性測試 ·負(fù)載測試 ·壓力測試 ·一致性測試 ·可移植性測試 ·災(zāi)難恢復(fù)測試 |
可以手動(dòng)或自動(dòng)執(zhí)行 | 如果自動(dòng)化,則可以高效執(zhí)行 |
性能測試 | 負(fù)載測試 | 壓力測試 |
---|---|---|
它是負(fù)載和壓力測試的超集 | 它是性能測試的一部分 | 它是性能測試的一部分 |
性能測試的目標(biāo)是為應(yīng)用程序設(shè)置基準(zhǔn)和標(biāo)準(zhǔn) | 負(fù)載測試的目標(biāo)是確定系統(tǒng)的上限,設(shè)置應(yīng)用程序的SLA并檢查系統(tǒng)如何處理重負(fù)載 | 壓力測試的目的是發(fā)現(xiàn)系統(tǒng)在極端負(fù)載下的行為以及如何從故障中恢復(fù) |
負(fù)載極限在中斷閾值之上和之下 | 負(fù)載極限是突破的門檻 | 負(fù)載極限高于中斷閾值 |
性能測試中檢查的屬性是速度,響應(yīng)時(shí)間,資源使用,穩(wěn)定性,可靠性和吞吐量 | 在負(fù)載測試中檢查的屬性是峰值性能,服務(wù)器吞吐量,各種負(fù)載級(jí)別下的響應(yīng)時(shí)間,負(fù)載平衡要求等。 | 在壓力測試中檢查的屬性是穩(wěn)定性響應(yīng)時(shí)間,帶寬容量等, |
性能測試的類型如下
負(fù)載測試
壓力測試
浸泡/耐力測試
峰值測試
量測
可伸縮性測試/容量測試
進(jìn)行了負(fù)載測試,以驗(yàn)證系統(tǒng)/應(yīng)用程序可以處理預(yù)期的事務(wù)數(shù)量,
并驗(yàn)證系統(tǒng)/應(yīng)用程序在正常和峰值負(fù)載條件(用戶數(shù)量)下的行為。
負(fù)載測試是性能測試的子集,是一種非功能測試。
容量測試用于確定系統(tǒng)/應(yīng)用程序在性能目標(biāo)變得無法接受之前可以成功處理多少用戶。
這使我們能夠避免將來出現(xiàn)潛在問題,例如增加的用戶群或增加的數(shù)據(jù)量。
它可以幫助用戶確定擴(kuò)展策略,從而確定系統(tǒng)是應(yīng)該向上擴(kuò)展還是向外擴(kuò)展。
它主要在電子商務(wù)和銀行網(wǎng)站上完成。有一些例子。這種測試有時(shí)稱為可伸縮性測試。
壓力測試用于在負(fù)載增加超過系統(tǒng)設(shè)計(jì)預(yù)期的情況下驗(yàn)證系統(tǒng)的行為。
該測試解決了當(dāng)我們通過施加超出設(shè)計(jì)預(yù)期的負(fù)載給系統(tǒng)施加壓力時(shí),哪些組件首先會(huì)失敗。
這樣我們就可以設(shè)計(jì)出更強(qiáng)大的系統(tǒng)。
浸泡測試又名耐力測試。長時(shí)間在高負(fù)載下運(yùn)行系統(tǒng)以識(shí)別性能問題稱為“浸泡測試”。
這是為了確保該軟件可以長時(shí)間處理預(yù)期的負(fù)載。
峰值測試用于確定系統(tǒng)負(fù)載突然增加(大量用戶)時(shí)系統(tǒng)的行為。
用戶面臨的一些常見性能問題是
加載時(shí)間更長
響應(yīng)時(shí)間短
可擴(kuò)展性差
諸如編碼錯(cuò)誤或硬件問題之類的瓶頸
性能測試的一些參數(shù)是:
內(nèi)存使用情況
處理器使用率
帶寬
內(nèi)存
網(wǎng)絡(luò)輸出隊(duì)列長度
響應(yīng)時(shí)間
每秒CPU中斷
承諾的內(nèi)存
線程數(shù)
等待
選擇最佳性能測試工具進(jìn)行性能測試時(shí)需要考慮的一些因素。
預(yù)算(許可費(fèi)用)
牌照種類
簡易安裝
協(xié)議支持
客戶偏愛負(fù)載測試工具
培訓(xùn)員工使用所選工具的成本
加載工具的硬件/軟件要求
工具供應(yīng)商支持和更新政策
詳細(xì)報(bào)告
云端整合
一些流行的性能測試工具如下
Web加載
LoadRunner
NeoLoad
Apache JMeter
LoadUI專業(yè)版
吞吐量是性能測試中的關(guān)鍵指標(biāo)之一。
它是指在給定時(shí)間段內(nèi)在客戶端和服務(wù)器之間傳輸?shù)臄?shù)據(jù)量,通常以每秒位數(shù)(bps)表示。
它是根據(jù)每次請求數(shù)計(jì)算的。
吞吐量=(請求數(shù))/(總時(shí)間)
示例:每秒比特,每秒字節(jié)(Bps),每秒千字節(jié)(KBps),每秒兆字節(jié)(MBps)和每秒千兆字節(jié)(GBps)。
如果服務(wù)器在一分鐘內(nèi)收到60個(gè)請求,則吞吐量為每秒一個(gè)請求。
如果它在一分鐘內(nèi)收到120個(gè)請求,則吞吐量為每秒兩個(gè)請求。等等。
并發(fā)用戶數(shù)是給定時(shí)間與應(yīng)用程序交互的用戶數(shù)。
所有用戶可能都處于某種會(huì)話的中間,但是他們都在執(zhí)行不同的操作。
性能測試中的協(xié)議是一種用于客戶端和服務(wù)器之間通信的語言。
通過在性能測試工具中選擇協(xié)議,指示該工具捕獲所選客戶端與其服務(wù)器的所選語言的通信。
一些協(xié)議是:
HTTP
HTTPS
FTP
Web Services
Citrix
參數(shù)化用于用參數(shù)替換腳本中的硬編碼值。
關(guān)聯(lián)用于在性能測試中捕獲測試腳本中的動(dòng)態(tài)值,并防止腳本在執(zhí)行期間失敗。
如果在相同或不同用戶重放操作時(shí),每個(gè)用戶操作的值都發(fā)生變化,則稱為動(dòng)態(tài)值。
在得出任何結(jié)論之前,應(yīng)在應(yīng)用程序上進(jìn)行此測試,以獲取我們進(jìn)一步測試的參考。
這些測試應(yīng)有助于我們確定服務(wù)器的正常響應(yīng)。
然后,我們可以使用這些值在其他測試中設(shè)置斷言。
基準(zhǔn)測試是將軟件或硬件的性能與其他組織設(shè)定的行業(yè)標(biāo)準(zhǔn)進(jìn)行比較的過程。
在這里,我將結(jié)束本性能測試面試問題帖子。
如果您發(fā)現(xiàn)我沒有涵蓋某些問題,請?jiān)谙旅娴脑u論部分中告訴我。
我將嘗試更新此性能測試面試問題與解答。
聯(lián)系客服