壓力工具
壓測工具: jmeter,loadrunner fiddler
分析調優工具: visualvm, yourkit, jps, jstat
技能要求
制定測試計劃及其策略,
進行測試執行及其分析,
並能對系統性能瓶頸進行定位及其優化.
- 開發語言:java等
- 操作系統:centos等
- 數據庫:mysql,pg等
- 測試工具:jmeter等
- 網絡知識:知道網絡負荷,數據大小,能允許多少負荷
- 業務知識:脫離業務的技術就是扯淡
性能測試目的
發現性能瓶頸
測試範圍:
- 負載測試: 逐步加壓, 達到既定性能閾值.閾值的設定應該是小於等於某個值.舉例.cpu使用率小於80%, 內存使用率小於70%
- 壓力測試: 逐步加壓,使得系統的某些資源達到飽和,甚至不能使用. 簡單的說就是,把系統整崩潰.
- 併發測試: 同一時間,多個虛擬用戶同時訪問同一模塊,同一功能,通常測試方法是設置集合點.
- 容量測試: 通常數據庫層面, 獲取數據庫的最佳容量能量.
- 可靠性測試: 又稱爲穩定性或者疲勞測試, 高壓情況下,系統穩定運行時間,比如cpu使用率80%以上,7*24小時運行,是否穩定.
- 異常測試: 又稱爲失敗測試. 系統架構方面的測試. 宕機,掛機等情況 系統的反應.(容災能力)
工作流程
需求分析 → 性能指標指定 → 腳本開發 → 場景設置(模擬生產環境) → 監控部署(看得到) → 測試執行
→ 性能分析 → 性能調優 → 測試執行… → 測試報告
常見系統應用分層架構
顯示層(view): web Android ios h5
↓
邏輯控制層(controller): API
↓
數據存儲層(model): mysql, mongodb, redis …
可以知道需要監控: 數據庫 程序 服務器 頁面加載 圖片加載速度等等
性能測試指標定義
前提:事務的概念
從客戶端發起一個或者多個到客戶端接收到從服務器返回的響應.
舉例: 銀行轉賬.
TPS(Transaction Per Second)
每秒中系統能夠處理的事務數.
注意: 事務數不一定等於請求數,因爲一個事務可能不只一項請求.
響應時間
客戶端發起開始,到客戶端收到服務器返回的響應,整個過程消耗的時間.
事務響應時間
事務可能是一個或多個請求組成, 事務響應時間主要是針對用戶而言的,例如轉賬
併發
多用戶在系統進行統一操作, 例如秒殺
多用戶在系統上進行不同操作,例如針對不能商品秒殺,瀏覽不能商品
併發用戶數
同一單位時間內對系統發起請求的用戶數量. 例如,1秒最多訪問多少次
吞吐量
一次性能測試過程中網絡傳輸的數據量的綜合. 例如:最多同時下載多少圖片
這個和網絡帶寬,磁盤IO等有關係
吞吐率
單位時間內網絡上傳輸的數據量
吞吐率 = 吞吐量/傳輸時間
例如:十秒總共下載了500m圖片,那麼吞吐量就是50m/s
點擊率
每秒用戶像服務器提交的請求數量.
web應用中,每秒用戶在頁面進行了多少次點擊. 注意,每次點擊,可能發送了多次請求.比如:插入數據,寫log,更新之前的數據
資源使用率
系統資源使用情況,和硬件有關
cpu,內存, IO等
性能測試的需求分析
- 明確測試指標
- 明確測試場景
測試重點是在什麼場景,達到什麼要求就算過關.
新系統方法:
- 同行比較
- 業務預期
老系統:
- 對此以往的用戶使用行爲以及用戶量
性能測試工具
人類最大的進步就是學會了製造使用工具
參考: https://www.zhihu.com/question/279196504