|
壓力測試能不能自動化?當然能,而且也可以進一步加入持續(xù)集成,說到底無非就是一個job的事兒。 在越來越快的迭代中,性能測試是否一個系統(tǒng)一輩子只需做一次就夠了? 一周一個版本,接口、數(shù)據(jù)庫、代碼不斷頻繁改動,如何保證現(xiàn)有改動不影響性能? 想要做一個千萬級用戶的應(yīng)用,任何一點接口修改的失誤或者bug,可能對性能的影響都是致命的。 給大家分享一下,目前在項目中做的壓力測試自動化相關(guān),有需要的可以參考下 (初步版本,先描述大概思路,如果感興趣的人多再補充后續(xù)) 環(huán)境篇—— 性能測試工具:Jmeter 2.11 持續(xù)集成平臺:Jenkins 1.606 + 插件 Performance Plugin v1.13 地址:http:/// 建議使用最新版本,之前的版本都會有各種奇怪的bug,已踩過深坑…... 1、安裝Linux Jenkins 使用64位Linux做為服務(wù)器,安裝tomcat+Jenkins 形式部署 jenkins,壓力測試生成的 jtl 文件可能會比較大,如果 tomcat 分配的內(nèi)存過小,多半會 opps! 2、拷貝tools.jar 部分jdk和公司標裝的機器可能沒有tools.jar , 從有該 jar 包的目錄拷貝一個到對應(yīng)的jdk 環(huán)境變量中,放到 JDK 的 lib 目錄下 否則可能會遇到報錯: Unable to locate tools.jar. Expected to find it in /usr/lib/jvm/java-1.6/lib/tools.jar 3、設(shè)置 JMETER_HOME 在運行性能測試的執(zhí)行及上,配置 JMETER_HOME 否則可能出現(xiàn)報錯: You must set jmeterhome to your JMeter install directory 4、拷貝 ant-jmeter-1.1.1.jar 為了能夠在后續(xù) ant 腳本中使用 jmeter task,必須要將 ant-jmeter-1.1.1.jar 拷貝到執(zhí)行機 ant 的 classpath 中(即拷貝到 ant 的 lib 目錄中),這個 jar 包一般可以在 jmeter 的目錄 lib/extras 中找到 否則可能出現(xiàn)報錯: task class org.programmerplanet.ant.taskefs.jmeter.JMeterTask cannot be found 編寫篇—— Jmeter怎么進行性能測試?不再該篇文章中贅述 1、生成性能測試案例 jmx 文件
2、編寫ant 腳本
運行篇—— 1、在 jenkins 上配置 job 進行運行。 參數(shù)化構(gòu)建過程。使用一個 ant 的 build 文件運行所有的 jmx 性能測試案例。但保持每個 job 只有一個 jmx 案例,各自獨立,互不影響。 2、運行 ant ,直接運行指定的build文件即可,注意執(zhí)行機上需要有 ant 的環(huán)境變量。在我做的這個項目中,通過步驟1中的 String Parameter 所有job都使用一個build文件。 3、jenkins插件解析 jtl 性能測試結(jié)果文件 這里就是上文所說的Performance Plugin 插件出場了,在構(gòu)建后步驟中選擇 “Publish Performance test result report” 配置生成的 jtl 文件的路徑位置 正常情況下一般配置這個就可以了,不過在進行單個性能測試時候,我們可以好好的利用該插件中 “Use Relative thresholds for build comparison”,可以比較平均時間、中位數(shù)時間和 90%Line時間。 勾選 “compare with previous Build” 可以與上一次運行的性能測試結(jié)果比較。 勾選“compare with Build number”可以與指定的哪一次運行的性能測試結(jié)果比較,0為不比較。 其中“Unstable % Range”表示波動 ±百分比范圍內(nèi),將本次運行結(jié)果置為 Unstable “Failed % Range” 表示波動 ±百分比范圍內(nèi),將本次運行結(jié)果置為 Failed 如下圖,會計算出兩次運行之間 90%Line 時間的差值為148.0,和相差的百分比為 5.37% 4、測試結(jié)果圖表 這是最簡單的......也是最直觀的。 如下圖,經(jīng)過至少兩次運行之后,job 會運行出對應(yīng)的性能測試趨勢圖。 第一幅圖:每秒吞吐量 TPS 趨勢圖 第二幅圖:響應(yīng)時間趨勢圖,紅色——90%Line響應(yīng)時間 藍色——平均響應(yīng)時間 綠色——中位數(shù)響應(yīng)時間 第三幅圖:錯誤率趨勢圖 先到這兒 ……..等不忙了再詳細補充。 |
|
|