Tingting Dong

Tingting Dong

QA,抠脚女汉子,热爱一切美好事物的2货处女座...

LinkedIn

网页自动化测试的最佳实践

使用过selenium + testng, 以及capybara+rspec,个人感觉工具是次要的,重要的是自动化的框架。 总结一下自己项目的自动化测试框架:

文字case

自动化开始前应该有一定量的文字case, 这些case类似于测试人员写的普通测试用例,但又不尽相同。个人感觉case的设计及组织才是最难的部分,一直没能做的很好。


title : 普通测试用例(以百度搜索为例)
steps :
    1.  打开百度搜索首页
    2.  搜索“白菜”
verify :
        验证搜索结果正确

title : 自动化测试用例(以百度搜索为例)
steps :
    1.  打开百度搜索首页www.baidu.com
    2.  输入“白菜”,点击按钮“百度一下”
verify :
    2.  正确跳转到搜索结果页面
        一页显示十条搜索结果
        所有的“白菜”高亮显示

区别是测试人员在执行普通测试用例时,是用自己的理解来执行,测试及验证的方法具有多样性。 但是自动化用例是用电脑来执行的,必须明确告诉他如何操作,验证什么,如何验证。


以下部分需要代码实现:

自动化部分(selenium / capybara / watir ....)

  1. 将网站按页面来分类(适用于每个页面功能较独立的情况)。
  2. 将每个页面看做一个类, 这个类里面应该包含该页面各个元素,以及操作这些元素的方法。 如果页面中的一个功能需要在页面操作若干元素来完成,那么这也应该转化成一个方法定义在该页面的类里。
  3. 将一些公用的功能组织成公用的方法放在一个common类里, 例如登陆。
  4. 将类中的方法组织成用例,就成为自动化的Case。 这个case应该是类似自然语言的, 换句话说,如果一个不会写代码的人拿到类中的方法,他应该能组织这些方法写出一个case。
  5. 最重要的验证部分一定不要落下。

case管理部分 (testng / junit / rspec ...)

其实这一部分比较依赖工具,如果自己实现的话可能比较麻烦, 目前用的比较好的果断是testng,能够实现下面列的所有需求。其他的诸如rspec就比较弱了,很多功能不支持,可能主要受众是开发吧。

  1. 能够运行所有case,或者按需单独运行某些指定case。
  2. 能够记录case的运行结果,能够单独运行上次执行失败的case。
  3. 能够很好的组织case的输入以及预期结果。
  4. 测试报告(主要给老板看的, testng的报告经过美化后相当顶用,老板笑呵呵,以后分享美化方法)。

持续集成 (cruise control / jenkins)

  1. 自动化应该是自运行,可以每天定点执行。
  2. 可能会需要使用ant之类的定义具体运行步骤, 持续集成工具可能还不好操控吧。
  3. 保存测试结果和测试报告,严重的bug可以通过邮件等手段通知测试人员。

一些建议

  1. 统一元素的定位方式, 尽量都使用xpath或者css来定位。
  2. 一个case尽量就验证一个主要的点,case之间最好是相互独立的。
  3. 在每个Case运行前后(根据实际需要)清理缓存,恢复环境。


comments powered by