2011年3月11日星期五

網頁程式員必須知道的Web Test

假如你找工作時,遇到有人問你 : (你的網頁程式是如何做測試的?)
最常見的答法或者是:(完成後,自己試試,看看有沒有Error,速度好不好,試一試如SQL Injection之類的安全性。)
或者會"專業一點"答:(做一做Unit Test,Stress Test吧。)
但如果再追問你:(做多少次?)
面對這個問題,無論你答多少次都是Fail...

就如上面所講,很多人都知道什麼是UnitTest,LoadTest,StressTest,即使沒有做太多,但都有概念。
但以現今複雜性高的網頁程式來說,單單對程式碼做UnitTest,針對Server做StressTest其實不夠意思。

倒不如做我現在要說的Web Test
Web Test的意義在於實際模擬使用者情況下操作程式,使用者數目可以是單人或模擬多人使用,並循環地測試。

如一開始所說,試想一想你要測試一個Registration Form,人手做一千次,每一次資料要不同,你想一想時間要多久?
或者測試一個Shopping Cart,由登入 > 購買 > Checkout > 打Billing/Shipping Address 到完成,即使有一些AutoFill Form軟件幫助,相信做100次你已經夠悶。

所以我們需要靠一些WebTest軟件幫助,如果你比較熟悉Visual Studio,你應該聽過Visual Studio Team System版本,VSTS版本其中一個獨有功能就是Web Testing,但我暫時不打算介紹它,始終VSTS是較特殊版本,未必很多人有機會使用到,而且假如你寫PHP,Ruby & JSP的話就用不到。


基本上這類軟件大前題就是要做到Automated,全自動化去代替人手測試,如果在Google搜尋Web Test Tool Software,你會找到很多形形式式的軟件,但今次我想介紹給大家三套免費Free的WebTest Software,而且是比較易上手的。

1. iMacros
有使用Firefox的人一定不會陌生,因為iMacros是長期穩佔官方Firefox Extension的主頁上。
iMacros可以整合Firefox,亦有IE的版本。
隨了可以記錄你Mouse/Keyboard操作,還有兩種錄影模式,一種是用Form Element的ID去記錄,另一種是X/Y定位形式。
功能上都很夠一般使用,支援Random資料輸入等等。
但缺點就是你只可以模擬一個使用者,雖然你可以開多個Browser操作,但我自己所測試,有機會會Crash。
另一樣缺點就是Random資料的Data Soruce你需要自己寫Javascript或者用VBScript連接DataBase。
但無論是個人或商業用都是免費的。


2. Badboy
很另類的軟件名稱,這個是獨立軟件,不依靠任何Browser。
跟iMacros功能大致一樣,但其中一樣我喜歡的是Data Source方便比iMacros做得好很多。
無論Excel或SQL,Badboy可以經ODBC去連接取得資料。
而且更可以以Multi Thread形式去模擬多使用者
但不是沒有不足之處的,首先是Badboy的Browser Engine是IE,即使最新版本都不能轉Firefox或Chrome,而且軟件本身免費授權方式是非商業用。



3. Load Tester Free
這個是最專業的一個,除了上述所講的錄影,DataSource,模擬多使用者功能,還包含一些 Profilering /Stress Test功能,亦有詳細報告等等。
免費版本和收費版本分別是,免費版最多模擬10人使用和有限度去記錄Report項目,但其實我覺得都很夠了。
另外吸引我之處是這款軟件對ASP.NET作出針對性優化,ASP.NET是有一種東西叫ViewState,ViewState消失的話,整個ASP.NET頁面便告死亡。
所以在做自動化工作時,維護ViewState很重要。
有興趣可以看看 Load Testing 101: ASP.NET Web Applications



以上三款軟件,我自己暫時使用iMacros,不排除會轉用其他兩個,始終各有優缺點。
最後想說的是,就我個人而言,我自己都很少做Unit Test,除了工作時間緊迫關係之外,我覺得做這類實際的Web Test比較重要。
因為WebTest最大意義是自己做一次UAT程序。
配合程式本身的Exception Logging,其實都已經足夠。

沒有留言:

發佈留言