[Maven + Gem]為大型企業打造自動化測試工具
一. 目的與區別
我曾在2010年在國內知名搜索引擎服務商公司工作,主要負責網頁前端自動化測試工具的開發,我們當時的做法已經其實和現在網頁自動化測試方法基本一致,即在watir和watir-webdriver上開發一套自己的封裝層,但當時沒有引入cucumber做BDD, 而是讓其他測試人員直接編寫RUBY腳本,require我們制做的封裝層,其實理論上講,只是沒有打包成gem,也沒有進行測試。 在此過程中遇到的最大的困難就是將我們的封裝層部署到每個測試人員的計算機中,并可以指導每個測試人員編寫ruby腳本。因此,以上所提及的point都是針對大型網站服務商的測試工具開發的基本薄弱點,也是為中型公司和大型公司開發測試工具的不同點。
為大型公司開發測試工具必須要引入AGILE的方法,才能使整個測試工具從開發到使用是可控的。但本文不著重講AGILE的方法,主要講的內容是如何BUILD你最初的整體MAVEN架構,如何利用MAVEN去開發和發布自己的gem或是ruby home.
二. 整體思路
主要有兩種方法,
其一是比較傳統的打包成gem,發送給所有的測試人員,讓其安裝本地gem,前提條件是每個測試人員都必須安裝同樣版本的ruby 或者jruby,這一點來說并不好控制,因此,該方法優點就是方便快捷,但缺點就是沒有辦法管理基礎層的版本。
其二是將整個ruby home打包成zip發布,因為ruby的目錄程序是不需要安裝的,拷貝到任何一臺計算機都可以直接使用,只需要設置一下ruby home即可,而且還可以使用ide去進行開發,這樣的方法是我主要推薦的,所有的版本都在測試工具開發人員的掌握之中,不會因為ruby的版本變化,或者ruby中安裝的其他的gem的影響,而導致整個測試框架的不穩定或者完全崩潰
三. maven項目的目錄結構
-RobinJ (Project name)
-- org.robinj.robinj-gem
-- org.robinj.jrubyhome
-- org.robinj.test
-- org.robinj.test.chrome
-- org.robinj.test.firefox
-- org.robinj.test.ie
四. 模塊介紹
<span style="font-size:18px;"><execution> <id>import jruby complete and own gems</id> <phase>process-resources</phase> <goals> <goal>copy</goal> </goals> <configuration> <artifactItems> <artifactItem> <groupId>org.jruby</groupId> <artifactId>jruby-complete</artifactId> <version>${jruby.version}</version> <type>jar</type> <overWrite>true</overWrite> <outputDirectory>${basedir}/tmp</outputDirectory> </artifactItem> <artifactItem> <groupId>org.robinj</groupId> <artifactId>robinj-gem</artifactId> <version>${project.parent.version}</version> <type>gem</type> <outputDirectory>${basedir}</outputDirectory> </artifactItem> </artifactItems> </configuration> </execution></span> |