如何作性能測試的一點思考總結

通過工做4年,多個性能項目的實戰,我總結了一份各個性能項目共性的東西(即如何作性能的流程),但願你們拍磚。我把性能測試的分爲三大塊,即前期準備、實戰監控、問題定位。java


1、前期準備(基礎核心)mysql

這個是基礎,前期準備工做作的越紮實到位,測試結果會越接近真實,也就更有意義,並且工做量也是蠻大的。算法

一、熟悉系統架構,業務主流程,肯定性能測試的核心測試模塊;(找開發人員或者項目經理要相關文檔,至少應該熟悉到指定業務會涉及到後臺的哪些表,哪些表的數據量會比較大,提早有個性能可能會出現的估測;另外測試服務器、中間件、數據庫等的拓撲結構必須也得了解)sql

二、性能測試的具體模塊的需求:必需要具體,特定的條件下,包括多少用戶,多久時間,多大數據量下進行什麼業務,最終指標多少。即,獲取的性能需求是在特定的場景條件下的,而不是孤立的一個數值。(最真實的數據是經過系統訪問日誌分析真實的負載和主要業務場景來獲取性能需求),(目前大部分的產品性能測試都是有個大概的性能指標,並且是人工拍出來的結果,因此性能測試的目的都是評估該系統的處理能力可否達到和預期的同樣)數據庫

三、性能測試的場景選取:單業務,混合業務,穩定性,大數據量,可靠性(即其中一臺tomcat或者其餘中間件出故障後的處理,數據庫災備的切換等),(這些場景並不必定每一個接口都須要涉及,看實際線上的使用狀況,有選擇性重點的測試)(想清楚應該選取哪些場景,其實性能測試用例的雛形也就有了)緩存

四、性能測試數據肯定:具體對應什麼表須要多少數據量;以便提早準備測試數據。(尤爲是有些測試數據比較複雜,會不一樣表之間有關聯,能夠找開發一塊兒商討一下測試數據如何弄;另外準備的測試數據必定要有效,不然你傳參給函數,返回的都是失敗的,這個測試結果就和真實有出入,致使測試無心義)tomcat

五、性能測試用例的編寫;包括:場景描述,併發量,壓測時間,數據量,加壓方式,測試方法,重點關注指標,預期指標等。(這個性能測試用例必定要好好寫,並且是必不可少的,由於我以爲把這個寫的越清晰明瞭,對核心業務或者說壓力業務也就梳理的越透徹;完成這一步,其實內心就已經對該系統如何進行性能測試內心有數了)服務器

六、性能測試環境的準備:在相應的服務器上安裝性能相關軟件,如JDK,nmon,jmeter,orzdba等。(實際因爲資源有限,只是在現有的硬件資源條件下,評估性能能力,從而間接的估算生產環境的性能。)網絡

七、性能測試腳本的調試。性能測試腳本能夠用本地的圖形化界面的jmeter進行調試,方便查看返回的是什麼錯誤。(如是接口性能測試,參考文檔是接口的開發文檔等;腳本調試成功後就能夠上傳到相應的壓力服務器上,利用非圖形化的jmeter壓測)架構


2、實戰監控(水到渠成)

前期的準備工做作好後,萬事俱備,就差跑起來了。


一、開啓實時監控後,啓動性能腳本,開始壓測。(壓力機服務器,數據庫服務器,業務服務器開啓nmon的後臺監控;數據庫服務器的慢查開關、無索引開關)

二、壓測時候重點觀察數據庫服務器和業務服務器;(須要查看業務服務器的處理日誌狀況,看裏面是否有錯誤,如tomcat日誌;查看數據庫服務器的慢查和無索引的日誌;查看服務器自己的狀態,如cpu、io、memory等)


3、問題定位(難點攻堅)

這個是難點也是最體現性能工程師價值的地方,須要平時不斷的下功夫鑽研和積累的。

更多測試實戰技能,能夠關注公衆號大話性能,不斷的學習提升。


一、硬件資源消耗狀況。(cpu,內存是否消耗過大,io等待是否不少,負載值是否很大,鏈接數是否超過限制,打開文件數是否過大等。這些是表現,咱們得經過表現去分析究竟是什麼緣由致使該現象的出現。)

二、Mysql數據庫服務器。(能夠用show processlist不定時的查看目前數據庫鏈接都在幹什麼,有沒有消耗時間比較長的,若有,這個鏈接就是懷疑對象;慢查詢是否不少,若有須要優化sql語句或者表結構加索引等;有無鎖消耗的時間不少,查看使用的數據庫引擎,不一樣的引擎鎖的粒度不同;

三、mysql配置參數的設定也是很關鍵的,這個也須要留意。好比更新比較多的表,其實緩存對它來講就是沒有意義的,諸如此類的。)

四、JVM運行狀況。(目前95%的都是基於java的開發的項目,能夠用jstack分析線程堆棧的運行狀況,利用jstat分析GC狀況,定位有問題的地方(如死鎖,死循環,資源等待鎖,內存泄露等))

五、中間件運行狀況(目前,我遇到的都是tomcat,查看啓動的各個參數是否須要調優,如內存分配是否合理,垃圾回收的算法等)

六、網絡狀況(對於傳輸數據量大的測試,在併發大的狀況下必須考慮網絡有無瓶頸)


以上就是性能測試的大部分環節,內容不少,須要提高的東西也不少,更多內容能夠關注公衆號大話性能,繼續學習。https://dwz.cn/bLi77L79


另外,我也簡單總結了下性能測試能夠研究的內容,供你們參考。


0 (1).jpeg

相關文章
相關標籤/搜索