== 1.为什么要测试自动化 == * 可以提高代码质量,缩短测试周期 * 自动化测试如果由开发人员编写,可以强化开发人员的质量意识,有利于开发人员成长。也是保证开发人员日常开发质量的有力武器 * 测试人员编写自动化测试,可以提高测试效率,可以将测试人员从大量的重复,枯燥的工作解脱出来。 * 传统手工测试依赖于人,容易出错,自动化测试与手工测试相比,能避免人为出错。 * 自动化测试脚本,是非常好的测试文档,与传统的手工测试用例相比,脚本记录了测试点,测试拓扑图,测试设计思路等。 == 2.选择使用什么样的工具 == 目前,支持web自动化测试的工具有Watir,Selenium,MaxQ,WebInject之所以选择Selenium,是因为:[[BR]] 1.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样[[BR]] 2.支持多种语言,Java,python,Ruby,Perl,C#等,公司主要使用开发语言为java,python也是使用最广泛的脚本语言之一,推广起来更容易[[BR]] 3.目前selenium使用最广泛,参考资料也更丰富一些。[[BR]] 这三个优势让selenium从众多测试工具中脱颖而出。 * 1.selenium + java 与 selenium + python 组合的比较 ''' 公司使用的开发语言为java,使用java作为自动化测试语言的话,没有任何门槛,学习成本较低,只要掌握selenium java api就可以了 但使用java的话,selenium依赖较多的第三方jar包,需要集成开发环境来管理,运行测试较不方便.在评论系统自动化测试中,我选择了java + selenium, 相关代码请去[7.附录]中下载附件2。 选择python的话,公司熟悉pythoh这门脚本语言的开发人员相对少很多,但python这门脚本语言较易学习,学习成本并不高。选择python,也需要掌握 selenium python api,但只要安装selenium 模块就可以了,运行测试很方便。在家居网论坛7.0自动化测试中,我选择了python + selenium, 相关代码请去[7.附录]中下载附件1. * 2.为什么选择selenium webdriver 而不是 selenium RC ''' selenium 提供了两种实现自动化测试的方法,分别是: selenium webdriver 和 selenium RC [[BR]] selenium RC由两部分组成: a,selenium Server: 主要控制浏览器行为,总的来说,selenium server由三部分组成:launcher,http proxy,selenium core 其中selenium core是在selenium server启动浏览器时,嵌入到浏览器中的。selenium core是一堆javascript函数的集合,当selenium rc通过网络与 selenium server通讯时,seleniumserver解析客户端请求为selenese command然后就会调用相应的js函数来控制浏览器操作。 b,selenium libraries:写测试案例时主要控制selenium server库,客户端提供了编程接口,允许你可以通过编程运行selenium命令, client libraries为每一种编程语言提供了selenium RC服务器通讯的编程接口。一个selenium客户端类库时间上是提供一套函数集合, 你可以通过运行你的测试程序来运行selenium command,类库中的每一个接口都是和selenium command对应的 客户端类库通过发送一个selenium command与selenium server通讯,从而使被测应用程序执行相应的操作。客户端类库收到selenium command命令返回结果, 并把结果返回给应用程序并赋值给相应的便利。 seleniumRC 存在一些缺点,不能处理 本机键盘和鼠标事件,同源策略XSS/HTTP,也不能处理弹出框,对话框(基本身份认证,自签名的证书和文件上传/下载) [[BR]] selenium webdriver弥补selenium RC的不足, [[BR]] WebDriver与之前Selenium的JS注入实现不同,直接利用了浏览器native support来操作浏览器。所以对于不同平台,不同的浏览器,必须依赖一个特定的浏览器的native component来实现把WebDriver API的调用转化为浏览器的native invoke。 [[BR]] == 3.安装firefox23.0.1, python2.7, selenium == * 1.安装firefox23.0.1 http://rdtrac.pc.com.cn/2011junit/wiki/webtest/install_ff * 2.安装python 下载地址:http://www.python.org/getit/, python最新版本是3.3,由于目前selenium只支持python2.7版本,建议下载2.7,然后安装 * 3.安装selenium http://rdtrac.pc.com.cn/2011junit/wiki/webtest/install_selenium * 4.安装selenium ide 插件 http://rdtrac.pc.com.cn/2011junit/wiki/webtest/install_ide == 4.论坛7.0如何实施自动化测试 == * 1.重构,设计基类,避免重复代码。按模块设计测试类 http://rdtrac.pc.com.cn/2011junit/wiki/webtest/base_module * 2.实施自动化过程中遇到的部分问题解决方法 * [wiki:webtest/question_1 广告弹出,挡住页面中的按钮] * [wiki:webtest/question_2 如何滚动页面] * [wiki:webtest/question_3 如何移动鼠标,并触发onmouse事件] * [wiki:webtest/question_4 页面中使用iframe,无法定位到无素的问题] * [wiki:webtest/question_5 如何生成测试报告] * 3.核心功能自动化测试 * 1.发帖功能 * 发普通帖 * 发投票帖 * 发活动帖 * 发悬赏帖 * 发HTML帖 * 2.版块页 * 一般功能 * 话题分类过滤 * 帖子类型过滤 * 按日基过滤 * 排序方式 * 新窗功能 * 发帖按钮 * 测试版块信息豆腐块  * 收藏版块 * 快速发帖 * 管理员功能 * 测试版块页管理模式 * 设置/取消版块管理员/换位 * 测试删除帖子 * 测试置顶/全站置顶/本版置顶/多版置顶 * 测试设置精华/取消精华 * 测试高亮/取消高亮 * 测试移动主题 * 测试提升主题 测试下沉主题 * 测试锁/解锁帖 * 2.帖子页 * 一般功能 * 测试电梯直达 * 测试用户信息栏的主题链接是否正常 * 测试登录状态回复本楼 * 测试登录状态快速回复 * 测试本帖链接 (在主帖) * 测试 修改 (在主帖) * 测试 删除 (在主帖) * 测试收藏帖子 * 管理员功能 * 测试管理员调积分 * 测试管理员锁IP * 测试管理员锁用户 * 测试管理员授勋 * 测试管理员签名档 * 清除用户发帖 * 修改联系方式 * 删除主题 * 设为盖楼 * 取消盖楼 * 测试评分 * 测试举报 * 4.如何在其它浏览器(IE,chrome)中进行测试 http://rdtrac.pc.com.cn/2011junit/wiki/webtest/other_browser * 5.为每一个bug添加自动化测试 [[BR]] == 5.selenium实施自动化测试过程中遇到的问题 == * 1.暂时还没有解决如何从本地选择图片通过flash上传到upc * 2.web应用页面大改版的时候,测试代码需要重新开发,有较高的维护成本。 == 6.selenium的缺点 == * 1.python的selenium模块还不够健壮稳定,一段测试代码会出现时而能通过,时而不能通过的情况,相信随着以后发布新的版本,应该会有所改善。 * 2.虽然号称支持firefox,ie,chrome,opera等众多浏览器。但除了firefox,api对其它浏览器支持较差,即使支持firefox最好, 也只支持旧一点的firefox版本,当前最新的是 firefox24,就不支持 * 3.需要图形环境的支持,因此很难集成到公司的linux服务器上 == 7.附录 == * 附件1,(selenium + python) 家居网7.0论坛测试脚本 [http://rdtrac.pc.com.cn/2011junit/attachment/wiki/webtest/house7.0_webtest.zip house7.0_webtest.zip] * 附件2,(selenium + java) 评论系统测试代码 [http://rdtrac.pc.com.cn/2011junit/attachment/wiki/webtest/cmt4_webtest.zip cmt4_webtest.zip]