2009年11月4日 星期三

Selenium Docs (3) - 測試設計考量與自訂功能

靜態頁面與動態頁面
存取靜態頁面上面的元件時,可以直接利用 id 定址,而動態頁面則因為每次載入的內容不同,element id 可能會跟著變動,因此必須依靠程式拿到頁面內容過濾後,找出要存取的元件。

AJAX 頁面測試
對於含有 AJAX 的頁面進行測試時,因為其資料是非同步更新,也不會造成頁面 reload,因此在存取元件時要特別小心。設定一個等待時間中止整個測試 thread 並不是一個好方法,因為無法時間是預期的。應該要時時去偵測想要存取的元素是否已經出現,會比較好。

UI Mapping
對於一些常用的網頁元件,例如登入欄位/按鈕,可以用 property 檔案來描述它們,避免直接在程式碼中定位(locator)它們,好處是:
  1. 避免這些常用元件散落在程式中。
  2. 承上,集中管理易於維護。
  3. 元件可以重新命名為較容易看懂的名稱,增加程式可讀性。
直接看原本的例子會更清楚。

Data Driven Testing
自動測試可以輔助手動測試,但當輸入資料有多筆時,要把資料跟程式內容分開,另外寫到一個檔案中。

資料庫驗證
可以直接利用程式存取資料庫的內容,作為測試的資料來源。例如做登入頁面測試時,可以拿資料庫已經註冊的帳號登入看看是否可以登入,或者拿未註冊成功的資料登入看看是否無法登入。

自訂功能
Selenium 允許自訂一些動作或定址方式,只要在他們的 object prototype 裡面加入自訂的 JavaScript 函數,並把函數依照規定命名。可以自訂的有:action、Accessors/Assertions、locator。