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