開頭老是千篇一概,畢業於一個不起眼的學校,在學校的幾年是完全的浪費了,由於一入門接觸的就是軟件測試各類理論知識因此後面學習的也就是這方面的東西了,畢業後和其餘年輕人同樣懷着夢進行北漂,由於北漂女友都沒有了。剛開始工做時和你們同樣都是嚮往着作性能測試、自動化測試不肯意作功能測試,總以爲那沒錢途,就各類學習性能測試,剛開始總想着學好了loadrunner就能夠作性能測試了,在一個專業的性能測試員看來這是多麼好笑的問題,這也是多麼天真的想法呀!雖然如今的我對性能測試也只是只懂皮毛。但仍是但願經過這篇文章能讓一些新手們對於性能測試有個入門的瞭解。多的不說了!前端
在作性能測試以前必定要弄清楚幾個問題:web
一、性能測試的目的 數據庫
接下來再談其餘的。編程
某天領導對你說,去給咱們系統作個性能測試,千萬別直接說「好!」而後,就走了,我之前這麼幹過,(並且還把測試報告弄出來了,不過如今回看發現那報告根本沒有任何意義)(那時不懂,打腫了臉充胖子),回到座位後,不知從何下手了。那麼,咱們須要知道什麼呢?tomcat
首先要知道具體的需求。(簡單的說一下其實性能測試如今我接觸到的其實有兩種,一種是web頁面前端的性能,二是咱們正常所理解的後臺處理業務的能力,就是常說的要觀察的併發、最大用戶數、吞吐量、內存、數據庫、中間件等)服務器
一、有明確要求網絡
系統要求同時知足1000用戶登錄,平均每一個用戶登錄時間不能超過5秒。這個需求很明確,可是至於怎麼達到這樣的結果就不是咱們考慮的了,優化系統仍是加硬件什麼的再討論!架構
二、只是想知道目前系統性能(容量測試)併發
就是求得最大用戶數和最佳用戶數。這是比較模糊的一個需求,咱們須要對系統作出分析,找出系統的壓力點。app
三、找出系統性能瓶頸
當我看見這樣的需求時我頭疼,多是由於對這個還不專業。這個一樣須要分析可能對系統形成瓶頸的邏輯業務,而後才能進行性能測試。前提是你對這個體統很是的熟悉,不管是業務仍是功能。
四、瞭解系統在長時間的壓力下性能情況(強度測試)
這通常是驗證系統的穩定性,由於系統一旦上線,就有可能會長期處在大用戶的訪問狀態,可能之前沒發現的一些問題就會暴漏出來。比較典型的就是內存溢出。之前這樣的問題我碰見過,一樣的併發數跑二、3個小時沒有問題,可是用戶數小一些跑了8個小時結果服務器果斷掛掉了。最後發現是app鏈接池出了問題。
2、性能測試的環境
肯定了測試目的,固然須要搭建測試環境。這裏的環境,咱們須要考慮幾點
一、硬件環境
咱們須要瞭解被測服務器硬件配置,用於加壓客戶端的機子配置,CPU 內存 等
二、軟件環境
咱們須要瞭解被測系統的架構,前端、中間件、服務器(這裏指運行系統軟件服務器,如tomcat)、數據庫,以及他們的部署位置。
用於加壓的客戶端採用什麼性能測試工具進行加壓。
三、網絡環境
網絡環境很重要。在上面的幾個目的中,除了找出系統性能瓶頸能夠在廣域網進行,由於這個目的能夠不用設置太多的虛擬用戶,只要找出系統哪一個地方影響了整個系統的性能就行。
其餘目的的測試都須要在,局域網進行,否則你壓力工具所發送的請求都會卡死在網絡的傳輸過程當中。還有一點就是作測試時最好晚上作,否則你作性能測試時將帶寬都佔用了大家單位的人就沒辦法辦公了!
3、尋找系統的壓力點
咱們須要對系統的哪一個頁面或業務進行加壓。這個不是本身想出來的,須要與開發人員的溝通。系統的首頁?系統的登陸?仍是系統的交易過程?各個業務的用戶比例是多少?只有得到有效的性能需求,才容易尋找和定位壓力點!若是你對這幾點都很清晰了,那麼打開你的性能測試工具開始錄製(或編寫)你的性能測試腳本吧!
4、必備知識
在剛開始都說了性能測試不僅是說你會loadrunner就能夠了。你必備的:
一、性能測試工具
這個你們都明白,比如如今用得比較多的Loadrunner,但這只是其中一個,還有不少:web Bench、ab、Siege、JMeter、loadrunner~~~~~等等
二、掌握一門編程語言
至於爲何呢?其實你只要作了性能測試你都知道在不少狀況下是不可以進行錄製的,或者說沒有錄製到,因此這個時候就須要咱們動手寫腳本了。還有就是雖然工具雖然強大,可是他也不是萬能的,像商用的loadrunner他的功能已經很強大了,但是他是商業用途,價格你懂的。多掌握一門沒錯!
三、計算機原理以及操做系統知識
這方面的東西必須懂,否則別人提及什麼內存泄漏、死鎖、亂碼等問題你都不知道那真的~~~~~
四、有良好的網絡基礎知識
這個爲何其實咱們常常碰見的就是關聯問題,這下懂了吧!
五、數據庫知識
六、中間件知識
我說的可能還只是一部分,也須要不斷的學習瞭解、探索。若是連這些不懂那麼更加不能談後面的瓶頸定位、優化。
比如定位一個系統的瓶頸時你須要去查找是:一、硬件上的性能瓶頸?二、軟件上的性能瓶頸?三、程序上的性能瓶頸?四、操做系統上的性能瓶頸?五、網絡設備上的性能瓶頸?
因此若是要作性能測試這些東西都是必不可少的!
備註:這只是我的的觀點,有什麼錯誤的地方還請你們指出來!