Watir 全名是 Web Application Testing in Ruby ,沒錯!你看到 Ruby 了,他就是用 Ruby 開發的測試架構。Watir 有什麼好處呢?第一,他是用 Ruby 開發,寫 Test Case 也是用 Ruby,感覺就親切許多,第二,他是直接 launch IE,並透過操控 IE 來測試你的 Web Application,所以可以測出一些可能在瀏覽器上才會遇到的問題,第三,寫好 Test Case 後,一切都可以自動化執行,第四,不管你的 Web Application 是用什麼語言寫的,Watir 都可以支援,因為他是啟動 IE 來瀏覽。不過它也有些缺點,第一,目前只支援 Windows 平台,第二,目前只支援 IE 瀏覽器,第三,因為是靠 IE 操作,所以測試時間會較其他測試方法長,不過總是比人工測快許多。
寫 Watir 的 Test Case 很容易,只要懂得 Ruby 語言大概就沒什麼問題了,底下是個簡單的範例:
require 'watir'
# 開啟 IE 視窗
ie=Watir::IE.new
# 連結到 Google 首頁
ie.goto('http://www.google.com')
# 在搜尋欄位中自動填入關鍵字
ie.text_field(:name, 'q').set('syshen')
# 按下搜尋按鈕
ie.button(:name, 'btnG').click
# 驗證結果
if (ie.contains_text('syshen'))
puts('成功')
else
puts('失敗')
end
ie.close
這個範例是從 watir 網站抄來的,它會開啟一個 IE 視窗,連到 Google 首頁,並下一個關鍵字搜尋,最後再驗證搜尋的結果。
在 Watir 中,你可以透過 text_field、button、checkbox、radio、select_list 等等函式去控制各種 HTML component,我測試過比較複雜的 Case 都是可以 Work 的,但是前提是這些 Component 最好都要定義 name 或 id 等,讓 Watir 可以抓出來,如果沒有定義,就需要去算該 Component 的 index 值,會比較麻煩,也容易受到網頁更動的關係影響測試結果。
此外,你也可以搭配 Ruby 本身的 Unit Test Framework 來寫 Test Case ,讓所有測試全部自動化,每天只要看 report 就好,多麼美好!
Watir 強的地方還包括,他可以跟 Javascript 程式互動,他可以處理由 Javascript 所彈出的 alert 或者 confirm 視窗,也可以對特定 component 送出 event ,例如底下 HTML 是我的被測程式:
<html>
<body>
<div style="width:500px;height:500px;background-color:#00ff00" onmouseover="alert('test');" id="test" ></div>
</body>
</html>
這當你將滑鼠游標移動到該 DIV 區塊時,便會觸發 onmouseover 事件,所以為了模擬這校過,我們可以寫這樣的 Test Case:
ie.div(:id, 'test').fire_event('onmouseover')
這樣就達到相同的效果了。
Watir 功能相當強大,如果你覺得他跑太慢,可以用 set_fast_speed 來加速到二檔,不過我還是覺得很慢,此外,watir 開發者也有提到說,他們目前正在開發其他平台的版本,像是 Linux 以及 Mac 等,也正在開發 Firefox 以及 Safari 瀏覽器的支援,聽起來很棒,真希望他們早日完成。


