構(gòu)建Web UI 自動(dòng)化測(cè)試環(huán)境
Sahi 是一款優(yōu)秀的開源 Web UI 自動(dòng)化測(cè)試框架。Jenkins 是業(yè)界眾所周知的持續(xù)集成工具。Docker 是一個(gè)開源的應(yīng)用容器引擎,一顆冉冉升起的技術(shù)新星。本文通過一個(gè)實(shí)例,介紹如何將三者 Sahi 是一款優(yōu)秀的開源 Web UI 自動(dòng)化測(cè)試框架。Jenkins 是業(yè)界眾所周知的持續(xù)集成工具。Docker 是一個(gè)開源的應(yīng)用容器引擎,一顆冉冉升起的技術(shù)新星。本文通過一個(gè)實(shí)例,介紹如何將三者集成構(gòu)建 Web UI 自動(dòng)化測(cè)試環(huán)境。 Docker 介紹 Docker 號(hào)稱是下一代的虛擬機(jī),它在啟動(dòng)和創(chuàng)建速度、性能、移植性等方面均優(yōu)于傳統(tǒng)虛擬機(jī)。Docker 是 PaaS 提供商 dotCloud 開源的一個(gè)基于 LXC 的高級(jí)容器引擎。它能夠讓開發(fā)者打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。目前,通過 Boot2Docker 已能使 Docker 運(yùn)行在 Windows 和 OS X 中。Docker 容器完全使用沙箱機(jī)制,相互之間沒有任何接口。Docker 幾乎沒有性能開銷,可以很容易地在機(jī)器和數(shù)據(jù)中心中運(yùn)行。最重要的是, 他們不依賴于任何語言、框架或系統(tǒng)?! ocker 在其網(wǎng)站上明確地提到的 Docker 的典型應(yīng)用場(chǎng)景如下: 對(duì)應(yīng)用進(jìn)行自動(dòng)打包和部署 創(chuàng)建輕量、私有的 PAAS 環(huán)境 自動(dòng)化測(cè)試和持續(xù)整合與部署 部署和擴(kuò)展 Web 應(yīng)用、數(shù)據(jù)庫和后端服務(wù) 在自動(dòng)化測(cè)試領(lǐng)域,Docker 大有取代傳統(tǒng)虛擬機(jī)技術(shù)的趨勢(shì),原因如下: 自動(dòng)化測(cè)試依賴的是測(cè)試所需要的應(yīng)用,而并非整個(gè)操作系統(tǒng)。因此,傳統(tǒng)的虛擬機(jī)技術(shù)存在資源浪費(fèi)?! ocker 構(gòu)建于 LXC 之上。借助 LXC 輕量級(jí)的特性,相比于目前的虛擬機(jī)技術(shù),Docker 啟動(dòng)更快、資源占用更小?! ocker 比虛擬機(jī)輕量、靈活,便于管理。 Docker 標(biāo)準(zhǔn)化的構(gòu)建方法 (Dockerfile) 和良好的 REST API,使得自動(dòng)測(cè)試和持續(xù)集成/部署能夠很好的集成進(jìn)來?! ahi 介紹 Sahi 是一個(gè)開源的 Web UI 自動(dòng)化測(cè)試框架。盡管它的知名度不及 Selenium,用戶群也不及 Selenium 龐大,但它確有它獨(dú)特的魅力,例如: 基于上下文的頁面元素識(shí)別機(jī)制。 隱式頁面加載響應(yīng)等待機(jī)制?! ×己玫臑g覽器支持。 優(yōu)秀的跨瀏覽器錄制回放調(diào)試工具 Sahi Controller?! ∵@些特性都大大地加快了自動(dòng)化測(cè)試腳本的開發(fā)速度,并降低了維護(hù)成本?! ahi 通過一個(gè)用 Java 編寫的代理服務(wù)器,將用戶的腳本轉(zhuǎn)換為 JavaScript 后注入往返的 HTTP 請(qǐng)求及響應(yīng)中,從而驅(qū)動(dòng)瀏覽器事件。編程語言方面,除 Sahi 腳本(其本質(zhì)是一個(gè) JavaScript 庫)以外,還支持 Java 和 Ruby。Sahi 有開源和收費(fèi)兩個(gè)版本。雖然收費(fèi)版本提供了很多開源版本不具備的高級(jí)特性,不過開源版本已經(jīng)能夠滿足大部分的功能要求。點(diǎn)此查看開源版本與收費(fèi)版本的差異。點(diǎn)此查看Sahi 與其他 Web 自動(dòng)化測(cè)試框架的對(duì)比?! enkins 介紹 Jenkins 是一種開源的基于 Java 開發(fā)的持續(xù)集成工具,前身稱作 Hudson。Jenkins 提供了用于監(jiān)控持續(xù)重復(fù)工作的軟件平臺(tái)。它支持豐富的插件,用戶可以按照需求進(jìn)行選擇安裝和配置,以實(shí)現(xiàn)生成執(zhí)行狀態(tài)表格,自動(dòng)部署、更新自動(dòng)化測(cè)試包等高級(jí)功能。本文將要介紹 Jenkins 的 Docker 插件,它能夠動(dòng)態(tài)地創(chuàng)建 Docker 容器作為 Jenkins Slave 節(jié)點(diǎn),并在執(zhí)行任務(wù)后,自動(dòng)關(guān)閉容器。另外,它還支持一些額外功能,比如當(dāng)構(gòu)建任務(wù)成功完成后自動(dòng)將容器保存為鏡像、自動(dòng)將鏡像上傳到資源庫等?! ?shí)例演示 該實(shí)例演示如何制作一個(gè)運(yùn)行 Sahi 的鏡像以及如何在 Jenkins 上配置 Docker 插件以運(yùn)行 Sahi 測(cè)試腳本?! ?zhǔn)備 Docker 鏡像 本實(shí)例需要準(zhǔn)備三個(gè)鏡像:一個(gè)運(yùn)行 Jenkins,一個(gè)運(yùn)行 Subversion,另外一個(gè)運(yùn)行 Sahi?! ∈紫龋谱鬟\(yùn)行 Sahi 的鏡像。Docker Hub 是一個(gè)用于分享 Docker 鏡像的資源庫。目前,該資源庫還沒有運(yùn)行 Sahi 的鏡像,所以必須自己創(chuàng)建 Dockerfile 來構(gòu)建鏡像。下圖是用來制作 Sahi 鏡像的目錄?! D 1. 制作 Sahi 鏡像的目錄 下圖是 Dockerfile 的文件內(nèi)容?! D 2. Dockerfile文件內(nèi)容 整個(gè)過程大體分為八個(gè)步驟: 1.指定基礎(chǔ)鏡像 我們使用的是 evarga/jenkins-slave。該鏡像基于 Ubuntu,安裝了 SSH 服務(wù),并創(chuàng)建了用戶 Jenkins。
頁:
[1]