測試工具碎碎念 - selenium grid
隨著功能與defect 的增加,還有時間的流逝,手上web test跑完一遍的時間已經要超過一個小時啦XDDD. 這還是效率高的firefox 3, 換成ie 6的話更是直逼兩小時大關。這一來真是糟糕啊,假想出完build 要知道重要的流程在所有支援的瀏覽器跑得怎樣,四個瀏覽器就要5~6小時去了。那出build 那天,我不是就要加班了嗎@@.....
除了治本,將test case 朝著行雲流水之必殺一筆劃(幻想中是有這種流程,走一遍可以測很多重要的功能,十分有效率)邁進;另一方面,加速執行速度也是另一個可以考慮的方向。
於是基於不想加班的信念,開始試用selenium grid. 它是架構在selenium core, selenium remote control 之上的專案,可以將你的測試程式分成好幾個instance 在跑。假想有兩台營幕,一台看本機跑firefox 3 on mac, 另一看remote跑ie 6 on windows, 真是一整個暢快呀! 不過既然selenium grid 是一種分散的架構,testcase 和之前集中在一台跑的寫法當然有一點不一樣。比方講最簡單的,它一定是個多執行緒(多行程)的東西,然後selenium grid 跟據load balance 加上你指定的configuration把它dispatch 到適當的cell 執行。 這時你的程式就要自已要維持它的thread safe (或 process safe) 。舉例而言,之前我用singleton維護的一個東東,換成在grid 上跑之後就用Threadlocal來存(之類),或以更上層的邏輯而言,有那種同時刪除或修改同一個東西的可能時,請避開,除非你是故意要測。
selenium自已是推薦用它的TestNG annotation來做testcase 的configuration來達成Threadsafe。
當然這個就見仁見智看要不要用。不過因為它的annotaion 和JUnit的衝得嚴重,加上我自己的testcase 其實用programming的方式可以輕易的避開這問題,所以就沒有用啦。
selenium grid 還十分貼心的將環境的設定設成抽離出瀏覽器的種類,比如你可以將 Mac OSX Tiger+ Safari 設成 Safari-Tiger(叢林裏的老虎,聽來好威) 然後 Windows + Safari 設成 Safari-Windows (叢林裏的一扇窗?....這...) 。這是因為,在不同作業系統上,即使是同一種瀏覽器,在處理javascript 及css render 上還是會不同(吐血...),所以這樣的抽離可以在環境的設定上更有彈性,是值得大大鼓勵的。
總之希望下次出build的時候可以靠它準時走人啦XDDDD
2 則留言:
那就叫 Jerry 給錢多買個螢幕先吧! 馬上兩倍效能耶!
我自己拿家裏的來頂著先了啦,創業維艱啊哈哈 …:D
張貼留言