驗收測試也稱黑盒測試和功能測試,是測試和檢驗應用程序是否能按照涉眾(stakeholder)的功能性需求、非功能性需求和其他重要需求來運行的一種方法。驗收測試是單元測試和組合測試的補充,后兩者通常是使用 xUnit 框架編寫的。驗收測試也可以使用編程語言來編寫,但是 Selenium 和其他類似的工具,例如 Fitnesse,也支持用特定于工具的文檔格式編寫測試。
驗收測試與單元測試和組合測試有以下不同之處:
應用程序是作為一個完整的端到端實體來測試的,而不是像單元測試和組合測試那樣,只是測試一個類或一組類。
驗收測試是在用戶界面(例如一個瀏覽器)上執行的,而不是在 Web 應用程序界面上執行的。
編寫測試用例的人不一定知道應用程序的內部結構,因此也被稱作黑盒測試。非技術性用戶也可以編寫驗收測試。
背景知識
在討論 Selenium 之前,我要介紹關于以下三個話題的一些背景知識,因為這些話題雖然不是本文的主題,但是和本文密切相關:
持續集成的目標是自動化構建和測試過程,以便每天自動運行一次或多次這些過程,而不是每個月手動地運行一次。使用持續集成的最大好處是,代碼的更改會定期地自動被集成。如果系統受損,沒有構建成功,Apache Continuum 和 Luntbuild 之類的持續集成工具可以自動通過發送電子郵件通知團隊(見 參考資料)。
Ajax
Ajax 是 Asynchronous JavaScript and XML 的縮寫,這是為相當老的技術新創造的一個術語。Ajax 背后的主要思想是,由于只需更新部分頁面而不是整個頁面,所以 Web 應用程序可以更快地對用戶操作做出響應。
Ajax 將更多的復雜性引入到 Web 應用程序中,這一點也反映在測試中。這是因為 Ajax 就像它的名稱所表明的那樣,使用 JavaScript 和異步 HTTP 請求來更新頁面內容。每個瀏覽器在實現中與其他瀏覽器相比有一些小小的不同。Selenium 是測試和檢測這些差異的很好的工具,因為它在大多數流行的瀏覽器中都能夠運行。
Ruby/Ruby on Rails
Ruby 是一種開放源碼的解釋型腳本語言,用于快捷、容易地進行面向對象程序設計。它提供了大量的庫,而且簡單易用,還具有可擴展性和可移植性。該語言是由 Yukihiro “Matz” Matsumoto 創造的,目的是讓程序員將更多的注意力放在手頭的任務上,擺脫語法的煩惱。
Rails 是由 David Heinemeier Hansson 創造的一種全棧的(full-stack)、開放源碼的 Ruby Web 框架。Rails 的目標是使現實中的應用程序編寫起來需要的代碼更少,并且比 J2EE 和 XML 之類的語言更容易。所有層都能夠無縫地一起工作,因此可以使用一種語言編寫從模板到控制流乃至業務邏輯的各種東西。Rails 使用 YAML 而不是 XML 配置文件以及注釋形式的反射和運行時擴展。這里不存在編譯階段 —— 程序修改后將直接運行。
什么是 Selenium?
Selenium 是 ThoughtWorks 專門為 Web 應用程序編寫的一個驗收測試工具。據 Selenium 主頁所說,與其他測試工具相比,使用 Selenium 的最大好處是:
Selenium 測試直接在瀏覽器中運行,就像真實用戶所做的一樣。Selenium 測試可以在 Windows、Linux 和 MacintoshAnd 上的 Internet Explorer、Mozilla 和 Firefox 中運行。其他測試工具都不能覆蓋如此多的平臺。
使用 Selenium 和在瀏覽器中運行測試還有很多其他好處。下面是主要的兩大好處:
通過編寫模仿用戶操作的 Selenium 測試腳本,可以從終端用戶的角度來測試應用程序。
通過在不同瀏覽器中運行測試,更容易發現瀏覽器的不兼容性。
Selenium 的核心,也稱 browser bot,是用 JavaScript 編寫的。這使得測試腳本可以在受支持的瀏覽器中運行。browser bot 負責執行從測試腳本接收到的命令,測試腳本要么是用 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+ |
原文轉自:http://www.anti-gravitydesign.com