`
qiezi
  • 浏览: 498569 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Ruby + Mechanize + NetBeans 打造WEB自动化测试平台

    博客分类:
  • Ruby
阅读更多
一直以来,公司网站主要依赖于人工进行测试,不但无法保证用来监控网站功能异常,也无法进行有效的回归测试。部分频道有单元测试,但跨频道的就很难测试。

最近打算推动网站自动化测试,考察了一些开源、商业的自动化测试系统,发现功能都不是很完备,或者使用不太方便。比如我需要大量测试并行运行,需要对同一频道的每一台服务器进行绑定测试,需要模拟登录等,试用过的几个测试系统都无法完成,也没有精力测试更多了。自动化功能测试平台和单元测试框架有相似之处,所以思考如何借助单元测试框架来完成。

测试系统包括几个部分:
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。对于服务器绑定测试,需要分析出测试用例中用到的频道列表,对这些频道的所有服务器枚举出所有组合后,一一进行测试。分析过程是直接运行一下所有测试,记下所有请求,并得出测试和频道列表的映射,然后生成所有测试放入队列,并行多个进行来完成。

不知道是不是又造了一个轮子,还好工作量不是很大。正在完善中。
分享到:
评论

相关推荐

    Ruby-Mechanize一个让自动化web交互变得容易的ruby库

    这个库使得开发者能够模拟人类在浏览器上的行为,对于Web爬虫和自动化测试尤其有用。让我们深入了解一下Mechanize库的核心功能和使用方法。 首先,Mechanize库提供了一个友好的API,可以方便地打开URL、导航页面和...

    ruby mechanize 2.7.2 gem 包

    ruby mechanize 2.7.2 gem 包

    ruby mechanize安装需要的gem包

    Ruby Mechanize 是一个非常...总之,Ruby Mechanize 是一个强大且功能丰富的库,用于 web 自动化和爬虫。正确安装其依赖的 gem 包是使用它的前提,而理解如何管理 Gem 和处理潜在问题对于顺利使用 Mechanize 至关重要。

    Mechanize是一个ruby库,可以轻松实现自动的Web交互。-Ruby开发

    Mechanize¶↑docs.seattlerb.org/mechanize github.com/sparklemotion/mechanize描述¶↑Mechanize库用于自动与网站交互。 Mechanize自动存储和发送coo Mechanize¶↑docs.seattlerb.org/mechanize github....

    mechanize:Mechanize是一个ruby库,可以轻松实现自动的Web交互

    机械化描述Mechanize库用于自动与网站进行交互。 Mechanize自动存储和发送Cookie,遵循重定向,并可以遵循链接和提交表单。 可以填写和提交表单字段。 机械化还可以将您曾经访问过的站点作为历史记录进行跟踪。依存...

    Ruby中的Mechanize的使用教程

    Ruby中实现网页抓取,一般用的是mechanize,使用非常简单。 安装 代码如下: sudo gem install mechanize 抓取网页 代码如下: require ‘rubygems’ require ‘mechanize’ agent = Mechanize.new page = agent.get...

    mechanize:Common Lisp 中的自动化 Web 交互

    总的来说,"mechanize: Common Lisp 中的自动化 Web 交互" 提供了一个强大的工具,使开发者能够利用 Lisp 的强大功能进行 Web 测试和数据抓取,同时享受 Lisp 语言带来的独特编程体验。通过深入理解 Lisp 和 ...

    Mechanize相关资料

    总之,Mechanize是Python Web爬虫和自动化测试领域中不可或缺的工具之一,其强大的功能和易用性使其在处理网站交互任务时具有很高的效率。如果你想要提升这方面的能力,这个“Mechanize相关资料”压缩包将是一份宝贵...

    banana-nagios:Nagios的系统测试插件,带有Cucumber + Webrat + Mechanize + Net :: SSH

    Cucumber-nagios允许您编写Web应用程序的高级行为测试,并将结果插入Nagios。 正如布拉德利·泰勒(Bradley Taylor): “Instead of writing boring monitoring plugins from scratch, you can now do behavior ...

    mechanize-2.7.3.gem

    ruby mechanize包,mechanize-2.7.3.gem

    Robot Framework 源代码阅读笔记 之 一 - CSDN博客

    Appium是一个用于移动端UI自动化测试的工具,它支持iOS和Android平台上的原生、移动Web和混合应用。 除了测试工具,文章还提及了性能测试相关的工具。Locust是一个基于事件的性能测试工具,它使用Python的协程来...

    mechanize-源码.rar

    在Python的世界里,mechanize库是一个强大的工具,专为模拟浏览器行为而设计,尤其适用于自动化Web浏览和数据抓取任务。"mechanize-源码.rar"这个压缩包文件包含了mechanize库的源代码,这对于想要深入了解其工作...

    WWW-Mechanize-Chrome:自动化Chrome浏览器

    **WWW-Mechanize-Chrome** 是一个Perl模块,它扩展了流行的WWW-Mechanize库,使其能够模拟用户在Google Chrome浏览器中...通过学习和掌握这个库,你可以提升你的Web自动化测试和数据抓取能力,节省大量手动操作的时间。

    multi-mechanize-master

    `mechanize`库是一个模拟浏览器行为的库,它可以帮助开发者编写自动化脚本,用于浏览网页、填写表单、点击链接等任务,非常适合进行网页抓取和数据提取。在这个"multi-mechanize-master"项目中,重点是将`mechanize`...

    Python库 | mechanize-0.3.2-py2-none-any.whl

    2. **自动化测试**:在测试web应用程序时,mechanize可以帮助自动化点击、填写表单等操作,提高测试效率。 3. **数据采集**:对于需要登录才能访问或者动态加载的数据,mechanize可以自动处理登录流程并获取数据,...

    Ruby中使用mechanize批量下载校内网相册照片

    总结来说,这段代码展示了如何使用Ruby和Mechanize库来自动化登录网站、解析网页、提取数据以及下载资源,这对于需要类似功能的场景非常有用,比如爬虫或自动化数据抓取任务。同时,它也提醒我们在处理不同网站时...

    python mechanize 0.2.5

    Python Mechanize是一个强大的库,主要用于自动化Web浏览,它在Python编程中扮演着重要角色,尤其在Web爬虫和网页测试领域。Mechanize库模仿浏览器的行为,允许开发者以编程方式与网页交互,如填写表单、点击链接、...

    使用Perl进行Web / HTTP自动化

    “QA”(质量保证)和“Dev”(开发)标签提示我们,这个话题可能面向的是软件测试工程师和开发者,他们需要编写自动化脚本来测试Web应用的性能和功能。此外,“text”标签可能指的是处理纯文本数据,这在Perl中非常...

    ga-p3:大会项目#3

    用于自动化的 Javascript + Mechanize.js(目前未实现) Ruby 的 Every gem 用于调度 用于发送文本通知的 Twilio 团队成员: 科林Craft.io(@colincraft) 布伦特爸爸 (@brent1x) 乔治·纳瓦斯 (@gnavas) 万一...

Global site tag (gtag.js) - Google Analytics