为了提高自己的工作效率,我曾经对Watir进行了系统性的学习,比起学习C++, Java等始终不得门,Watir还是学进去了,能够完整搭建出一个自己很容易理解的自动化架构。

之后我想继续在自动化测试方明提高自己,就把Ruby语言从头到尾走了一遍,还是有些收获的,虽然现在脑海里面也记不起来多少东西,但是就自动化测试这一方面来说,还是很有自信的。

Watir,Ruby能够很大程度上提高测试效率,这点是毋庸置疑的,印象深刻的是,以下场景下,Watir和Ruby帮了我的忙。

场景1:重现一些难以重现的Bug

公司产品有一个功能,用户可以在google地图上画一条路线,然后可以在这条路线上跑步健身,从而进行一些统计工作,用户还可以保存这条路线,分享给别人。

这个功能后来出现了一个大bug:当这种路线分享的多了,点击访问的就多了,达到一定程度之后,服务器将会崩溃。现在,如何重现它?

如果是手动点击,可能要先访问10000条不同的路线,然后Bug可能会出现,这对于测试人员来说,这项任务非常艰巨。

但是通过Watir脚本就很简单了:

1) 通过Watir操作IE/Firefox/Chrome,复制创建10000条Route;

2) 遍历当前页面所有的Route链接,直到Route内容完全加载之后,点击分页功能的下标, 再遍历下一个页面所有的Route链接,持续下去,每次成功访问,返回一个1,失败返回0;

3) 直到连续多次返回0,就停止脚步的执行,Bug页面将会重现。

这个场景完整脚本的书写不会超过1个小时,执行倒是要花费多个小时。

场景2:

为用户插入私有数据。

公司产品发现了一个Bug,数据库某个字段默认为0,有些用户通过页面操作设置为1了,现在需要把所有为0的字段都改为1,但是只能通过页面来修改,不能通过数据库来修改。而想到达该页面,需要登录,但是客户的私有信息,测试开发人员是无法获取的。

1) 开发人员沟通,最后寻找了一个解决方案,就是通过浏览器,访问加密的URL,从而把用户数据传输到数据库。

2) 把几千条URL依次输入浏览器,点击回车,等待正确响应,然后再下一条。

然后对于手工操作来说,也许真的很简单,但是也会耗费一个小时以上,而且很容易出现失误的情况。

通过Watir脚本,只需要一个读取文件函数(链接存在文件里面),一个goto函数,一个watir_until函数,一个返回值,事情就解决了,可以一劳永逸。

这些场景在测试工作中是非常多的,这里就不再罗列了。

我就罗列一个最近工作中常做的事:造数据!

现在我要给数据库中插入1W条网络图片路径,数据库的字段之间还有依赖关系,当系统启动的时候,这些网络路径的图片需要正常访问。

如果通过手工,给数据库中插入那么多数据,基本上是不可能完成的任务。

但是通过脚本就教简单了。

1) 遍历某个大型图片展示网站,通过ie.links.collect可以把链接存储下来;

2) 当进入某个链接页面之后,就需要把所有的图片资源的网络访问路径爬下来,这个可以通过ie.images.collect来简单实现,把这些图片资源网络路径存储起来;

3) 进入SQL,找到我们需要插入数据的表,通过SQL脚本自动生成功能,就可以获取一片SQL Insert脚本;

4) 对这些脚本进行定制,生成1W条相应的脚本,每条脚本指向的图片URL都不一样;

5) 新建SQL查询,把文档中保存的脚本放入其中,执行即可。

Watir 能够为你做什么?的更多相关文章

  1. Watir: 很久以前,对Watir开始学习时候做的笔记

    1). buttons Xpath 1)Button properties browser.button(:xpath,"//input[@id='b2']/").name bro ...

  2. python自动化测试框架学习

    今天发现python有多个框架可以用于自动化测试方面,下面整理了下splinter和urllib2框架,对于pywinauto框架和ruby框架先记录下以后需要用到再学习. python有个splin ...

  3. Watir: 右键点击实例(某些如果应用AutoIt来做会更加简单高效)

    require 'watir' module Watir class Element def top_edge assert_exists assert_enabled ole_object.getB ...

  4. 从手工测试转型web自动化测试继而转型成专门做自动化测试的学习路线。

    在开始之前先自学两个工具商业web自动化测试工具请自学QTP:QTP的学习可以跳过,我是跳过了的.开源web自动化测试工具请自学Selenium:我当年是先学watir(耗时1周),再学seleniu ...

  5. 爱在watir(1)----一切从搭讪开始

    Tom和Coco是有名的加班狂人.Tom加班改bug,Coco加班回归bug. 两人经常加班到很晚,Tom是男孩子,很自然的担负起护送Coco的任务.他打车先送Coco回去,然后自己回家.不过Tom和 ...

  6. Windows环境搭建Web自动化测试框架Watir

    Windows环境搭建Web自动化测试框架Watir 一.前言     Web自动化测试一直是一个比较迫切的问题,对于现在web开发的敏捷开发,却没有相对应的敏捷测试,故开此主题,一边研究,一边将We ...

  7. 在做自动化测试之前你需要知道的,转自:http://www.cnblogs.com/fnng/p/3653793.html

    什么是自动化测? 做测试好几年了,真正学习和实践自动化测试一年,自我感觉这一个年中收获许多.一直想动笔写一篇文章分享自动化测试实践中的一些经验.终于决定花点时间来做这件事儿. 首先理清自动化测试的概念 ...

  8. Web自动化测试框架Watir(基于Ruby) - 第1章 Windows下安装与部署

    一.前言 Web自动化测试一直是一个比较迫切的问题,对于现在web开发的敏捷开发,却没有相对应的敏捷测试,故开此主题,一边研究,一边将Web自动化测试应用于工作中,进而形成能够独立成章的博文,希望能够 ...

  9. web自动化测试:watir+minitest(一)

    基本介绍: 本课程的测试环境和工具为:win7+ruby+watir+minitest Watir 全称是"Web Application Testing in Ruby".它是一 ...

随机推荐

  1. Chrome 浏览器安装Vue插件方法 (十分详细)

    博主最近在研究Vue,无奈新手想安装Chrome的Vue插件,整理下安装流程: 1.首先去github下载vue.zip文件插件(还有npm安装方法这里就不介绍了自行百度)下载地址:https://g ...

  2. 【hibernate】报错:org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.DataException: could not execute statement

    报错如下: org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a ...

  3. Go -- PipleLine

    1.pipeline的产生 从一个现象说起,有一家咖啡吧生意特别好,每天来的客人络绎不绝,客人A来到柜台,客人B紧随其后,客人C排在客人B后面,客人D排在客人C后面,客人E排在客人D后面,一直排到店面 ...

  4. Go -- 漫谈IM通信架构

    前前后后做的IM和推送系统已经有好几个了,一直都想好好总结下,因此就有了这篇文章.在我刚学编程的那会儿,觉得网络通信是一个很牛逼和门槛很高的一门技术,但是随着开源技术的发展和互联网知识的共享,现在要写 ...

  5. Python机器学习--回归

    线性回归 # -*- coding: utf-8 -*- """ Created on Wed Aug 30 19:55:37 2017 @author: Adminis ...

  6. Java 实现 淘宝秒杀 聚划算 自己主动提醒 源代码

    说明 本实例可以监控聚划算的抢购button,在聚划算整点聚的时间到达时自己主动弹开页面(URL自定义). 能够自己定义监控持续分钟数,同一时候还能够通过多线程加快刷新速度. 源代码 package ...

  7. BeagleBone Black Industrial 杂谈

    前言 原创文章,转载引用务必注明链接.水平有限一己拙见,欢迎指正. 本文使用markdown写成,为获得更好的阅读体验,推荐访问我的博客原文: ​ 初版BeagleBone Black(Rev A4) ...

  8. opencms 安装出现以下的问题:Your 'max_allowed_packet' variable is set to less than 16777216 Byte (16MB).

    一.问题 在安装opencms是会出现例如以下错误: MySQL system variable 'max_allowed_packet' is set to 1048576 Byte (1MB). ...

  9. java栈、堆

    一.栈.堆 几个小概念 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的 ...

  10. vs2010配置VL_FEAT库

    VL_FEAT库是计算机视觉中的一个开源库,支持C/C++,Matlab,可以在http://www.vlfeat.org/下载. 本文主要讲一下VS2010中如何配置vl_feat库(算是对原文的一 ...