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

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

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

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

驗收測試與單元測試和組合測試有以下不同之處:

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

背景知識

在討論 Selenium 之前,我要介紹關于以下三個話題的一些背景知識,因為這些話題雖然不是本文的主題,但是和本文密切相關:

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

持續(xù)集成

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

Ajax

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

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

Ruby/Ruby on Rails

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

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

什么是 Selenium?

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

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

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

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

Selenium 的核心,也稱 browser bot,是用 JavaScript 編寫的。這使得測試腳本可以在受支持的瀏覽器中運行。browser bot 負責執(zhí)行從測試腳本接收到的命令,測試腳本要么是用 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 應用程序的交互。例如,單擊一個按鈕和填寫一個表單,這些都是常見的用戶操作,可以用 Selenium 命令來自動化這些操作。
* 斷言驗證一個命令的預期結(jié)果。常見的斷言包括驗證頁面內(nèi)容或當前位置是否正確。

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

Selenium 模式

可以按兩種模式來使用 Selenium:test runner 和 driven。這兩種模式在復雜性和編寫方式方面有所不同。driven 測試腳本編寫起來往往要更復雜一些,因為它們是用編程語言編寫的。但是如果使用 Python 或 Ruby 之類的高級動態(tài)編程語言,那么這種復雜性方面的差異很小。

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

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

test runner 模式

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

清單 1. Selenium 測試用例的結(jié)構
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 腳本通常與所測試的應用程序(AUT)部署在同一個服務器上。這是因為 browser bot 使用 JavaScript 來模擬用戶操作。這些腳本在一個受限制的沙箱環(huán)境中運行。如果需要繞過這些限制,可以使用一個代理。

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