關于性能測試的理論知識、監控分析、調優及集成,小魚也是寫了不少博文,
而今天寫的這個目的,很簡單,
就是為了能更快更直接的讓小伙伴知道性能測試的技術棧。
要想成為性能測試大佬,需要掌握那些姿勢。
話不多說,先展示一下性能測試技術棧的腦圖。
軟件性能測試、這部分內容,小魚有專門整理過一篇博文,
《深聊性能測試,從入門到放棄之:初識性能測試》,在這里,原有的就不再這里面重復寫了,
但是,在這里,小魚會根據上篇博文進行擴展,主要體現在:
性能測試理論,是用來指導我們開展性能測試,指導我們要得到什么結果,讓我們了解測試過程是否可靠,測試結果是否具備可參考性。
而對于性能測試理論,我們主要關注以下幾點:
- 測試需求分析要能夠準確挖掘出性能需求,圈定測試范圍,并明確性能指標;
- 測試模型要能夠盡量真是的反應系統的實際使用情況;
- 測試環境盡量對標實際(避免云主機,虛擬機);
- 測試數據在量與結構上盡量與實際對標;
- 測試場景要考慮業務關聯,盡量還原實際情況;
- 測試監控盡可能少的影響系統性能;
- 測試執行時測試結果要趨于穩定。
在這里,如果還是有些不理解的話,
別著急,別灰心,
按照小魚的套路,這些內容會在接下來的實戰篇,會詳細的講解。
系統(產品)的多樣性決定了測試程序的多樣性,不是所有的系統都可以有工具可以幫助進行測試的,這個時候我們就需要自己動手開發測試程序;
性能測試六個步驟,如果了解Locust的話,可以參照小魚的python+Locust系列實戰博文:
《深聊性能測試,從入門到放棄之:Locust性能自動化(二)代碼實戰》
《深聊性能測試,從入門到放棄之:Locust性能自動化(三)如何提高Locust性能》
《深聊性能測試,從入門到放棄之:Locust性能自動化(四)自定義客戶端測試》
如果不懂Python流派,那也可以用java直接寫Jmeter腳本進行測試,也都是很簡單。
當當當然,如果不會開發語言,不會編寫腳本,也不是沒有版本,那就利用工具,遵循理論,不懂就問,長期積累,也可以具備這種能力的哦。
至于使用的工具,同樣,請參照《深聊性能測試,從入門到放棄之:初識性能測試》第四章節:性能工具
性能測試怎么做、不懂的話,可以私信或者留言,小魚看到也會回復的。
太簡單的問題,就…,有顏值的妹子除外…
性能監聽與調優,是性能測試的一個難點
當然,小魚也是在《MySQL性能監控(sql命令語句 & MONyog工具)全掌握,這一篇足以!》寫過,MySQL的性能監控診斷,
當然呢,這里,我們不僅僅說的是MySQL,還有別的呢。
接著往下看。
目前的開發形式多采用前后端分離的方式,一套后端系統處理多套前端請求;
用戶通過APP(H5、Native、Hybrid應用)和PC中的瀏覽器訪問系統。
性能測試需要掌握哪些。不管我們的程序多么牛X,架構多么牛叉,
但是運行程序最后還是依靠服務器硬件,服務器硬件是性能之本,所有的性能都會反映到硬件指標上,我們想要分析性能,就需要知道服務器知識,主要體現在:
了解操作系統及其內核對于系統分析至關重要。所以小魚說過:性能測試是一門綜合學科,也是一個團隊的活。
對于系統分析,我們要掌握:
對于操作系統,我們要掌握:
性能測試關注點?Linux是開源的類UNIX操作系統,Linux繼承了UNIX以網絡為核心的設計思想,是一個性能穩定的多用戶網絡操作系統。
因為越來越多的大廠用Linux作為服務器操作系統,所以針對性能測試大佬,了解掌握Linux操作時必須的。
但是,針對當前Linux/UNIX的分支也很多,比較普及的有:
Windows Server 是Microsoft Windows Server System (WSS)的核心,是服務器操作系統。
目前都是比較小型的公司在使用。
Windows Server 優點:
主流的中間件必須是Tomcat,
Tomcat作為一個載體,幫助我們實現通信及作業功能,提供了一套規范,而我們只需要遵循規范,開發出實現業務邏輯代碼,既可以發不成系統。
它為我們省掉了基礎通信功能和多線程的開發,讓我么可以專注業務邏輯的實現。
Tomcat有一些性能指標用來反映服務的"健康情況",如:
數據的持久化有結構數據、非結構數據、塊數據、對象數據,存儲時對應不同類型的存儲產品。比如:
以上這些都屬于IO操作。
IO操作一直都是性能的"重災區",因為不管什么類型的存儲,終究是把數據存儲的介質上。存儲介質廣泛使用的是固態硬盤(SSD)和機械硬盤。
機械硬盤是物理讀寫(IO),其讀寫速度相對固態硬盤相差很大,比如:
所以,我們可以通過監聽存儲介質的性能指標來診斷程序在IO上的耗時,
并針對性的優化對存儲的訪問(比如減少請求次數等)。
因為存儲介質的性能是一定的,我們需要對依賴她的持久化產品做調優,比如:
性能調優,有過站門的博文介紹,
《性能調優怎么做,看過這一篇,菜鳥變大佬!》
《深聊性能測試,從入門到放棄之:如何對IO進行性能調優》
《關于MySQL性能優化方式,這一篇就夠!》
所以,在這里,也是總結概括性的說一點,因為在后面的實戰篇,小魚同樣會展開來說的哦。
代碼分析,在很多大佬眼里,這不就是開發小哥哥的工作,我一個測試,搞什么代碼分析。
這個想法,很危險,必須黃牌警告一次。
作為測試開發的大佬,難道你的自動化測試,單元測試,性能測試,安全測試,都不看代碼???
只有多提高自己的代碼閱讀能力,才能跟開發的小姐姐聊到一起呢~
所以我們要多掌握代碼閱讀分析能力,多掌握開發語言,多掌握撩妹技能 哎~~ 跑偏了…
最主要的如:Java,Python ,別的就不說了。
高性能的系統架構與普通系統架構必須不一樣。
所以性能優化或者性能規劃要依照系統的用戶規模來設計,了解架構有助于快速判斷系統性能風險,有針對性的進行性能壓測,提出合理的解決方案。
每個人都可以都成為碼農,但是不是每個人都能成為架構師。
中間件的性能指標反應了系統的運行狀況,我們要能夠通過這些指標推導出系統的問題所在。
有些可以通過調整中間件的配置來改善系統性能,
如
操作系統統籌管理計算機硬件資源,針對不同業務,不同場景也會有一些可以優化的參數。
我們首先要知道操作系統的限制,還需要從監控的指標中推導。
而常見的調優方法如下:
同樣的,掌握了這些,也就能解決80%的。
剩下的20%,可能就是別的問題嘍,例如架構問題…
架構師表示:不背這鍋
系統中流轉的數據離不開持久化,而持久化需要數據庫。
數據在數據庫中的存儲結構和搜索方式直接影響性能,大多數的性能調優都集中在數據庫的存儲及查詢上。
所以,學好數據庫是多么的重要。
如果還不會,就看小魚MySQL專欄《MySQL(用法及性能優化)》
這里不僅有基本操作,還有性能調優方法哦~
同樣要舉例子,如:
Key-Value存儲時Value過長,性能就會急劇下降,因為網絡傳輸時數據包的MTU(最大數據包大小,Maximum Transmission Unit )通常是1500字節,大的數據包需要網絡中多次傳輸,所以效率就低了,
那問題來了,如何優化數據庫,最直接的就是減少Value的長度,文本的限制500,輸入框的255/128,還有就是特殊規定限制10。
性能測試是一個反反復復的過程,發布后執行壓測,分析問題、找到問題、修改問題,在發布,在執行壓測。
所以這時候,持續集成工具就凸顯重要性和方便性。
一般都是用svn/Git做管理,Jenkins做持續集成。
如果不會的話,可以參照小魚的這兩篇:
《測試開發之:Jenkins持續集成(上),安裝與配置》
《測試開發之:Jenkins持續集成(下),構建與運行》
看到這里,是不是覺得自己對性能測試的又有了更深的了解呢。
但是,有的小伙伴也可能覺得,這技術棧的內容太多了,我一下子怎么學得完呢?
嗯,最開始小魚在學習性能測試的時候,也是有這樣的猶豫,甚至想過,不想做這塊,
但是,架不住太多的妹子call我,所以就…關鍵解答完,還有彩蛋…
我們再回顧一下,性能測試的技術棧,也就四部分內容,每個模塊,都有專門的博文,
所以,不會的小伙伴,可以直接跳轉到對應的博文,詳細閱讀哦!
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态