最近有些同學找我咨詢關(guān)于性能測試計劃相關(guān)的問題,原因是他們公司要做性能測試,Leader要求寫一份性能測試計劃,苦于之前沒做過相關(guān)工作,無從下手。
這篇博客,結(jié)合我個人的一些經(jīng)驗和總結(jié),聊聊如何制定一份較為全面的性能測試計劃。。。
?
一、測試背景
首先要闡述本次性能測試的背景,即被測系統(tǒng)類型,面向哪些用戶,具備什么特點,為什么要進行性能測試,預期的一些指標等等。
比如:為了保證“雙十一”大促期間,系統(tǒng)能穩(wěn)定運行且保障業(yè)務的高可用,進行性能測試。
核心:評估系統(tǒng)性能、分析性能變化趨勢、定位系統(tǒng)瓶頸風險、協(xié)助規(guī)劃系統(tǒng)容量。
?
二、測試目的
測試的目的要根據(jù)測試背景來分析設定,比如:
1、線上服務由于流量過高某部分應用掛了,那測試目的就是:定位瓶頸、分析調(diào)優(yōu)驗證;
2、運營做了拉新和新的渠道拓展,那測試目的就是:評估系統(tǒng)性能是否滿足新的線上業(yè)務;
3、系統(tǒng)架構(gòu)由集群技改為微服務,那測試目的就是:驗證穩(wěn)定性、可用性、單實例容量,為線上服務擴容提供容量規(guī)劃數(shù)據(jù);
?
三、測試范圍
通過需求調(diào)研,分析用戶使用場景,對業(yè)務數(shù)據(jù)量增長變化趨勢及峰值活躍用戶等數(shù)據(jù)做定量分析,確定被測系統(tǒng)的應用范圍,比如訂單+購物車+商品+支付服務。
業(yè)務歸屬模塊 業(yè)務涉及場景
訂單 創(chuàng)建訂單
取消訂單
購物車 添加購物車
刪除購物車
商品 商品列表
商品詳情
支付 余額支付
支付寶支付
微信支付
?
四、術(shù)語約定
這里的術(shù)語指的是:涉及本次性能測試相關(guān)的一些專業(yè)術(shù)語說明,目的是統(tǒng)一口徑,做解釋說明,便于參與本次性能測試的相關(guān)人員理解。常見術(shù)語如下:
術(shù)語名稱 術(shù)語釋義
并發(fā) 單位時間內(nèi)(S)模擬客戶端發(fā)起的請求數(shù)量
穩(wěn)定性 驗證系統(tǒng)在長時間(24h/48h)負載情況下的性能表現(xiàn)
高可用 驗證系統(tǒng)在一部分服務宕機后能否正常提供服務以及服務恢復速率
TPS 每秒事務數(shù),即系統(tǒng)單位時間內(nèi)(S)的請求處理能力
RT 響應時間,及系統(tǒng)處理一筆請求所耗費的時間
請求成功率 在測試過程中,系統(tǒng)成功處理請求占總請求數(shù)的百分比
PS:術(shù)語約定以實際情況為準,還要考慮性能測試計劃的受眾對于性能測試的了解程度,本約定旨在統(tǒng)一描述的口徑,降低溝通成本。
?
五、環(huán)境說明
一般來說,進行性能測試的環(huán)境都是在UAT或者獨立的性能測試環(huán)境,但為了準確描述環(huán)境類型和配置,以及測試環(huán)境和生產(chǎn)環(huán)境的區(qū)別,建議對生產(chǎn)環(huán)境和測試環(huán)境進行對比說明。
1、生產(chǎn)環(huán)境
①、系統(tǒng)架構(gòu)
PS:上圖只是一個簡略的微服務類型系統(tǒng)架構(gòu),只做示意,理解即可。
②、服務配置
服務名稱 數(shù)量 配置 備注
gateway server 10 2C3G 網(wǎng)關(guān)服務,身份驗證和請求轉(zhuǎn)發(fā)
web server 3 2C3G ?
app server 5 2C3G ?
Redis 3 4G 哨兵模式,一主兩從
DB 2 8C16G 一主一從
2、測試環(huán)境
①、系統(tǒng)架構(gòu)
②、服務配置
服務名稱 數(shù)量 配置 備注
gateway server 5 2C3G 網(wǎng)關(guān)服務,身份驗證和請求轉(zhuǎn)發(fā)
web server 2 2C3G ?
app server 2 2C3G ?
Redis 2 4G 哨兵模式,一主一從
DB 2 8C16G 一主一從
3、負載機配置
負載機(machine)即模擬客戶端發(fā)送請求的機器,一般情況下,說明負載機的硬件配置,數(shù)量,IP,發(fā)壓策略即可。
4、網(wǎng)絡
即負載機和性能測試環(huán)境的網(wǎng)絡狀況,比如國內(nèi)公網(wǎng)/同一VPC內(nèi)網(wǎng),防火墻策略等。
?
六、需求分析
需求分析一般有這幾個階段:需求接入→需求收集→需求分析,主要內(nèi)容如下:
1、業(yè)務模型
如下是一個典型的電商平臺核心業(yè)務鏈路圖,涉及到登錄、首頁、商品、購物車、支付、分享等模塊。
2、性能指標
這里的性能指標包含如下兩項:
①、業(yè)務性能指標
即預期的TPS、RT、請求成功率(一般默認請求成功率≥99.99%)。
②、硬件性能指標
即服務端資源耗用指標,常規(guī)的資源監(jiān)控指標有:CPU使用率、Memory使用率、系統(tǒng)IO、網(wǎng)絡IO等。
?
七、測試策略
本次性能測試所采用的測試策略,比如:
探測系統(tǒng)性能拐點,需要階梯式壓測;
探測系統(tǒng)在可接受的性能指標下最大的處理能力,需要采用負載、容量測試策略;
驗證系統(tǒng)的穩(wěn)定性和高可用,需要采用穩(wěn)定性、高可用測試策略;
驗證系統(tǒng)在不同配置下的性能表現(xiàn),一般采用配置測試策略;
1、測試策略及場景
①、容量測試
場景名稱
01_登錄
02_首頁
執(zhí)行時間
10min
業(yè)務配比
100%
測試策略
容量測試
測試目的
不斷增加負載,驗證系統(tǒng)單節(jié)點的最大性能表現(xiàn)
②、穩(wěn)定性測試
場景名稱
混合場景
執(zhí)行時間
24h
業(yè)務配比
按生產(chǎn)業(yè)務配比,等比縮放
測試策略
穩(wěn)定性測試
測試目的
驗證系統(tǒng)長期運行的穩(wěn)定性以及是否存在OOM之類的問題
PS:如上表格描述,依然作為一個示例來說明,主要內(nèi)容包括:場景編號、測試類型、涉及業(yè)務場景、業(yè)務配比、執(zhí)行時間、測試目的。
2、測試監(jiān)控策略
監(jiān)控對象 指標范圍 監(jiān)控工具
CPU ≤90% nmon、zabbix
Memory ≤70%
網(wǎng)絡IO 無明顯IO瓶頸
JVM 無頻繁FGC情況 jmap、jstat
?
八、準備工作
準備工作主要包含如下幾項:
準備事項 準備內(nèi)容 責任人 預計完成時間
工具準備 負載工具、監(jiān)控工具、分析工具 測試/運維 0.5工作日
腳本準備 測試腳本 測試 0.5工作日
環(huán)境準備 機器配置、服務部署聯(lián)調(diào)、腳本調(diào)試 運維/開發(fā) 1工作日
數(shù)據(jù)準備 鋪底數(shù)據(jù)、測試數(shù)據(jù)、參數(shù)化數(shù)據(jù)、緩存數(shù)據(jù) DBA/開發(fā)/測試 1工作日
?
九、組織架構(gòu)
組織架構(gòu)即本次性能測試涉及到的團隊各角色成員,主要包含這些:PM角色、測試、開發(fā)、運維、DBA、網(wǎng)絡、基礎架構(gòu)。示例:
?
十、風險分析
羅列開始執(zhí)行前會影響本次性能測試工作開展的風險項以及應對方案,比如:
風險類型 風險描述 風險級別 應對方案
交付風險 UAT階段發(fā)現(xiàn)較嚴重的功能缺陷 高 測試時間順延,或增加對應人員
變更風險 臨時需求變更、新增需求 高 需求評審是否加入本次測試范圍,階段性交付
數(shù)據(jù)風險 數(shù)據(jù)脫敏耗時較長、測試數(shù)據(jù)不可用 中 重新擬定數(shù)據(jù)準備方案,小范圍數(shù)據(jù)驗證
環(huán)境風險 部署出現(xiàn)問題,聯(lián)調(diào)進度緩慢、網(wǎng)絡帶寬瓶頸 中 更換環(huán)境、增加資源配置、擴展帶寬
?
十一、交付清單
在性能測試計劃中,需要說明本次性能測試各階段的交付物,主要包含這幾項:性能測試計劃&方案、測試腳本、性能缺陷統(tǒng)計、輪次小節(jié)、性能測試報告。
?
十二、階段進度
這里主要指的是從需求階段到結(jié)束,各個階段的工作進展以及資源安排,建議采用看板的方式,及時更新進度,方便推進工作的開展。示例如下:
階段
事項
開始時間
結(jié)束時間
狀態(tài)
責任人
需求階段
需求評審
?
?
完成
多方參與
系統(tǒng)架構(gòu)圖
?
?
完成
開發(fā)
需求調(diào)研
?
?
完成
性能測試人員
準備階段
環(huán)境交付
?
?
完成
運維、開發(fā)
應用部署
?
?
完成
運維、開發(fā)
數(shù)據(jù)準備
?
?
完成
開發(fā)、DBA、測試
腳本開發(fā)
?
?
完成
性能測試人員
實施階段
執(zhí)行壓測
?
?
未完成
性能測試人員
服務監(jiān)控
?
?
未完成
運維、測試
數(shù)據(jù)收集
?
?
未完成
性能測試人員
結(jié)束
報告評審
?
?
未完成
多方評審
?
如上,就是一個較為完整的性能測試計劃內(nèi)容,當然,完成性能測試計劃并評審通過后,就可以進入測試執(zhí)行階段了。。。
?
熱門工具 換一換