軟件性能測試,深聊性能測試,從入門到放棄之:性能測試技術棧,看完這篇,保證刷新你對性能測試的認知~~

 2023-12-25 阅读 38 评论 0

摘要:性能測試技術棧1、引言2、性能測試基礎2.1 性能測試理論2.2 測試開發技能3、性能監聽診斷3.1 前端監聽診斷3.2 服務器監聽診斷3.2.1 Linux3.2.2 Windows Server3.3 中間件監聽診斷3.4 持久化產品監聽4、性能優化分析4.1 代碼分析能力4.2 架構4.3 中間件性能分析4.4 操作系統4

性能測試技術棧

  • 1、引言
  • 2、性能測試基礎
    • 2.1 性能測試理論
    • 2.2 測試開發技能
  • 3、性能監聽診斷
    • 3.1 前端監聽診斷
    • 3.2 服務器監聽診斷
      • 3.2.1 Linux
      • 3.2.2 Windows Server
    • 3.3 中間件監聽診斷
    • 3.4 持久化產品監聽
  • 4、性能優化分析
    • 4.1 代碼分析能力
    • 4.2 架構
    • 4.3 中間件性能分析
    • 4.4 操作系統
    • 4.5 數據庫分析
  • 5、持續集成及工具
  • 6、總結

1、引言

關于性能測試的理論知識、監控分析、調優及集成,小魚也是寫了不少博文,
而今天寫的這個目的,很簡單,
就是為了能更快更直接的讓小伙伴知道性能測試的技術棧。
要想成為性能測試大佬,需要掌握那些姿勢
話不多說,先展示一下性能測試技術棧的腦圖。
在這里插入圖片描述

2、性能測試基礎

軟件性能測試、這部分內容,小魚有專門整理過一篇博文,
深聊性能測試,從入門到放棄之:初識性能測試》,在這里,原有的就不再這里面重復寫了,
但是,在這里,小魚會根據上篇博文進行擴展,主要體現在:

  • 性能測試理論
  • 測試開發技能

2.1 性能測試理論

性能測試理論,是用來指導我們開展性能測試,指導我們要得到什么結果,讓我們了解測試過程是否可靠,測試結果是否具備可參考性。
而對于性能測試理論,我們主要關注以下幾點:

  • 測試需求分析要能夠準確挖掘出性能需求,圈定測試范圍,并明確性能指標
  • 測試模型要能夠盡量真是的反應系統的實際使用情況
  • 測試環境盡量對標實際(避免云主機,虛擬機)
  • 測試數據在量與結構上盡量與實際對標
  • 測試場景要考慮業務關聯,盡量還原實際情況
  • 測試監控盡可能少的影響系統性能
  • 測試執行時測試結果要趨于穩定

在這里,如果還是有些不理解的話,
別著急,別灰心,
按照小魚的套路,這些內容會在接下來的實戰篇,會詳細的講解。

2.2 測試開發技能

系統(產品)的多樣性決定了測試程序的多樣性,不是所有的系統都可以有工具可以幫助進行測試的,這個時候我們就需要自己動手開發測試程序;

性能測試六個步驟,如果了解Locust的話,可以參照小魚的python+Locust系列實戰博文:
深聊性能測試,從入門到放棄之:Locust性能自動化(二)代碼實戰
深聊性能測試,從入門到放棄之:Locust性能自動化(三)如何提高Locust性能
深聊性能測試,從入門到放棄之:Locust性能自動化(四)自定義客戶端測試

如果不懂Python流派,那也可以用java直接寫Jmeter腳本進行測試,也都是很簡單。

當當當然,如果不會開發語言,不會編寫腳本,也不是沒有版本,那就利用工具,遵循理論,不懂就問,長期積累,也可以具備這種能力的哦。

至于使用的工具,同樣,請參照《深聊性能測試,從入門到放棄之:初識性能測試第四章節:性能工具

性能測試怎么做、不懂的話,可以私信或者留言,小魚看到也會回復的。

太簡單的問題,就…,有顏值的妹子除外…

3、性能監聽診斷

性能監聽與調優,是性能測試的一個難點
當然,小魚也是在《MySQL性能監控(sql命令語句 & MONyog工具)全掌握,這一篇足以!》寫過,MySQL的性能監控診斷,
當然呢,這里,我們不僅僅說的是MySQL,還有別的呢。
接著往下看。

3.1 前端監聽診斷

目前的開發形式多采用前后端分離的方式,一套后端系統處理多套前端請求;
用戶通過APP(H5、Native、Hybrid應用)和PC中的瀏覽器訪問系統。

  • JavaScript的運用讓前端技術發展飛速;
  • APP的運用讓前端可以存儲、處理更多業務;
    隨著功能的增多就帶來性能問題,前端的性能問題也越來越成為廣泛關注的重點。
    但是幸運的是,前端應用性能的監控工具也有不少。

3.2 服務器監聽診斷

性能測試需要掌握哪些。不管我們的程序多么牛X,架構多么牛叉,
但是運行程序最后還是依靠服務器硬件,服務器硬件是性能之本,所有的性能都會反映到硬件指標上,我們想要分析性能,就需要知道服務器知識,主要體現在:

  • CPU
  • 存儲
  • 內存
  • 網絡

了解操作系統及其內核對于系統分析至關重要。所以小魚說過:性能測試是一門綜合學科,也是一個團隊的活

對于系統分析,我們要掌握:

  • 系統調用如何執行;
  • CPU是如何調度線程;
  • 優先大小的內存是如何影響性能;
  • 文件系統是如何處理IO;

對于操作系統,我們要掌握:

  • Linux
  • Windows Server

3.2.1 Linux

性能測試關注點?Linux是開源的類UNIX操作系統,Linux繼承了UNIX以網絡為核心的設計思想,是一個性能穩定的多用戶網絡操作系統。
因為越來越多的大廠用Linux作為服務器操作系統,所以針對性能測試大佬,了解掌握Linux操作時必須的。
但是,針對當前Linux/UNIX的分支也很多,比較普及的有:

  • CentOS
  • Ubuntu
  • RedHat
  • AIX
  • Solaris

3.2.2 Windows Server

Windows Server 是Microsoft Windows Server System (WSS)的核心,是服務器操作系統。
目前都是比較小型的公司在使用。
Windows Server 優點:

  • 資源監視器功能完善
  • 圖形界面畫
  • 使用方便

3.3 中間件監聽診斷

主流的中間件必須是Tomcat
Tomcat作為一個載體,幫助我們實現通信及作業功能,提供了一套規范,而我們只需要遵循規范,開發出實現業務邏輯代碼,既可以發不成系統。
它為我們省掉了基礎通信功能和多線程的開發,讓我么可以專注業務邏輯的實現。
Tomcat有一些性能指標用來反映服務的"健康情況",如:

  • 活動線程數
  • JVM內存分類
  • 垃圾回收情況
  • 數據庫連接池使用情況

3.4 持久化產品監聽

數據的持久化有結構數據、非結構數據、塊數據、對象數據,存儲時對應不同類型的存儲產品。比如:

  • 關系型數據庫:MySQL、Oracle
  • 非關系型數據庫:Redis、HBase
  • 分布式存儲:hdfs、ceph

以上這些都屬于IO操作。

IO操作一直都是性能的"重災區",因為不管什么類型的存儲,終究是把數據存儲的介質上。存儲介質廣泛使用的是固態硬盤(SSD)和機械硬盤。
機械硬盤是物理讀寫(IO),其讀寫速度相對固態硬盤相差很大,比如:

  • 我們啟動計算機,如果操作系統不在固態硬盤,啟動至少30多秒;
  • 而操作系統在固態硬盤上,啟動也就是幾秒。

所以,我們可以通過監聽存儲介質的性能指標來診斷程序在IO上的耗時,
并針對性的優化對存儲的訪問(比如減少請求次數等)。
因為存儲介質的性能是一定的,我們需要對依賴她的持久化產品做調優,比如:

  • MySQL數據庫的慢查詢;
  • Redis存儲的鍵值長度等。

4、性能優化分析

性能調優,有過站門的博文介紹,
性能調優怎么做,看過這一篇,菜鳥變大佬!
深聊性能測試,從入門到放棄之:如何對IO進行性能調優
關于MySQL性能優化方式,這一篇就夠!
所以,在這里,也是總結概括性的說一點,因為在后面的實戰篇,小魚同樣會展開來說的哦。

4.1 代碼分析能力

代碼分析,在很多大佬眼里,這不就是開發小哥哥的工作,我一個測試,搞什么代碼分析。
這個想法,很危險,必須黃牌警告一次
作為測試開發的大佬,難道你的自動化測試,單元測試,性能測試,安全測試,都不看代碼???
只有多提高自己的代碼閱讀能力,才能跟開發的小姐姐聊到一起呢~
所以我們要多掌握代碼閱讀分析能力,多掌握開發語言,多掌握撩妹技能 哎~~ 跑偏了…
最主要的如:Java,Python ,別的就不說了。

4.2 架構

高性能的系統架構與普通系統架構必須不一樣。
所以性能優化或者性能規劃要依照系統的用戶規模來設計,了解架構有助于快速判斷系統性能風險,有針對性的進行性能壓測,提出合理的解決方案。

每個人都可以都成為碼農,但是不是每個人都能成為架構師。

4.3 中間件性能分析

中間件的性能指標反應了系統的運行狀況,我們要能夠通過這些指標推導出系統的問題所在。
有些可以通過調整中間件的配置來改善系統性能,

  • 用戶請求過多,可以適當增加線程池;
  • 當JVM內容回收,特別是FullGC太頻繁,我們就要分析到底那些程序了大連的Heap內存申請;
  • 當CPU過于繁忙時,我們就去看那個線層占用大量的CPU資源;
    不是說80%的問題,都是可以用常見的方法解決,所以
    用上述的方法,就可以解決80%的問題。

4.4 操作系統

操作系統統籌管理計算機硬件資源,針對不同業務,不同場景也會有一些可以優化的參數。
我們首先要知道操作系統的限制,還需要從監控的指標中推導。
而常見的調優方法如下:

  • 文件句柄數設置
  • 網絡參數化設置
  • 親和性設置
  • 緩存設置

同樣的,掌握了這些,也就能解決80%的。
剩下的20%,可能就是別的問題嘍,例如架構問題…

架構師表示:不背這鍋

4.5 數據庫分析

系統中流轉的數據離不開持久化,而持久化需要數據庫。
數據在數據庫中的存儲結構和搜索方式直接影響性能,大多數的性能調優都集中在數據庫的存儲及查詢上。
所以,學好數據庫是多么的重要。

如果還不會,就看小魚MySQL專欄《MySQL(用法及性能優化)
這里不僅有基本操作,還有性能調優方法哦~

同樣要舉例子,如:
Key-Value存儲時Value過長,性能就會急劇下降,因為網絡傳輸時數據包的MTU(最大數據包大小,Maximum Transmission Unit )通常是1500字節,大的數據包需要網絡中多次傳輸,所以效率就低了,
那問題來了,如何優化數據庫,最直接的就是減少Value的長度,文本的限制500,輸入框的255/128,還有就是特殊規定限制10。

5、持續集成及工具

性能測試是一個反反復復的過程,發布后執行壓測,分析問題、找到問題、修改問題,在發布,在執行壓測。
所以這時候,持續集成工具就凸顯重要性和方便性。
一般都是用svn/Git做管理,Jenkins做持續集成。
如果不會的話,可以參照小魚的這兩篇:
測試開發之:Jenkins持續集成(上),安裝與配置
測試開發之:Jenkins持續集成(下),構建與運行

6、總結

看到這里,是不是覺得自己對性能測試的又有了更深的了解呢。
但是,有的小伙伴也可能覺得,這技術棧的內容太多了,我一下子怎么學得完呢?
嗯,最開始小魚在學習性能測試的時候,也是有這樣的猶豫,甚至想過,不想做這塊,
但是,架不住太多的妹子call我,所以就…關鍵解答完,還有彩蛋…

我們再回顧一下,性能測試的技術棧,也就四部分內容,每個模塊,都有專門的博文,
所以,不會的小伙伴,可以直接跳轉到對應的博文,詳細閱讀哦!

  • 性能測試理論知識
  • 性能監聽診斷
  • 性能分析優化
  • 持續集成及工具

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/196849.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息