我们做自动化测试可能遇到的问题:
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,使自动化用例飞起来。