欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
用 Selenium 自動(dòng)化驗收測試


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

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

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

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

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

背景知識

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

  • 持續集成
  • Ajax
  • Ruby/Ruby on Rails

持續集成

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

Ajax

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

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

Ruby/Ruby on Rails

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

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






什么是 Selenium?

Selenium 是 ThoughtWorks 專(zhuān)門(mén)為 Web 應用程序編寫(xiě)的一個(gè)驗收測試工具。據 Selenium 主頁(yè)所說(shuō),與其他測試工具相比,使用 Selenium 的最大好處是:

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

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

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

Selenium 的核心,也稱(chēng) browser bot,是用 JavaScript 編寫(xiě)的。這使得測試腳本可以在受支持的瀏覽器中運行。browser bot 負責執行從測試腳本接收到的命令,測試腳本要么是用 HTML 的表布局編寫(xiě)的,要么是使用一種受支持的編程語(yǔ)言編寫(xiě)的。

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 命令

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

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

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








Selenium 模式

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

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

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








test runner 模式

Selenium test runner 腳本,也稱(chēng)測試用例(test case),是用 HTML 語(yǔ)言通過(guò)一個(gè)簡(jiǎn)單的表布局編寫(xiě)的,如 清單 1 所示。


清單 1. Selenium 測試用例的結構
                          <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)部署在同一個(gè)服務(wù)器上。這是因為 browser bot 使用 JavaScript 來(lái)模擬用戶(hù)操作。這些腳本在一個(gè)受限制的沙箱環(huán)境中運行。如果需要繞過(guò)這些限制,可以使用一個(gè)代理。

test runner 腳本使用與 xUnit 框架相同的測試套件(test suite)和測試用例概念。測試用例和命令按照它們在測試套件和測試用例中出現的順序依次執行。在 清單 1 中:

  • 第一列包含命令斷言。
  • 第二列包含命令或斷言的目標(target)。這里可以用多種受支持的組件定位符中的一種來(lái)指定目標。通常使用的是組件的 ID 或名稱(chēng),但 XPath 和 DOM 定位符也是受支持的。
  • 第三列包含用于為命令或斷言指定參數的。例如,當使用 type 命令時(shí),這一列可能就是一個(gè)文本域所期望的值。

即使對于非技術(shù)人員來(lái)說(shuō),test runner 腳本也易于閱讀和編寫(xiě)。當在一個(gè)瀏覽器中打開(kāi) 清單 1 中的例子時(shí),將得到類(lèi)似這樣的一個(gè)表:

First command Target Value
Second command Target Value

接下來(lái),我將描述如何使用命令和斷言編寫(xiě)一個(gè)簡(jiǎn)單但是完整的測試用例。

測試用例實(shí)例

執行 清單 2 中的測試腳本時(shí),它將執行以下操作:

  1. 通過(guò)進(jìn)入 /change_address_form.html 打開(kāi)變更地址頁(yè)面。
  2. 在 ID 為 address_field 的文本框中輸入 Betelgeuse state prison。
  3. 單擊名為 Submit 的輸入區。注意,這里使用 XPath 找到 Submit 按鈕,這導致表單數據被發(fā)送到服務(wù)器。
  4. 驗證頁(yè)面是否包含文本 Address change successful。

清單 2. 在測試用例中使用命令和斷言的例子
                          <table>                        <tr>                        <td>open</td>                        <td>/change_address_form.html</td>                        <td></td>                        </tr>                        <tr>                        <td>type</td>                        <td>address_field</td>                        <td>Betelgeuse state prison</td>                        </tr>                        <tr>                        <td>clickAndWait</td>                        <td>//input[@name=‘Submit‘]</td>                        <td></td>                        </tr>                        <tr>                        <td>verifyTextPresent</td>                        <td>Address change successful</td>                        <td></td>                        </tr>                        </table>                        

測試套件

要達到對應用程序的完全測試覆蓋,通常需要不止一個(gè)測試用例。這就是 Selenium 使用測試套件的原因。測試套件用于將具有類(lèi)似功能的一些測試用例編成一組,以便讓它們按順序運行。

測試套件和測試用例一樣,都是用簡(jiǎn)單的 HTML 表編寫(xiě)的。Selenium 執行的缺省測試套件的名稱(chēng)是 TestSuite.html。清單 3 展示了一個(gè)測試套件,該套件像通常的用戶(hù)一樣測試應用程序。注意,測試套件使用一個(gè)只包含一列的表,表中的每一行指向一個(gè)包含某個(gè)測試用例的文件。


清單 3. 測試套件示例
                          <table>                        <tr>                        <td>Test suite for the whole application</td>                        </tr>                        <tr>                        <td><a href="test_main_page.html">Access main page</a></td>                        </tr>                        <tr>                        <td><a href="test_login.html">Login to application</a></td>                        </tr>                        <tr>                        <td><a href="test_address_change.html">Change address</a></td>                        </tr>                        <tr>                        <td><a href="test_logout.html">Logout from application</a></td>                        </tr>                        </table>                        

接下來(lái)我將把目光轉移到 driven 測試腳本。






driven 模式

driven Selenium 腳本是用多種受支持的編程語(yǔ)言中的一種編寫(xiě)的 —— 目前可用的有 Java、Ruby 和 Python 驅動(dòng)程序。這些腳本在瀏覽器之外的一個(gè)單獨的進(jìn)程中運行。驅動(dòng)程序的任務(wù)是執行測試腳本,并通過(guò)與運行在瀏覽器中的 browser bot 進(jìn)行通信來(lái)驅動(dòng)瀏覽器。驅動(dòng)程序與 browser bot 之間的通信使用一種簡(jiǎn)單的特定于 Selenium 的連接語(yǔ)言 Selenese。

driven 腳本比 test runner 腳本更強大、更靈活,可以將它們與 xUnit 框架集成。driven 腳本的缺點(diǎn)(與 test runner 腳本相比)是,這種腳本編寫(xiě)和部署起來(lái)更復雜。這是因為驅動(dòng)程序必須執行以下任務(wù):

  • 啟動(dòng)服務(wù)器。
  • 部署所測試的應用程序(AUT)。
  • 部署測試腳本。
  • 啟動(dòng)瀏覽器。
  • 發(fā)送命令到 browser bot。
  • 驗證 browser bot 執行的命令的結果。

driven 腳本更依賴(lài)于應用程序運行時(shí)環(huán)境。例如,Java 驅動(dòng)程序使用一個(gè)嵌入式 Jetty 或 Tomcat 實(shí)例來(lái)部署所測試的應用程序。目前,已經(jīng)有人在致力于將 Selenium 集成到 Ruby on Rails 中,但是在我撰寫(xiě)本文之際,這個(gè)集成版本還沒(méi)有被發(fā)布。

清單 4 摘自一個(gè)使用 Ruby 驅動(dòng)程序的 driven 測試腳本。注意,我省略了用于啟動(dòng)服務(wù)器和瀏覽器的步驟,這個(gè)測試腳本代碼幾乎和 test runner 腳本一樣簡(jiǎn)單。


清單 4. 使用 Ruby 驅動(dòng)程序的例子
                            .                        .                        puts selenium.open(‘/logout.html‘)                        puts selenium.verify_location(‘/index.html‘)                        .                        .                        







現實(shí)中的需求

在接下來(lái)的兩節(現實(shí)中的需求現實(shí)中的用例)中,我將描述如何在現實(shí)場(chǎng)景中使用 Selenium,并針對用 Ruby on Rails 和一點(diǎn)兒 Ajax 技術(shù)編寫(xiě)的一個(gè)簡(jiǎn)單的股票報價(jià)查看器應用程序編寫(xiě) Selenium 測試用例。雖然這個(gè)應用程序是用 Ruby on Rails 編寫(xiě)的,但是也可以將這個(gè)例子應用于任何 Web 應用程序,因為測試腳本是按 test runner 模式以 HTML 編寫(xiě)的。這個(gè)示例應用程序是用 Ruby 1.8.3 和 Ruby on Rails 0.14.2 測試的,但是它也可能可以使用更舊的或更新的版本。

如果有 Linux,那么發(fā)行版中通常已經(jīng)包括了 Ruby。在命令提示符下運行 ruby -v,檢查您所擁有的版本。對于大多數平臺,都可以在 http://www.ruby-lang.org/ 上找到一個(gè) Ruby 發(fā)行版。

接下來(lái)的步驟是通過(guò) RubyGems 打包系統安裝 Ruby on Rails。為此,只需執行 gem install rails --include-dependencies。在某些平臺上,必須執行一些額外的步驟,所以請訪(fǎng)問(wèn) Ruby on Rails 網(wǎng)站,以獲得更多細節。

在我撰寫(xiě)本文之際,目前可用的 Selenium 版本是 0.6。我已經(jīng)將它集成在示例應用程序中(見(jiàn) 下載 小節),我的做法是從 http://selenium.thoughtworks.com/ 下載 Selenium Core 包,然后將名為 selenium 的文件夾復制到用于靜態(tài)內容的文件夾。在 Ruby on Rails 應用程序中,這個(gè)文件夾的名稱(chēng)是 public。在 J2EE Web 應用程序中,可以將 selenium 文件夾放在 Web 應用程序的根目錄或 WAR 歸檔文件中。

最后一步是下載示例應用程序。從 下載 小節中獲得這個(gè)包。解壓應用程序,并打開(kāi)一個(gè)命令提示符。然后轉入應用程序被解壓到的那個(gè)目錄。為了啟動(dòng)應用程序,運行 ruby script/server。應該看到 Rails 成功啟動(dòng)了,如 圖 1 所示。


圖 1. 從命令提示符下運行 Ruby on Rails





回頁(yè)首


現實(shí)中的用例

在本節中,我將列出示例應用程序的用例。通過(guò)這些簡(jiǎn)化的用例,可以編寫(xiě)模擬用戶(hù)所執行步驟的驗收測試,并驗證這些步驟的結果是否與預期相符。股票報價(jià)應用程序實(shí)現了以下四個(gè)用例:

  • 登錄
  • 查看股票
  • 查看股票細節
  • 退出

實(shí)現這些用例的代碼已經(jīng)編寫(xiě)好了;可以在 app 目錄中找到該代碼,測試用例在 public/selenium/tests 文件夾中。

登錄用例

大多數人都知道登錄頁(yè)面是如何工作的 —— 輸入用戶(hù)名和密碼,然后將數據提交到服務(wù)器。如果憑證有效,就可以成功登錄,并看到受安全保護的資源。在示例應用程序中,這個(gè)測試用例包含以下用戶(hù)操作和斷言,必須將它轉換成一個(gè) Selenium 測試用例:

  1. 單擊登錄鏈接。
  2. 驗證系統是否要求用戶(hù)進(jìn)行登錄。
  3. 輸入用戶(hù)名。
  4. 輸入密碼。
  5. 按下登錄按鈕。
  6. 驗證是否登錄成功。

圖 2 展示了用于這些需求的 Selenium 測試用例。注意,我是在運行測試之后截取屏幕快照的。綠色箭頭表示成功地通過(guò)驗證的斷言。


圖 2. 登錄和查看股票測試用例

查看股票測試用例

查看股票頁(yè)面顯示一個(gè)公司列表。用于這個(gè)頁(yè)面的測試用例非常簡(jiǎn)單,所以被包括在前一個(gè)測試用例的后面。該測試用例驗證當前位置是否為 /main/list_stocks,以及頁(yè)面是否包含文本 Click on a company name to view details。

查看股票細節用例

查看股票細節用例是在查看股票頁(yè)面上觸發(fā)的。用戶(hù)在一個(gè)公司名稱(chēng)上單擊鼠標時(shí),就觸發(fā)了到服務(wù)器的一個(gè) Ajax 請求。服務(wù)器的響應包括該公司的詳細信息,這些信息將插入到當前頁(yè)面中,而不必重新裝載完整的頁(yè)面。用于這個(gè)用例的測試用例執行以下用戶(hù)操作:

  1. 單擊公司名稱(chēng) Acme Oil。
  2. 驗證頁(yè)面上是否顯示該公司的詳細信息。
  3. 單擊公司名稱(chēng) Acme Automotive。
  4. 驗證頁(yè)面上是否顯示該公司的詳細信息。

由于使用了 Ajax,請求是異步發(fā)生的。在一般的 Web 應用程序中,所有東西通常都是同步的,因此這一點(diǎn)提出了一種不同的挑戰??梢韵駵y試其他功能一樣來(lái)測試 Ajax 功能。惟一的不同是,必須讓 Selenium 暫停,等待 Ajax 命令完成。為此,可以使用 pause 命令來(lái)等待 Ajax 命令的完成。另外,Joseph Moore 在他最近的 blog 貼中提到,還可以使用 waitForValuewaitForCondition 命令代替 pause 命令(見(jiàn) 參考資料)。

圖 3 展示了被轉換成 Selenium 用例的需求。


圖 3. 查看股票細節測試用例

注意 pause 命令:必須使用這些命令,以便等待異步請求完成和更新頁(yè)面內容。如果沒(méi)有 500 毫秒的暫停,測試將失?。ㄈ?圖 4 所示)。


圖 4. 失敗的查看股票細節測試用例

pause 命令還測試 Ajax 功能的非功能性需求。500 毫秒對于 pause 命令是一個(gè)很好的值,因為 Ajax 請求應該快速地執行和完成??梢栽囍?zhù)去掉 pause 命令,看看結果如何。如果測試在您的機器上失敗,那么試著(zhù)將這個(gè)值增加到 1000 毫秒。

退出用例

退出用例很容易實(shí)現,簡(jiǎn)單來(lái)說(shuō)只有以下兩步:

  1. 單擊退出鏈接。
  2. 驗證是否成功退出。

圖 5 展示了最后這個(gè)測試用例。


圖 5. 退出用例

所有測試都被添加到 圖 6 左側顯示的缺省測試套件中。


圖 6. 示例應用程序的測試套件

執行測試套件

最后要做的是在 Mozilla Firefox 和 Microsoft Internet Explorer 中執行測試套件。為此,在瀏覽器中打開(kāi) http://localhost:3000/selenium/TestRunner.html,然后單擊 圖 6 中所示的 All 按鈕。失敗的測試用例和斷言將被標記為紅色,但是這里,在兩個(gè)瀏覽器中所有用例都應該可以成功完成(同樣見(jiàn) 圖 6)。注意,我使用的是 Mozilla Firefox 1.0.7 和 Internet Explorer 6.0。

還可以單步調試測試套件,這意味著(zhù) Selenium 將很慢地執行測試套件,這樣當測試套件在瀏覽器中執行時(shí),就可以看到它的每一步。


本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
在做自動(dòng)化測試之前你需要知道的
盤(pán)點(diǎn):Android與iOS開(kāi)發(fā)常用的五個(gè)開(kāi)源自動(dòng)化工具
如何開(kāi)始使用接口自動(dòng)化測試腳本
軟件測試工程師‖怎么編寫(xiě)測試腳本
在實(shí)施DevOps中,如何選擇合適的自動(dòng)化測試工具
使用Selenium進(jìn)行驗收測試
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久