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