經(jīng)常有人問我web service的性能測試是用JMeter好還是SoapUI好。說句實話這兩款都是非常的開源Web Service性能測試工具,簡單地說哪個更好真不太容易。影響Web Service性能測試的因素太多到底誰的結(jié)果更準確一些很多時候并不主要取決于測試工具。在soapUI官方網(wǎng)站上有一個文章比較了這兩款工具,我將要點抽出來加以分析希望能反映它們的特點。
JMeter在整個負載測試的優(yōu)越性是毋庸置疑的,它覆蓋了常見的各種測試類型,如HTTP, JDBC, JMS 和SOAP。單Web Service測試,作者做了一個簡單的實驗,但并沒有涉及太多的細節(jié)。
試驗準備:本地Web Service,運行于JBoss 4.0.3SP1,每個簡單請求在4種不同負載下執(zhí)行5000次,分別是1線程,5線程,10線程和25線程。在SoapUI中為簡單起見均使用簡單負載策略,并且五執(zhí)行延時。要分別記錄關(guān)閉連接和非關(guān)閉連接方式的數(shù)據(jù)。關(guān)閉連接方式是指每次請求完畢后關(guān)閉連接。反之則是讓連接仍然保持打開以等待下個請求,顯然會省去很多額外開銷。在JMeter中也可以做類似配置,如線程數(shù)為1,循環(huán)次數(shù)5000或線程數(shù)25,循環(huán)200次。
環(huán)境:WinXP SP2, Pentium M 1.8 1 G RAM, JRE 1.5.0_06.
結(jié)果:
其中帶*的是非關(guān)閉連接模式下測試的結(jié)果。從結(jié)果中看出Jmeter的測試值均較SoapUI偏大,但與UI連接關(guān)閉模式下執(zhí)行結(jié)果相差無幾。實驗未給出JMeter命令行下的測試結(jié)果。但從經(jīng)驗來講,命令行執(zhí)行方式避免了測試工具本身帶來的巨大資源消耗,更接近真實值。soapUI在命令行連接不關(guān)閉模式下TPS隨線程的增加在初期有明顯上升的。
從計時機制來看,JMeter 用的是System.currentTimeMillis(),而soapUI用的是更為精確的System.nanoTime().
綜上所述(文中沒有點明,但這是顯而易見的),soapUI在單純的Web Service 測試時有明顯的優(yōu)勢,當要綜合其他測試時可以組合使用多種工具。
當然這是soapUI自己做的實驗,難免有王婆賣瓜之嫌,有興趣的朋友可以自己設計實驗來測試一下。