网页自动化测试的最佳实践
使用过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 ....)
- 将网站按页面来分类(适用于每个页面功能较独立的情况)。
- 将每个页面看做一个类, 这个类里面应该包含该页面各个元素,以及操作这些元素的方法。 如果页面中的一个功能需要在页面操作若干元素来完成,那么这也应该转化成一个方法定义在该页面的类里。
- 将一些公用的功能组织成公用的方法放在一个common类里, 例如登陆。
- 将类中的方法组织成用例,就成为自动化的Case。 这个case应该是类似自然语言的, 换句话说,如果一个不会写代码的人拿到类中的方法,他应该能组织这些方法写出一个case。
- 最重要的验证部分一定不要落下。
case管理部分 (testng / junit / rspec ...)
其实这一部分比较依赖工具,如果自己实现的话可能比较麻烦, 目前用的比较好的果断是testng,能够实现下面列的所有需求。其他的诸如rspec就比较弱了,很多功能不支持,可能主要受众是开发吧。
- 能够运行所有case,或者按需单独运行某些指定case。
- 能够记录case的运行结果,能够单独运行上次执行失败的case。
- 能够很好的组织case的输入以及预期结果。
- 测试报告(主要给老板看的, testng的报告经过美化后相当顶用,老板笑呵呵,以后分享美化方法)。
持续集成 (cruise control / jenkins)
- 自动化应该是自运行,可以每天定点执行。
- 可能会需要使用ant之类的定义具体运行步骤, 持续集成工具可能还不好操控吧。
- 保存测试结果和测试报告,严重的bug可以通过邮件等手段通知测试人员。
一些建议
- 统一元素的定位方式, 尽量都使用xpath或者css来定位。
- 一个case尽量就验证一个主要的点,case之间最好是相互独立的。
- 在每个Case运行前后(根据实际需要)清理缓存,恢复环境。
comments powered by