周末,由于項目需要,作為一個開發者,我決定研究一下自動化測試,因為最近,我們要統計User Story所帶來的Defect的個數,所以Dev要在開始的時候就要準備自己在自己的開放環境上多測試幾遍。
公司一直在用QTP測試,用VB去寫腳本,額的神呀,那語言我玩不轉,所以還是選擇了Selenium,因為它提供了Java的driver,還是不錯的。先裝了一個Firefox插件,錄制了一些腳本,拷貝到JUnit里面,竟然不可以運行。網上Google了很久沒有找到好的方法,一方面是由于我們的這個frame寫的不是怎么標準,另外一個方面估計是網絡太慢了。所以我加上了一個waitForPageLoad,竟然神奇的可以通過了。不知道為什么,但是這樣的腳本的東西,我也懶得去理解為什么。
一直想怎么把東西做到超級的自動化,自動化達到在一個地方輸入,另一個地方就可以驗證了,最后決定,把輸入數據寫到Excel里面,中間的數據存儲到數據庫中(必須的,其實還是可以在Excel里面存著,不過懶得這樣存,訪問Excel不是俺的強項)。最后去根據這些中間的結果去驗證最后的輸出是不是正確。
想法很好,開始做了,遇到了第一個問題,輸出是簡單的<tr><td>test</td></tr>, 怎么去驗證這個test是不是正確呢? 去網上繼續搜索,發現用xpath能解決這個問題,最后用以下的path解決了這個東東,如下(xpath=//div[@id='reponseFormHeader']/div/table/tbody/tr[1]/td[1]) 可以用一個firefox差價xpather去發現這個東東,并且寫上去,也解決了給這些沒有必要的text寫上一個Identifier的問題 (QA一直強調要給這些Text都加上一個ID方便自動化測試)。
最后選擇把中間結果寫在MongoDB里面,原因很簡單,Schemaless和Map driven的DB,我僅僅需要把Map往里面一扔,后面的就不用管了。簡單粗暴,但是又是很實用。 自動化測試不是很難,但是要用心去做,QA也不是很容易,很多東西,資料不多,寫起來也很奇怪。
最后說說敏捷軟件開發,什么時候寫自動化測試呢? 看網上有人說,QA測試中80%的要手工測試,我比較不同意,我認為80%都可以進行自動化測試。自動化測試是QA可以在很早就可以開始的,Mockup出來后就可以開始了。只要我們把自動化測試當成一回事去做,可以省去很多很多的effort,不失為一種敏捷的快捷之路。