一直以来,公司网站主要依赖于人工进行测试,不但无法保证用来监控网站功能异常,也无法进行有效的回归测试。部分频道有单元测试,但跨频道的就很难测试。
最近打算推动网站自动化测试,考察了一些开源、商业的自动化测试系统,发现功能都不是很完备,或者使用不太方便。比如我需要大量测试并行运行,需要对同一频道的每一台服务器进行绑定测试,需要模拟登录等,试用过的几个测试系统都无法完成,也没有精力测试更多了。自动化功能测试平台和单元测试框架有相似之处,所以思考如何借助单元测试框架来完成。
测试系统包括几个部分:
1、用例输入、调试系统
2、用例管理系统
3、与上线系统结合(公司的上线系统管理着每个频道的ip列表,上线时自动把代码同步到这些服务器上)
4、测试用例并行运行器
5、结果收集及反馈、报警
首先考虑的是测试输入系统,最好有个较为友好的界面,由于对测试尚不能清晰定义,所以先考虑使用脚本语言来做测试用例,待以后测试模式固定以后,再用图形界面替换掉。在PHP/Perl/Ruby/Python之间进行比较后,还是选择了Ruby。PHP优势较大,公司WEB开发以PHP为主,Perl/Ruby/Python这几门语言在公司内使用都不太广泛,Perl比较晦涩,Python的代码对齐方工又增加了非开发人员的难度,Ruby代码简练,感觉更容易培训一些。个人爱好偏向Ruby,PHP一直不喜欢,目前主要是快速做出原原型,所以自私地选择了Ruby。脚本编辑器要能够快速输入、修改、调试,经过几天的试用最终选择了NetBeans。
测试脚本暂定为rspec,这样看起来更偏向业务一些,废话少。HTTP请求的测试,考查过几个:
1、Net::HTTP,cookie管理要自己来做了
2、curb,curl的ruby库,有cookie支持
3、watir,操纵浏览器,不适合后台大量测试并行运行,可考虑用在页面展示的测试上
4、Mechanize,对它的功能较为满意,最后选定了它
用例管理系统暂时使用ruby文件,测试用例编写人员提交测试用例文件到svn,测试主管审核后合并到测试系统。可以在NetBeans中直接运行测试用例。
测试运行系统,自己编写了一个并行Runner。对于服务器绑定测试,需要分析出测试用例中用到的频道列表,对这些频道的所有服务器枚举出所有组合后,一一进行测试。分析过程是直接运行一下所有测试,记下所有请求,并得出测试和频道列表的映射,然后生成所有测试放入队列,并行多个进行来完成。
不知道是不是又造了一个轮子,还好工作量不是很大。正在完善中。
分享到:
相关推荐
Mechanize 一个让自动化web交互变得容易的ruby库
ruby mechanize 2.7.2 gem 包
ruby mechanize安装需要的gem包,安装需要的本地gem文件
Mechanize¶↑docs.seattlerb.org/mechanize github.com/sparklemotion/mechanize描述¶↑Mechanize库用于自动与网站交互。 Mechanize自动存储和发送coo Mechanize¶↑docs.seattlerb.org/mechanize github....
机械化描述Mechanize库用于自动与网站进行交互。 Mechanize自动存储和发送Cookie,遵循重定向,并可以遵循链接和提交表单。 可以填写和提交表单字段。 机械化还可以将您曾经访问过的站点作为历史记录进行跟踪。依存...
Ruby中实现网页抓取,一般用的是mechanize,使用非常简单。 安装 代码如下: sudo gem install mechanize 抓取网页 代码如下: require ‘rubygems’ require ‘mechanize’ agent = Mechanize.new page = agent.get...
Cucumber-nagios允许您编写Web应用程序的高级行为测试,并将结果插入Nagios。 正如布拉德利·泰勒(Bradley Taylor): “Instead of writing boring monitoring plugins from scratch, you can now do behavior ...
ruby mechanize包,mechanize-2.7.3.gem
Perl 的未完成的 Common Lisp 版本。
gmah(给我一个家!) 用Ruby + Mechanize构建的ZonaProp网页抓取工具:)
WWW-Mechanize-Chrome:自动化Chrome浏览器
Mechanize相关资料
multi-mechanize-master
用于自动化的 Javascript + Mechanize.js(目前未实现) Ruby 的 Every gem 用于调度 用于发送文本通知的 Twilio 团队成员: 科林Craft.io(@colincraft) 布伦特爸爸 (@brent1x) 乔治·纳瓦斯 (@gnavas) 万一...
ruby版本:ruby1.8.7 or ruby1.9.2 操作系统:windows 7 Linux下没有试过~不过应该也可以的: 代码如下: #encoding: utf-8 require ‘rubygems’ require ‘mechanize’ class Renren def initialize(e,p) @...
Mechanize自动存储和发送Cookie,跟随重定向,跟随链接并提交表单。 可以填写和提交表单字段。 机械化还可以将您曾经访问过的站点作为历史记录进行跟踪。入门在根文件夹中,您可以运行get_page示例: node examples...
用python成为顶级黑客,第三方库必备,mechanize网络爬虫
名称WWW :: Mechanize :: PhantomJS-自动运行PhantomJS浏览器概要use WWW::Mechanize::PhantomJS;my $mech = WWW::Mechanize::PhantomJS->new();$mech->get('http://google.com');$mech->eval_in_page('alert(...
mechanize是对urllib2的部分功能的替换,能够更好的模拟浏览器行为,在web访问控制方面做得更全面。结合beautifulsoup和re模块,可以有效的解析web页面,我比较喜欢这种方法。 下面主要总结了使用mechanize模拟...
mechanize-源码.rar