1.大量使用name、id、xpath等頁面元素。無論是功能修改、UI重構還是交互性改進都會影響到這些元素,這使得Selenium測試變得非常脆弱。
2.過于細節的頁面操作不容易體現出行為的意圖,一段時間之后就很難真正把握測試原有的目的了,這使得Selenium測試變得難于維護。
3.對具體數據取值的存在依賴,當個別數據不再合法的時候,測試就會失敗,但這樣的失敗并不能標識功能的缺失,這使得Selenium測試變得脆弱且難以維護。
不斷地添加新的測試,而極少地去重構、利用原有測試。Selenium的執行速度比較慢(相對單元測試),隨著測試逐漸的增多,運行時間會逐漸增加到不可忍受的程度。
Domain Based Web Testing具體來講,就是Page Object Pattern。
最終要的是Page Object、Test Data Driven、Navi、Much easier主要是通過對工具的封裝,對頁面的封裝,對URL的封裝,對整體各種測試類的封裝。
1.Page Object
主要是將可能遇到的頁面封裝,比如login頁面的username,password的封裝。
利用xpath或者dom對頁面元素的整體封裝:
def welcome_message
@driver.get_text ‘xpath=…’
end
對assert方法的封裝:
on LoginPage do
assert_equal ‘Welcome!’, welcome_message
login_as :name => ‘xxx’, :password => ‘xxx’
end
def visible?
@driver.is_text_present(…) && @driver.get_location == …
end
包括對于業務類斷言的封裝。
2.Test Data
主要是將測試數據更加集中的管理,我們可以利用maven,ant,testng等參數化的方式將數據管理起來。
3.Navi
和Test Data driven差不多,遇到可能變更的url進行參數化處理。
4.Much easier
是將綜合起來的各種封裝類,進行針對業務的封裝,入參、驗證結果做為輸入值進行更耦合的封裝。
做到最后一步的時候,將致力于將test case對應相關的業務線,精簡testcase,使自動化用例飛起來原文轉自:http://www.anti-gravitydesign.com