即時通訊 APP 后端性能測試思路
原創發布:https://www.cnblogs.com/huanghaopeng/
作者信息:HHP
一、概述
常見的即時聊天APP通常包含 即時通訊(IM) 和 實時通訊(RTC) 兩種場景的功能實現
- 即時通訊 指文字聊天、語音消息發送、文件傳輸、附件發送,數據路徑:C->S->C 或 S->C 或 C->S
- 實時通訊 指語音、視頻電話會議
- 即時通訊 對消息送達率相對更敏感,寧可延遲,不可丟包(文本消息是可以稍微延遲送達的,但是不能丟失)
- 實時通訊 則對消息延遲相對更敏感,寧可丟包,不可延遲(語音畫面是允許掉幀的,但是畫面和語音總是延遲就沒法正常對話了)
二、性能需求
關鍵角色 | 性能體驗 |
---|---|
用戶視角1(即時通訊) | 連接延遲和穩定性、消息送達率、消息發送延遲 |
用戶視角2(實時通訊) | 會話連接的延遲、會話建立的延遲、語音畫面的延遲、語音畫面丟幀 |
用戶視角3(其它功能) | 注冊登錄、拉取通訊錄、個性化內容加載、掃碼識別 等 |
運維視角 | 針對於同時支持會話數的橫向擴容、即時通訊過程產生的內容存儲、確保即時通訊可靠性的多線機房 |
開發視角 | 核心業務接口的QPS、核心業務的TPS |
運營視角 | 線下推廣 與 線上推廣 所涉及主要功能場景:注冊、登錄、添加好友 等 |
三、測試實現
1)通訊協議
- 為了滿足 即時通訊 對送達率和連接穩定性的這個更高優先級的需求,通常采用 TCP 協議,如 MQTT、XMPP
- 實時通訊 中,偶爾的畫面卡頓、丟包是可接受的,但延遲要求較高,因此通常采用 UDP 協議,如 WebRTC
2)測試工具
工具 | 支持協議 | 說明 |
---|---|---|
Locust | 自帶 HTTP Client,其它協議需自行實現 Client | 采用(單進程)協程+IO復用實現並發負載 |
Jmeter | / | 采用多線程實現並發負載 |
四、測試策略
說明:本質上是圍繞 建立連接的延遲、連接穩定性、數據報文延遲、數據報文送達率 的測試。
1)核心角色與業務
即時通訊
角色 | 業務類型 | 前置條件 | 備注 |
---|---|---|---|
用戶 | 私聊:一對一文本消息收發 | 雙方在線(C->S->C) | |
用戶 | 私聊:一對一文本消息收發 | 單方在線(先 C->S 后 S->C) | |
用戶 | 群聊:一對多文本消息收發 | 部分在線 & 全員在線 | |
用戶 | 私聊:一對一附件消息收發 | 單、雙方在線(均為:先C->S 后 S->C) | |
用戶 | 群聊:一對多附件消息收發 | 部分在線 & 全員在線 | |
用戶 | 離線消息收取 | / |
實時通訊
- 語音通話 & 語音+視頻通話:參考“即時通訊”
其它功能
- 用戶 的 線上交互場景:注冊、登錄、添加好友 等
- 用戶 的 線下交互場景:錢包、卡包、積分、憑證展示 等
- ……(其它參考產品設計)
2)測試用例編寫參考
用戶角色
- 用戶登錄:身份驗證、通訊錄列表加載(聯系人信息、狀態、數量)、個性化內容加載
- 消息收、發(私聊):短文本、長文本、圖片、文件、鏈接等其它分享
- 消息收、發(群聊)
- 離線消息收取
- 附件收、發
- 用戶注冊、登錄
- 添加好友 / 加入群聊
風控、客服 等管理運營角色
- 略(參考產品設計)
3)測試場景設計關注點
0、業務配比
- 對文本、消息、語音、語音+視頻的業務配比,參考日度業務量、支持連接的需求進行正確估算配置
1、性能基准
- 對 連接 的 最高支持數量、建立延遲、穩定性、連接建立TPS 進行測試
- 對 消息 的 TPS、送達延遲、送達率 進行測試
- 對 版本迭代 中的性能優化前后的基准數據進行比較
2、負載測試
- 關注 日度 業務峰值負載(業務量、時間、時長)
- 關注 周/月 中業務峰值負載(業務量、時間、時長)
- 關注 運營推廣 過程中所涉及的業務負載(業務量、時間、時長)
- 關注 意外負載 的出現時機、負載特點
3、容量測試
- 基於“性能基准”結果,參考:1000 - 2000 - 3000 - XXXX 的方式進行在線用戶數量的遞增
- 關注 良好性能體驗 條件下的最高支持在線用戶數
- 關注 可容忍上限 條件下的最高支持在線用戶數
- 關注 系統資源充裕 條件下的最高支持在線用戶數
- 關注 系統資源不足 條件下的最高支持在線用戶數
4、可用性測試
- 以施加峰值負載的方式達到考核時間周期的業務量
5、可靠性測試
- 關注 網絡異常 對性能基准的影響
- 關注 服務異常 對性能基准的影響
- 關注 冗余節點 隨機的上、下線對性能基准的影響
- 關注 冗余節點 隨機的上、下線對:功能可用性、事務性、性能、持久化設計 的影響
6、資源規划 / 擴容配置
- 關注核心業務在性能上橫向擴容過程中,節點增加與性能削減的關系
- 關注即時通訊對服務產生的存儲空間占用開銷
- 關注即時通訊對服務產生的帶寬占用開銷
4)測試場景設計
(參考產品設計 與“測試場景設計關注點”:略)
測試場景 | 場景描述 | 場景目標 | 執行策略 | 期望結果 |
---|---|---|---|---|
性能基准測試 | ||||
負載測試 | ||||
容量測試 | ||||
可用性測試 | ||||
可靠性測試 | ||||
…… |
五、備注
腳本需要實現 文本消息發送 和 文本消息送達 的斷言、延遲、送達率測試。