如何使用Jmeter,maven,Jenkins構建云性能測試平臺,軟件測試性能測試
近在利用Jmeter來做一套自動化性能測試框架,做自動化性能測試框架的目的是希望能夠針對系統做一個benchmark的性能測試,能夠快速的在每個版本發布后,對該版本進行benchmark性能測試,以比較與上一個版本的性能是否發生變化,若發生變化便可以快速的通知開發人員以確定性能發生變化的模塊或者代碼。同時測試或者開發可以上傳性能測試腳本到測試平臺,測試平臺接到測試腳本后可以進行性能測試并返回測試結果.基于這一點的考慮是,一般的測試工程師(特別想功能測試工程師)和開發工程師可能沒有相關的性能測試環境供他們使用,因此建立這樣的平臺是希望能夠讓每個人都能快速的進行性能測試,而不需要關注性能測試環境(往往配置一個性能環境可能需要很長的時候).
1.框架簡要介紹
選擇Jmeter來搭建這樣一個平臺是基于Jmeter本身的Open source, 并且是用純JAVA開發的測試工具,方便與其他的工具的集成和擴展。重要的是,你可以看到源碼。
這套框架基本的執行流程和邏輯其實很簡單,利用Jenkins的CI功能,實時檢查腳本庫,若有變更便調用JMeter來執行腳本,并將測試結果通過郵件或其他方式通知相關人員。主要邏輯圖如下所示:
2. Maven執行Jmeter
MAVEN是一個非常的項目管理工具,關于Maven和Ant的主要區別可以去網上查詢,我們在這里主要介紹一下用MAVEN如何去運行JMeter, JMeter支持多種運行方式,有GUI方式和NONGUI方式,各有優勢,我們在自動化性能測試平臺的搭建中采用NonGUI方式來運行測試腳本,NonGuI方式其實也是通過Command命令來運行,那么如何通過Maven來調用呢,不用慌張,已經有Jmeter-maven-plugin這樣一個Maven插件來運行Jmeter了,如果看過Jmeter源碼的話,可以看到在Jmeter中有這樣一個Class,叫做NewDriver.class,這個類是Jmeter的入口,我們可以看一下這個類的Main方法:
看到try模塊中的后幾行可以看到,通過Java反射機制,JMeter.start()方法被調用到,并且將相關的參數傳遞給該方法。因此我們可以想象到JMeter-maven插件中肯定也是通過調用這個方法來啟動JMeter的,我們來看一下JMeter-maven-plugin這個插件(關于如何開發maven插件在這里不具體講,可以參考網上資料)中的主要調用代碼:
重點參考TestManager這個類,這個類是主要用來啟動Jmeter的,我們可以參考這個類中的executeSingleTest(File test)這個方法:
這個方法驗證了我們剛才這個猜想。在完成通過MAVEN啟動Jmeter的分析過后,我們所要做的事情是如何解析Jmeter運行后所得到的測試結果,并將這個測試結果以相關的格式展現出來。