前面的基本了解后,我總結一下近我的一個應用。在不改動腳本的前提下,讓程序在兩個主機上同時運行。在selenium的官網上都是介紹如何運用Testng和selenium grid 讓腳本并行起來。關于Testng+selenium實現腳本并行運行網上有很多資料。
Junit本身不支持并行, 如果要想并行運行的需要修改腳本。這個比較麻煩。在不改變腳本的情況下,我們可以利用selenium Grid 和hudson+ant實現類似的功能。
主要的思路,是新建多個任務,每個任務同一個code但是不同的配置文件(控制用例的執行,和瀏覽器設置),然后啟動多個rc,同時觸發多個任務。后新建一個report的任務,將把每個分任務的junit報告合成。
具體如下:
1.配置hudson:在系統管理-》系統設置中將執行者數量改為你要同時運行job的數量。
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節點通過jnlp連接到hudson master。這樣會在每次重啟tomcat的時候,連接好遠程主機后,rc會自動注冊。
3.用一個外部xml(config.xml)來控制要運行的case,假如我們有100 個用例要運行,我們為A分配30個任務,為B分配30個任務,剩下的由C執行。每次我們要增加用例,只需要改變這個config文件可以了。
具體是這樣:(1)新建config job專門用于在svn上下載3個config文件。
(2) 為A,B,C新建3個任務。配置SVN指向代碼的根目錄。
(3)配置共有的ant,在原本的ant任務中假如copy操作,將config文件copy到當前job的workspace下面。
(4)新建report任務,講3個單獨的job junit報告集成成一份報告。
具體是修改junitreport節點。取到3個分開job的test*.xml用于合成html匯總報告。
(5)講config文件設為定時任務,然后將A,B,C設為其下游任務。
在將report設為A,B,C的下游任務。
(6)這樣整個平臺搭建起來了。