1.什么是性能測試?
概念:
使用自動化的工具登夫,模擬不同的場景功咒,對軟件的各項性能指標進行測試和評估跋理。
軟件的范圍包括:
后臺處理程序(開發(fā)寫的代碼)
中間件(應用服務器)震放、數(shù)據(jù)庫比默、程序架構(gòu)等等
服務器資源的消耗(CPU幻捏、內(nèi)存、磁盤命咐、網(wǎng)絡)
性能測試的目的:
1篡九、評估當前的系統(tǒng)能力 驗收第三方提供的軟件獲取關(guān)鍵的性能指標,與同類型的軟件對比(例如:跑分)
2醋奠、發(fā)現(xiàn)性能問題后榛臼,尋找性能瓶頸,優(yōu)化性能(例如:12306春運時服務故障)
3窜司、評估軟件能否滿足未來的性能需要(例如:淘寶11在2020年的銷售額)
性能測試和功能測試的區(qū)別
焦點:
功能:關(guān)注系統(tǒng)對用戶需求規(guī)則的滿足程度沛善。關(guān)注點(正向、逆向)
性能:關(guān)注系統(tǒng)對用戶業(yè)務場景的滿足程度塞祈。關(guān)注點(時間金刁、資源)
關(guān)系:
在一個項目中,功能測試和性能測試一般都有
功能測試通過后议薪,才進行性能測試
為什么要進行性能測試?
業(yè)務需求
大量用戶下尤蛮,系統(tǒng)能否穩(wěn)定運行(比較多的)? ? 用于硬件服務器的選型? ? 用于軟件技術(shù)的選型
招聘需求
性能的關(guān)注點:
性能(即效率)
時間特性:服務器處理用戶請求的響應時間(卡/不卡)
資源特性:軟件在運行時,對于服務器資源的消耗情況
CPU斯议、內(nèi)存产捞、磁盤等等
性能測試分類:
基準測試
負載測試
穩(wěn)定性測試
基準測試:
狹義上講:單個用戶進行業(yè)務場景的測試,并統(tǒng)計性能的各項指標(為后續(xù)多用戶性能測試做參考對比)廣義上講:在某一個時刻進行性能測試建立一個已知的性能水平哼御,當軟硬件發(fā)生變化時再測試坯临,觀察變化對于性能產(chǎn)生的影響
負載測試
通過逐步增加系統(tǒng)負載量,測試系統(tǒng)性能的變化艇搀,在滿足性能指標的前提下尿扯,系統(tǒng)所能夠承受的最大負載量的測試。
通過負載測試焰雕,一般能找到系統(tǒng)的最優(yōu)負載和最大負載。最大負載一般項目組內(nèi)部知曉芳杏,不會對外公布矩屁。普通用戶看到的系統(tǒng)的最大能力辟宗,一般都是測試得到的最優(yōu)負載。
穩(wěn)定性測試:
在服務器穩(wěn)定運行(業(yè)務正常的負載量)的情況下吝秕,進行長時間的測試泊脐,保證服務器能夠正常運行。長時間:1天烁峭、1周
其他分類:
并發(fā)測試:
系統(tǒng)在短時間內(nèi)同時處理大量請求容客,查看系統(tǒng)的并發(fā)處理能力。
壓力測試:
測試系統(tǒng)在強負載的情況下约郁,測試系統(tǒng)在峰值情況下的操作缩挑,是否具有良好的容錯能力及錯誤的恢復能力。穩(wěn)定性壓力測試:在系統(tǒng)高負載的情況下(接近C點)鬓梅,長時間運行(24小時)供置,查看系統(tǒng)的處理能 力,破壞性壓力測試:在系統(tǒng)極限負載的情況下(C-D點)绽快,對系統(tǒng)進行壓力測試芥丧,查看系統(tǒng)容錯能力和錯 誤恢復能力。
容量測試:
關(guān)注系統(tǒng)在極限情況下的各種極限參數(shù)值坊罢。
性能測試的指標
指標
在性能測試的過程中续担,記錄的一系列的數(shù)據(jù)值。用這些實際記錄的數(shù)據(jù)值與需求中的性能要求做 對比活孩,達成需求要求則無問題;未達到需求要求則說明是性能bug物遇。
常見的性能指標:
響應時間
并發(fā)數(shù)
吞吐量
錯誤率
點擊數(shù)
資源利用率
響應時間:
客戶端發(fā)送請求,到客戶端收到服務器返回的響應诱鞠,過程中所經(jīng)歷的全部時間挎挖,都是響應時間 響應時間 = 應用程序處理時間(A1+A2+A3) + 網(wǎng)絡傳輸時間(N1+N2+N3+N4)
并發(fā)用戶數(shù):
系統(tǒng)用戶數(shù):系統(tǒng)注冊的總用戶數(shù) (微信號稱20億用戶)
在線用戶數(shù):某段時間內(nèi)訪問系統(tǒng)的用戶數(shù),這些用戶不一定同時向系統(tǒng)提交請求? (每天日活1億人)
并發(fā)用戶數(shù):在某一時刻向系統(tǒng)提交請求的用戶數(shù) (晚上11點整還在和對象你儂我儂的還有500w)
吞吐量:
英文為Throughput航夺,單位時間內(nèi)蕉朵,系統(tǒng)處理客戶端請求的數(shù)量。衡量服務器性能好壞的直接指標阳掐。 從不同維度來描述:
業(yè)務維度: 業(yè)務數(shù)/秒始衅,業(yè)務數(shù)/小時,業(yè)務數(shù)/天
網(wǎng)絡維度:字節(jié)數(shù)/秒缭保,字節(jié)數(shù)/小時汛闸,字節(jié)數(shù)/天
技術(shù)維度:TPS(每秒事務數(shù))、QPS(每秒請求數(shù))
QPS:? 服務器每秒鐘處理的接口請求數(shù)量艺骂。(一個服務器中有多個接口诸老,QPS指的是所有接口在同一個單位時間內(nèi)的接口處理數(shù)量之和)
TPS:服務器每秒鐘處理的事務請求數(shù)量。 一個事務通常指的是界面上的一個操作钳恕。一個事務可以包含一個或者多個接口請求别伏。)(
點擊數(shù):
點擊數(shù)不是指在頁面上的一次點擊蹄衷。 指的是頁面(html代碼、圖片厘肮、js愧口。。类茂。)加載時耍属,向服務器發(fā)送的請求數(shù)量 可以用每秒點擊數(shù)來衡量web服務器的處理能力。
錯誤率:
錯誤率不是功能有錯誤或者bug 指的是在系統(tǒng)高負載的情況下巩检,業(yè)務失敗的次數(shù)/業(yè)務的總次數(shù) * 100%
資源利用率:
計算機各個硬件資源的使用情況
性能測試的流程:
需求分析:
熟悉被測系統(tǒng)
熟悉系統(tǒng)的業(yè)務功能
熟悉系統(tǒng)的技術(shù)架構(gòu)
明確性能測試內(nèi)容
從業(yè)務角度厚骗,挑選核心業(yè)務進行測試
從技術(shù)角度,挑選邏輯復雜度高碴巾、數(shù)據(jù)量大的業(yè)務進行測試
確定測試策略
負載測試溯捆、穩(wěn)定性
確定性能測試指標
有需求:按照需求來測試
沒有需求:同類型軟件對比,對未來數(shù)據(jù)進行預估
性能測試計劃:
從模板內(nèi)容來說厦瓢,與功能測試基本一致提揍,主要就是寫清楚誰來做、怎么做煮仇。 主要內(nèi)容:
1劳跃、項目背景 —— 簡介
2、測試目的
3浙垫、測試范圍 —— 對于需求分析中的性能測試內(nèi)容
4刨仑、測試策略 —— 對應于需求分析中的測試策略、
5夹姥、風險控制 —— 技術(shù)風險杉武、人力風險
6、交付清單 —— 每個階段的產(chǎn)出物
7辙售、進度和分工 —— 誰在什么時候做什么事
性能測試用例:
要素:用例標題轻抱、用例編號、用例預制條件旦部、用例步驟祈搜、用例預期結(jié)果、用例實際結(jié)果(實際結(jié)果:需要監(jiān)控的各項性能指標)
性能測試執(zhí)行:
測試腳本的編寫/錄制
建立測試環(huán)境 ——竟可能與用戶的環(huán)境一致 執(zhí)行測試腳本
性能測試監(jiān)控 —— 與測試腳本執(zhí)行同時進行
性能分析和調(diào)優(yōu)
測試人員只需要確定是否存在性能bug士八,有bug則提缺陷報告
問題分析和調(diào)優(yōu)由開發(fā)人員來完成容燕,測試人員配合驗證調(diào)優(yōu)結(jié)果(可能需要經(jīng)過多輪驗證)? ? ?
性能測試報告:
1、性能測試的過程記錄婚度,性能測試發(fā)現(xiàn)的問題蘸秘、分析
2、性能測試過程中的風險,當前是否存在風險
3秘血、給出性能測試結(jié)論(通過/不通過)味抖,經(jīng)驗和教訓评甜。