自動化測試設計簡介
我們在本章提供的信息,對自動化測試領域的新人和經驗豐富的老手都是有用的。本篇中描述常見的自動化測試類型, 還描述了可以增強您的自動化測試套件可維護性和擴展性的“設計模式”。還沒有使用這些技術的、有經驗的自動化測試工程師會對這些技術更加感興趣。
測試類型
您應該測試應用程序中的哪些部分?這取決于您的項目的各種影響因素:用戶的期望,時間期限,項目經理設置的優先事項等等。但是,一旦項目邊界定義完成,作為測試工程師,你必須做出要測試什么的決定。
為了對Web應用的測試類型進行分類,我們在這里創建了一些術語。這些術語并不意味著標準,但是這些概念對web應用測試來說非常典型。
● 測試靜態內容
靜態內容測試是簡單的測試,用于驗證靜態的、不變化的UI元素的存在性。例如:
→ 每個頁面都有其預期的頁面標題?這可以用來驗證鏈接指向一個預期的頁面。
→ 應用程序的主頁包含一個應該在頁面頂部的圖片嗎?
→ 網站的每一個頁面是否都包含一個頁腳區域來顯示公司的聯系方式,隱私政策,以及商標信息?
→ 每一頁的標題文本都使用的<h1>標簽嗎?每個頁面有正確的頭部文本內嗎?
您可能需要或也可能不需要對頁面內容進行自動化測試。如果您的網頁內容是不易受到影響手工對內容進行測試足夠了。如果,例如您的應用文件的位置被移動,內容測試非常有價值。
● 測試鏈接
Web站點的一個常見錯誤為的失效的鏈接或鏈接指向無效頁。鏈接測試涉及點各個鏈接和驗證預期的頁面是否存在。如果靜態鏈接不經常更改,手動測試足夠。但是,如果你的網頁設計師經常改變鏈接,或者文件不時被重定向,鏈接測試應該實現自動化。
● 功能測試
在您的應用程序中,需要測試應用的特定功能,需要一些類型的用戶輸入,并返回某種類型的結果。通常一個功能測試將涉及多個頁面,一個基于表單的輸入頁面,其中包含若干輸入字段、提交“和”取消“操作,以及一個或多個響應頁面。用戶輸入可以通過文本輸入域,復選框,下拉列表,或任何其他的瀏覽器所支持的輸入。
功能測試通常是需要自動化測試的復雜的測試類型,但也通常是重要的。典型的測試是登錄,注冊網站賬戶,用戶帳戶操作,帳戶設置變化,復雜的數據檢索操作等等。功能測試通常對應著您的應用程序的描述應用特性或設計的使用場景。
● 測試動態元素
通常一個網頁元素都有一個的標識符,用于地定位該網頁中的元素。通常情況下,標識符用HTML標記的’id’屬性或’name’屬性來實現。這些標識符可以是一個靜態的,即不變的、字符串常量。它們也可以是動態生產值,在每個頁面實例上都是變化的。例如,有些Web服務器可能在一個頁面實例上命名所顯示的文件為doc3861,并在其他頁面實力上顯示為doc6148,這取決于用戶在檢索的‘文檔’。驗證文件是否存在的測試腳本,可能無法找到不變的識別碼來定位該文件。通常情況下,具有變化的標識符的動態元素存在于基于用戶操作的結果頁面上,然而,顯然這取決于Web應用程序。
下面是一個例子。
<input id="addForm:_ID74:_ID75:0:_ID79:0: checkBox" type="checkbox" value="true" />
這是一個HTML標記的復選框,
其ID (addForm:_ID74:_ID75:0:_ID79:0:checkBox) 是一個動態生成的值。這個頁面下次被打開時,復選框的ID將可能是一個不同的值。
● Ajax的測試
Ajax是一種支持動態改變用戶界面元素的技術。頁面元素可以動態更改,但不需要瀏覽器重新載入頁面,如動畫,RSS源,其他實時數據更新等等。Ajax有不計其數的更新網頁上的元素的方法。但是了解AJAX的簡單的方式,可以這樣想,在Ajax驅動的應用程序中,數據可以從應用服務器檢索,然后顯示在頁面上,而不需重新加載整個頁面。只有一小部分的頁面,或者只有元素本身被重新加載。