前面的基本了解后,我總結(jié)一下近我的一個(gè)應(yīng)用。在不改動(dòng)腳本的前提下,讓程序在兩個(gè)主機(jī)上同時(shí)運(yùn)行。在selenium的官網(wǎng)上都是介紹如何運(yùn)用Testng和selenium grid 讓腳本并行起來。關(guān)于Testng+selenium實(shí)現(xiàn)腳本并行運(yùn)行網(wǎng)上有很多資料。
Junit本身不支持并行, 如果要想并行運(yùn)行的需要修改腳本。這個(gè)比較麻煩。在不改變腳本的情況下,我們可以利用selenium Grid 和hudson+ant實(shí)現(xiàn)類似的功能。
主要的思路,是新建多個(gè)任務(wù),每個(gè)任務(wù)同一個(gè)code但是不同的配置文件(控制用例的執(zhí)行,和瀏覽器設(shè)置),然后啟動(dòng)多個(gè)rc,同時(shí)觸發(fā)多個(gè)任務(wù)。后新建一個(gè)report的任務(wù),將把每個(gè)分任務(wù)的junit報(bào)告合成。
具體如下:
1.配置hudson:在系統(tǒng)管理-》系統(tǒng)設(shè)置中將執(zhí)行者數(shù)量改為你要同時(shí)運(yùn)行job的數(shù)量。
2.注冊你需要的RC.你可以在rc的selenium grid 在hub上注冊:
ant -Denvironment="*FireFox" -Dport=5555 -Dhost=192.168.1.182 -DhubURL=http://192.168.1.182:4444 launch-remote-control
你也可以增加HUDSON節(jié)點(diǎn)通過jnlp連接到hudson master。這樣會(huì)在每次重啟tomcat的時(shí)候,連接好遠(yuǎn)程主機(jī)后,rc會(huì)自動(dòng)注冊。
3.用一個(gè)外部xml(config.xml)來控制要運(yùn)行的case,假如我們有100 個(gè)用例要運(yùn)行,我們?yōu)锳分配30個(gè)任務(wù),為B分配30個(gè)任務(wù),剩下的由C執(zhí)行。每次我們要增加用例,只需要改變這個(gè)config文件可以了。
具體是這樣:(1)新建config job專門用于在svn上下載3個(gè)config文件。
(2) 為A,B,C新建3個(gè)任務(wù)。配置SVN指向代碼的根目錄。
(3)配置共有的ant,在原本的ant任務(wù)中假如copy操作,將config文件copy到當(dāng)前job的workspace下面。
(4)新建report任務(wù),講3個(gè)單獨(dú)的job junit報(bào)告集成成一份報(bào)告。
具體是修改junitreport節(jié)點(diǎn)。取到3個(gè)分開job的test*.xml用于合成html匯總報(bào)告。
(5)講config文件設(shè)為定時(shí)任務(wù),然后將A,B,C設(shè)為其下游任務(wù)。
在將report設(shè)為A,B,C的下游任務(wù)。
(6)這樣整個(gè)平臺(tái)搭建起來了。