性能測試思考及入門

筆記(茹炳晟老師 第28課 帶你一起解讀不同視角的軟件性能與性能指標 )

 

談及軟件性能,談的到底是什麼?--從對象羣體分類

web類應用和手機端應用:一般以終端用戶感受到的端到端的響應時間來描述系統的性能。

非交互式應用(比如典型的電信和銀行後臺處理系統):響應時間關注更多的是事件處理的速度,以及單位時間的事件吞吐量


衡量軟件性能的四個維度
  不同的對象羣體分爲四大類:終端用戶、系統運維人員、軟件設計開發人員、性能測試人員

終端用戶:軟件系統的最終使用者(直接決定系統的應用前景)
其他三類人員:直接決定一個系統交付到用戶手中的性能

終端用戶(軟件系統使用者):
   軟件性能表現爲用戶進行業務操作時的主觀響應時間。
   響應時間是終端用戶對系統性能的最直觀印象,包括系統響應時間和前端展示時間

   系統響應時間:反應的是系統能力。進一步細分:應用系統處理時間、數據庫處理時間、網絡傳輸時間等
   前端展示時間:取決於用戶端的處理能力

系統運維人員

    單個用戶的響應時間
    【主要關注點】大量用戶併發訪問的負載及高負載情況下的系統健康狀態、併發處理能力、當前部署的系統容量、可能的系統瓶頸、系統配置層面的調優、數據庫的調優、長時間運行穩定性和可擴展性

    系統運維人員必須在最大併發用戶數和系統響應時間之間權衡取捨。

    從全局利益最大化角度,系統具有更大併發用戶承載能力的價值更大。

    目前,有些系統爲了能夠承載更多的併發用戶,會犧牲等待時間而引入預期的等待機制(如:火車票購票網站)

軟件設計人員
    
    關注點:性能相關的設計和實現細節

    軟件性能包括5大方面:算法設計、架構設計、性能最佳實踐、數據庫相關、軟件性能的可測試性

    算法設計:
      核心算法的設計與實現是否高效;
      必要時,設計上是否採用buffer機制以提高性能,降低I/O;
      是否存在潛在的內存泄漏;
      是否存在併發環境下的線程安全問題;
      是否存在不合理的線程同步方式;
      是否存在不合理的資源競爭;

    架構設計:
       站在整體系統的角度,是否可以方便地進行系統容量和性能擴展;
       應用集羣的可擴展性是否經過測試和驗證;
       緩存集羣的可擴展性是否經過測試和驗證;
       數據庫的可擴展性是否經過測試和驗證。

    ......

    系統部署級別的性能測試不在軟件開發人員考慮範圍內

性能測試人員
    關注點:算法設計、架構設計、性能最佳實踐、數據庫相關、軟件性能的可測試性

    需要具備的技能

  •       性能需求的總結和抽象能力
  •       根據性能測試目標,精準的性能測試場景設計和計算能力
  •       性能測試場景和性能測試腳本的開發和執行能力
  •       測試性能報告的分析解讀能力
  •       性能瓶頸的快速排查和定位能力
  •       性能測試數據的設計和實現能力
  •       互聯網產品全鏈路壓測的設計與執行能力,能夠和系統架構師一起處理流量標記、影子數據庫等的技術設計能力
  •       深入瞭解性能測試工具的內容實現原因,可以對性能測試工具進行擴展二次開發
  •       極寬的知識面。面:系統架構、存儲架構、網絡架構等全局知識;點:數據庫SQL語句的執行計劃調優、JVM垃圾回收(GC)機制、多線程常見問題等

      

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章