test runner 腳本通常與所測試的應用程序(AUT)部署在同一個服務器上。這是因為 browser bot 使用 JavaScript 來模擬用戶操作。這些腳本在一個受限制的沙箱環境中運行。如果需要繞過這些限制,可以使用一個代理。
test runner 腳本使用與 xUnit 框架相同的測試套件(test suite)和測試用例概念。測試用例和命令按照它們在測試套件和測試用例中出現的順序依次執行。在 清單 1 中:
第一列包含命令 或斷言。
第二列包含命令或斷言的目標(target)。這里可以用多種受支持的組件定位符中的一種來指定目標。通常使用的是組件的 ID 或名稱,但 XPath 和 DOM 定位符也是受支持的。
第三列包含用于為命令或斷言指定參數的值。例如,當使用 type 命令時,這一列可能就是一個文本域所期望的值。
即使對于非技術人員來說,test runner 腳本也易于閱讀和編寫。當在一個瀏覽器中打開 清單 1 中的例子時,將得到類似這樣的一個表:
First command | Target | Value |
Second command | Target | Value |
接下來,我將描述如何使用命令和斷言編寫一個簡單但是完整的測試用例。
測試用例實例
執行 清單 2 中的測試腳本時,它將執行以下操作:
通過進入 /change_address_form.html 打開變更地址頁面。
在 ID 為 address_field 的文本框中輸入 Betelgeuse state prison。
單擊名為 Submit 的輸入區。注意,這里使用 XPath 找到 Submit 按鈕,這導致表單數據被發送到服務器。
驗證頁面是否包含文本 Address change successful。
清單 2. 在測試用例中使用命令和斷言的例子
|
測試套件
要達到對應用程序的完全測試覆蓋,通常需要不止一個測試用例。這就是 Selenium 使用測試套件的原因。測試套件用于將具有類似功能的一些測試用例編成一組,以便讓它們按順序運行。
測試套件和測試用例一樣,都是用簡單的 HTML 表編寫的。Selenium 執行的缺省測試套件的名稱是 TestSuite.html。清單 3 展示了一個測試套件,該套件像通常的用戶一樣測試應用程序。注意,測試套件使用一個只包含一列的表,表中的每一行指向一個包含某個測試用例的文件。
清單 3. 測試套件示例
|
接下來我將把目光轉移到 driven 測試腳本。
driven 模式
driven Selenium 腳本是用多種受支持的編程語言中的一種編寫的 —— 目前可用的有 Java、Ruby 和 Python 驅動程序。這些腳本在瀏覽器之外的一個單獨的進程中運行。驅動程序的任務是執行測試腳本,并通過與運行在瀏覽器中的 browser bot 進行通信來驅動瀏覽器。驅動程序與 browser bot 之間的通信使用一種簡單的特定于 Selenium 的連接語言 Selenese。
driven 腳本比 test runner 腳本更強大、更靈活,可以將它們與 xUnit 框架集成。driven 腳本的缺點(與 test runner 腳本相比)是,這種腳本編寫和部署起來更復雜。這是因為驅動程序必須執行以下任務:
原文轉自:http://www.anti-gravitydesign.com