您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源功能測(cè)試工具 > Selenium
用 Selenium 自動(dòng)化驗(yàn)收測(cè)試
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2012/11/29 14:21:38 ] 推薦標(biāo)簽:

驗(yàn)收測(cè)試(也稱功能測(cè)試)是用來測(cè)試手工任務(wù)的功能的,但是手工測(cè)試這些任務(wù)可能很花時(shí)間,并且容易出現(xiàn)人為的錯(cuò)誤。在本文中,作者為架構(gòu)師、開發(fā)人員和測(cè)試人員展示了如何使用 Selenium 測(cè)試工具來自動(dòng)化驗(yàn)收測(cè)試。通過自動(dòng)化測(cè)試,可以節(jié)省時(shí)間,并消除測(cè)試人員所犯的錯(cuò)誤。文中還給出了一個(gè)例子,以演示如何將 Selenium 應(yīng)用到現(xiàn)實(shí)中使用 Ruby on Rails 和 Ajax 的項(xiàng)目上。

Web 應(yīng)用程序的驗(yàn)收測(cè)試常常涉及一些手工任務(wù),例如打開一個(gè)瀏覽器,并執(zhí)行一個(gè)測(cè)試用例中所描述的操作。但是手工執(zhí)行的任務(wù)容易出現(xiàn)操作人員人為的錯(cuò)誤,也比較費(fèi)時(shí)間。因此,盡可能將這些任務(wù)自動(dòng)化,以消除人為因素,這是一種很好的做法。于是 Selenium 之類的測(cè)試工具有了用武之地。Selenium 幫助您自動(dòng)化驗(yàn)收測(cè)試,從而可以構(gòu)建經(jīng)過更嚴(yán)格測(cè)試、因而更為可靠也更易于維護(hù)的軟件。

驗(yàn)收測(cè)試也稱黑盒測(cè)試和功能測(cè)試,是測(cè)試和檢驗(yàn)應(yīng)用程序是否能按照涉眾(stakeholder)的功能性需求、非功能性需求和其他重要需求來運(yùn)行的一種方法。驗(yàn)收測(cè)試是單元測(cè)試和組合測(cè)試的補(bǔ)充,后兩者通常是使用 xUnit 框架編寫的。驗(yàn)收測(cè)試也可以使用編程語言來編寫,但是 Selenium 和其他類似的工具,例如 Fitnesse,也支持用特定于工具的文檔格式編寫測(cè)試。

驗(yàn)收測(cè)試與單元測(cè)試和組合測(cè)試有以下不同之處:

* 應(yīng)用程序是作為一個(gè)完整的端到端實(shí)體來測(cè)試的,而不是像單元測(cè)試和組合測(cè)試那樣,只是測(cè)試一個(gè)類或一組類。
* 驗(yàn)收測(cè)試是在用戶界面(例如一個(gè)瀏覽器)上執(zhí)行的,而不是在 Web 應(yīng)用程序界面上執(zhí)行的。
* 編寫測(cè)試用例的人不一定知道應(yīng)用程序的內(nèi)部結(jié)構(gòu),因此也被稱作黑盒測(cè)試。非技術(shù)性用戶也可以編寫驗(yàn)收測(cè)試。

背景知識(shí)

在討論 Selenium 之前,我要介紹關(guān)于以下三個(gè)話題的一些背景知識(shí),因?yàn)檫@些話題雖然不是本文的主題,但是和本文密切相關(guān):

* 持續(xù)集成
* Ajax
* Ruby/Ruby on Rails

持續(xù)集成

持續(xù)集成的目標(biāo)是自動(dòng)化構(gòu)建和測(cè)試過程,以便每天自動(dòng)運(yùn)行一次或多次這些過程,而不是每個(gè)月手動(dòng)地運(yùn)行一次。使用持續(xù)集成的大好處是,代碼的更改會(huì)定期地自動(dòng)被集成。如果系統(tǒng)受損,沒有構(gòu)建成功,Apache Continuum 和 Luntbuild 之類的持續(xù)集成工具可以自動(dòng)通過發(fā)送電子郵件通知團(tuán)隊(duì)(見 參考資料)。

Ajax

Ajax 是 Asynchronous JavaScript and XML 的縮寫,這是為相當(dāng)老的技術(shù)新創(chuàng)造的一個(gè)術(shù)語。Ajax 背后的主要思想是,由于只需更新部分頁面而不是整個(gè)頁面,所以 Web 應(yīng)用程序可以更快地對(duì)用戶操作做出響應(yīng)。

Ajax 將更多的復(fù)雜性引入到 Web 應(yīng)用程序中,這一點(diǎn)也反映在測(cè)試中。這是因?yàn)?Ajax 像它的名稱所表明的那樣,使用 JavaScript 和異步 HTTP 請(qǐng)求來更新頁面內(nèi)容。每個(gè)瀏覽器在實(shí)現(xiàn)中與其他瀏覽器相比有一些小小的不同。Selenium 是測(cè)試和檢測(cè)這些差異的很好的工具,因?yàn)樗诖蠖鄶?shù)流行的瀏覽器中都能夠運(yùn)行。

Ruby/Ruby on Rails

Ruby 是一種開放源碼的解釋型腳本語言,用于快捷、容易地進(jìn)行面向?qū)ο蟪绦蛟O(shè)計(jì)。它提供了大量的庫,而且簡單易用,還具有可擴(kuò)展性和可移植性。該語言是由 Yukihiro “Matz” Matsumoto 創(chuàng)造的,目的是讓程序員將更多的注意力放在手頭的任務(wù)上,擺脫語法的煩惱。

Rails 是由 David Heinemeier Hansson 創(chuàng)造的一種全棧的(full-stack)、開放源碼的 Ruby Web 框架。Rails 的目標(biāo)是使現(xiàn)實(shí)中的應(yīng)用程序編寫起來需要的代碼更少,并且比 J2EE 和 XML 之類的語言更容易。所有層都能夠無縫地一起工作,因此可以使用一種語言編寫從模板到控制流乃至業(yè)務(wù)邏輯的各種東西。Rails 使用 YAML 而不是 XML 配置文件以及注釋形式的反射和運(yùn)行時(shí)擴(kuò)展。這里不存在編譯階段 —— 程序修改后將直接運(yùn)行。

什么是 Selenium?

Selenium 是 ThoughtWorks 專門為 Web 應(yīng)用程序編寫的一個(gè)驗(yàn)收測(cè)試工具。據(jù) Selenium 主頁所說,與其他測(cè)試工具相比,使用 Selenium 的大好處是:

Selenium 測(cè)試直接在瀏覽器中運(yùn)行,像真實(shí)用戶所做的一樣。Selenium 測(cè)試可以在 Windows、Linux 和 MacintoshAnd 上的 Internet Explorer、Mozilla 和 Firefox 中運(yùn)行。其他測(cè)試工具都不能覆蓋如此多的平臺(tái)。

使用 Selenium 和在瀏覽器中運(yùn)行測(cè)試還有很多其他好處。下面是主要的兩大好處:

* 通過編寫模仿用戶操作的 Selenium 測(cè)試腳本,可以從終端用戶的角度來測(cè)試應(yīng)用程序。
* 通過在不同瀏覽器中運(yùn)行測(cè)試,更容易發(fā)現(xiàn)瀏覽器的不兼容性。

Selenium 的核心,也稱 browser bot,是用 JavaScript 編寫的。這使得測(cè)試腳本可以在受支持的瀏覽器中運(yùn)行。browser bot 負(fù)責(zé)執(zhí)行從測(cè)試腳本接收到的命令,測(cè)試腳本要么是用 HTML 的表布局編寫的,要么是使用一種受支持的編程語言編寫的。

Selenium 適用于以下瀏覽器:

   Internet Explorer  Mozilla  Firefox  Safari
Windows XP
 6.0  1.6+, 1.7+  0.8+, 0.9+, 1.0  
Red Hat Linux
    1.6+, 1.7+  0.8+, 0.9+, 1.0+  
Mac OS X 10.3
 不支持  1.6+, 1.7+  0.8+, 0.9+, 1.0+  1.3+

Selenium 命令

通過 Selenium 命令,腳本編寫者可以描述 browser bot 在瀏覽器中所執(zhí)行的操作?梢詫⑦@些命令分成兩類 —— 操作(action) 和斷言(assertion):

* 操作模擬用戶與 Web 應(yīng)用程序的交互。例如,單擊一個(gè)按鈕和填寫一個(gè)表單,這些都是常見的用戶操作,可以用 Selenium 命令來自動(dòng)化這些操作。
* 斷言驗(yàn)證一個(gè)命令的預(yù)期結(jié)果。常見的斷言包括驗(yàn)證頁面內(nèi)容或當(dāng)前位置是否正確。

在 Selenium 網(wǎng)站上可以找到可用命令的完整列表(見 參考資料)。

Selenium 模式

可以按兩種模式來使用 Selenium:test runner 和 driven。這兩種模式在復(fù)雜性和編寫方式方面有所不同。driven 測(cè)試腳本編寫起來往往要更復(fù)雜一些,因?yàn)樗鼈兪怯镁幊陶Z言編寫的。但是如果使用 Python 或 Ruby 之類的高級(jí)動(dòng)態(tài)編程語言,那么這種復(fù)雜性方面的差異很小。

兩種模式之間大的不同點(diǎn)在于,如果使用 driven 腳本,測(cè)試有一部分在瀏覽器之外運(yùn)行,而如果使用 test runner 腳本的話,測(cè)試是完全在瀏覽器中運(yùn)行的。

不管是 test runner 還是 driven 測(cè)試用例,都可以與持續(xù)集成工具集成。

test runner 模式

Selenium test runner 腳本,也稱測(cè)試用例(test case),是用 HTML 語言通過一個(gè)簡單的表布局編寫的,如 清單 1所示。

清單 1. Selenium 測(cè)試用例的結(jié)構(gòu)
clearcase/" target="_blank" >cccccc><table border="1">
<tr>
<td>First command</td>
<td>Target</td>
<td>Value</td>
</tr>
<tr>
<td>Second command</td>
<td>Target</td>
<td>Value</td>
</tr>
</table>

test runner 腳本通常與所測(cè)試的應(yīng)用程序(AUT)部署在同一個(gè)服務(wù)器上。這是因?yàn)?browser bot 使用 JavaScript 來模擬用戶操作。這些腳本在一個(gè)受限制的沙箱環(huán)境中運(yùn)行。如果需要繞過這些限制,可以使用一個(gè)代理。

上一頁123下一頁
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd