2012年1月10日星期二

JavaFX的Free Load/Stress Test Tool - loadUI

因為近期現職公司打算由Shared Hosting搬至自家Server,所以要對幾百個User的Server做Load Test。

整天都在找一個免費,比較易用的Load Test (或者叫做Stress Test)的軟件。
第一時間不用說,上Google Search "Free Load Test Tool",結果都是連去StackOverFlow網站。
另外還找到兩個SQA方面的資源網站 :
Software QA and Testing Resource Center - Load and Performance Test Tools
Software Quality Assurance Testing and Test Tool Resources - Performance Test Tools

試用過多個在Windows上可行的方案,到最後都落空,因為沒有一個"我"認為是稱得上好。
我需要這個軟件的要求很簡單,不是要把Server跑到半死為止,純粹是想在多個(100-200+)的New Session User下的Performance 圖表和Request/Response時間參考數值等等而已,更莫說Disk I/O,CPU loading方面,免費但簡單易用的,就可以。

原以為很多選擇,但原來事情沒這麼簡單...
OpenSTA
首先試用的是OpenSTA
最後更新日期已經是2007年,最後支援Capture & Record模式的IE版本竟然是IE7。
已心知不妙,但即管用一下。程式很累贅 - 有三個元件 : OpenSTA Commander / OpenSTA NameServer / Web Relay Daemon。

奇怪古老的介面,很難接受,但始終我要的是功能吧...新增Http Script,按錄影後,雖然OpenSTA只支援IE7,但沒有IE7的情況下會如常叫出Default Browser - IE9。
IE9會Load入Plugin去Record,但完成的時候,Ops!竟然不能Save或Replay。出現Error Message :
Compiling... NEWSCRIPT.HTP
scl: error (openout), Error Opening NEWSCRIPT.TOF as Output
-Invalid argument

上Google搜尋,很多人有同樣問題,是軟件本身不支援Windows Vista/7/2008,我都懶得去再試。

20120109_222342_000-t.jpg20120109_223349_000-t.jpg

Web Capacity Analysis Tool (WCAT)

WCAT,微軟出品,必屬User Friendly,但竟然是Command Line軟件,沒有官方的GUI,原因我估都是因為Visual Studio有Team System / Test Editon的Application Center Test (ACT)做Load Test,不想搶去自己的客人吧?

雖然有人寫了WCAT Fiddler Extension,但是沒有用的。看看下圖,我實在不知怎樣搞。
WCAT Performance test didn't produce output file

20120109_224529_000-t.jpg
但我沒有放棄,因為我對微軟有信心。唯有從Command Line入手。
找到個教學網站和Doc:
Stress testing with Microsoft Web Capacity Analysis Tool (WCAT)
WCAT 6.3 Documentation

我花了幾小時,依然搞不到一個Test,需要人手去修改兩個Script Files - home.ubr/settings.ubr,感覺上就是差一點點就搞定,但總之失敗,再次放棄。

JMeter
這個名字叫JMeter的軟件,在SOF上,很多人推薦
Apache官方出品,但程式使用上是極度困難,需要花時間學習。
網上教學是幾多的 - http://www.google.com/search?q=jmeter教學
我順著以下幾個教學相互補短,亦可以執行到Test。
Apache jmeter 2.3教學
JMeter 使用入門 -- HTTP Request
Stress Testing your website with Apache jMeter

但出來的Graph,怪怪的,而且運行後,我的電腦接近癱瘓。
Image-39-t.jpg

Fiddler2+StresStimulus

這個就開始像樣,支援100個virtual users及Input Field的Parameter,換句話說,你可以用它的Parameterization功能去Fill Form/Post Form,這個是很重要的,例如要測試一個搜尋頁面,需要自動化輸入關鍵字已經是一個好例子。
但依然有很多限制 - Free and Pro Editions Comparison Chart

20120109_230747_000-t.jpg20120109_230943_000-t.jpg

loadUI
到最後試用的是這個名字叫loadUI的軟件,官方網頁裡頭的介紹 - What is loadUI? 是這樣說的:

loadUI is a open source Load Testing solution that is free and cross-platform.
With a visual, drag-and-drop interface, it allows you to create, configure and redistribute your Load Tests interactively and in real-time.

It supports all the standard protocols - from HTTP(S), HTML, SOAP/WSDL and REST to AMF, JDBC, JMF and POX.

In a single test environment, loadUI provides complete test coverage, including Web Load Testing, Automated Testing, Stress Testing, and more.

很利害的介紹,安裝的時候,竟然要求我電腦安裝JavaFX!?我第一次使用軟件要安裝JavaFX,正好見識一下,好喇,要就安裝喇。
之後Double-Click short-cut,雖然等了幾十秒介面才出來,但GUI十分漂亮。經歷之前幾次的失敗,還是使用上才是最重要。

軟件幾易用,很簡單就可以搞到一個Stress Test,配合同公司免費的soapUI可以一併做automated test。暫時未試到有太大限制,值得一用。
本身有Sample Project已經是做HTTP Load Test,所以幾乎你開啟軟件後,改一改設定,已經可以立即使用。
老實說,JavaFX給我幾大驚喜,之前幾乎沒接觸過JavaFX的軟件。

loadUI-Image-001-t.jpgloadUI-Image-002-t.jpg

到最後我決定會用Fiddler2+StresStimulus和loadUI互補地使用,但後者是比較值得去研究一下的。

其實我見到有部份Blog友說用SeleniumWatin這類Automation Test軟件做Stress Test,但其實是很不同的。一直我說的New Session User以及模擬真正的Browser就是原因。

可以看看這裡的說法:
How do You Stress Test Your Web Application?

WatiN
This tool isn’t really intended as a stress test tool. It’s primary use is for UI testing. It provides a nice API to launch and operate Firefox and IE so that you can write C# UI tests. However by launching multiple instances one of my correspondents has been successfully using it for stress testing. I guess my main question would be, how much hardware I would need to run enough instances of Firefox or IE to simulate high loads.

Selenium Grid
Selenium is another UI test tool, similar to WatiN. It’s what I use for UI based tests. Selenium Grid allows you run to many Selenium tests in parallel. Once again, it’s primary design goal is to aid UI integration build tests, but there’s no reason you couldn’t use it run stress tests.

Selenium 2 has merged in WebDriver which can drive the headless browser HtmlUnit (see below), this might mean that sufficiently high loads can be driven from minimal hardware.

沒有留言:

發佈留言