常見的效能測試是這樣的:
有人開發了百度知道,然後,想知道單機的最大並發處理量是多少。這就需要效能測試了。然後,我們常見的效能測試方法是:
1.apache的ab;
2.JMeter;
3.loadrunner;
4.自己開發的工具。
先大致的評價下上面的幾個方法:1.apache的ab。這東西,用起來很簡單,就一個命令。缺點就是,可定製差,使用不是很方便。2.JMeter真的很強大,我們的效能測試自動化,就是使用JMeter實現的;3.loadrunner,這東西要收費的,功能很強大,但是自動化方面,不清楚。直接入正題,看看怎麼實現效能測試自動化。
效能測試是很耗費時間、人力的事情,每次測試都需要有人來值守。在這裡,提供一個JMeter和JMeter plugins,一起配合使用達到的效能測試自動化。
一、什麼是JMeter?
JMeter是開源的效能測試工具,能夠完成很多的測試工作。詳細的可以參考:http://jmeter.apache.org。
1.1安裝
先安裝JMeter plugins,按照這裡的步驟來安裝。https://code.google.com/p/jmeter-plugins/wiki/PluginInstall
1.2 編寫case
在windows下開啟jmeter.bat,就可以看到編輯頁面了。如:
第二步:右鍵測試計劃,建立線程,配置線程數及迴圈次數。這裡我們配置100*100 =10000次請求。
第三步:線上程上右鍵,選擇add->sampler->Http Request Sampler。然後,配置好伺服器位址,連接埠地址,get或者post的參數。
第四步:線上程組上右鍵,選擇add->Assertions->Response Assertion. 配置斷言的參數,這樣就可以讓Jmeter為我們判斷哪些請求是錯誤的。
第五步:在測試計劃上右鍵,選擇add->Timer->Constant Throughput Timer,配置每分鐘的流量。這樣就可以有一個穩定的壓力。這裡要注意,在測試計劃上右鍵,而不是線上程組,這樣這個timer才會生效。我們要400的壓力,就需要400*60 = 24000.然後,下面的計算選擇:all active threads.
最後,可以點擊運行,查看是否我們需要的壓力值,查看地址是否正確。 如果OK,就可以點擊儲存了,儲存為performance.jmx。到這裡,我們就完成case的編寫了。對於複雜的case,可以添加cookie manager等來支援。
二、在linux上執行
我們可以直接執行,然後查看壓力等情況。但是,個人的PC機難免會有很多的限制,壓力可能起不上去,而且不方便我們持續整合,這裡可以在linux上跑。
將jmeter的tar.gz包放到機器上,然後配置好java,這裡需要java5以上,公司機器的預設java是不符合要求的。
可以使用如下命令:
sh ./jmeter.sh -n –t performance.jmx -l log.jlt
上面的命令,-n是不適用ui介面,也就是在linux下跑,-t是選擇指定的測試計劃;-l是將產生的結果儲存為log.jlt,這也是我們後面提供給hudson的結果檔案。
就可以看到Jmeter已經開始運行了。
三、hudson外掛程式安裝 為了分析jmeter的結果,我們需要在hudson上安裝一個Hudson Performance Plugin外掛程式,
然後,在job的配置裡面,就可以規定我們認為OK的壓力值。
四、hudson執行結果 可以看到中,有很多直觀的資料,讓我們對代碼的效能有直觀的瞭解。另外,點擊Performance Trend,就可以看到更多的資料。比如那些請求是失敗的,結果是什麼。
至此,完整的壓力測試就OK了。
五、後續提升
上面的測試,最多隻算是壓力測試自動化,而不能成為效能測試自動化。真正的效能測試自動化,應該包含對CPU, IO, Mem等伺服器資源的詳盡分析。另外,還需要給出其最大的瓶頸是什麼,能夠承受的極限壓力是什麼。還需要自動的調節壓力,並且在某些情況下,還需要分布式的壓力測試。
所以,後期還會繼續研究,如何完成:
1.服務端CPU、IO、Mem資源監控;
2.自動壓力調節;
3.分布式壓測
如此,便可以讓效能測試完全自動化,並且有一個詳盡的報表,能夠將人力從手工的效能測試解放出來,提高效能測試的準確度及縮短效能測試的時間,並且可以不用三更半夜的壓環境了~
這個就可以查看JMeter plugins的代碼,然後,寫一個外掛程式,來支援。