Selenium2自动化测试实战序言
记得很久之前接触自动化的时候看了一本关于某早期自动化测试工具的书,书名已经记不得了,内容却一直印象深刻。因为那本书根本就是把官方文档有选择性的翻译一遍,对于实际应用来说其作用几乎是零。因此从那时候起我就一直认为,对工具的介绍应该不仅仅停留在理论和了解的程度,如果没有实战,那么我们之于工具无非就是叶公好龙,一直远观,无法赏玩。
很欣慰的是虫师这本Selenium2自动化测试实战--基于Python语言并没有停留在夸夸其谈的表面,我仔细的研究了书中的代码和示例,显然很大一部分都是他在日常工作中勤奋总结而得出来的一手范例,对于技术书籍来说这是难能可贵的。
对于一本介绍自动化测试的书来说,我们其实不缺理论。国外的很多同行都不停的在传经布道,他们的结论其实很简单,自动化测试是好东西,对于提升软件质量来说,自动化测试带给我们生产力的解放收益远远要大于成本。结论我们都知道,工具我们也清楚,无非就是单元测试xunit,rspec之类,bdd测试用cucumber等等,ui层面的aut用selenium。这些工具我们都会用,而且也许用的还不错,不过为什么我们的自动化测试除了耗时费力之外根本就看不出有什么效果?
答案其实很简单,我们自以为用对了,但实际上也许我们才刚上路,甚至跟最佳实践背道而驰。这就像是拿ipad当砧板,用宰牛刀杀鸡一样,路子不对,只能越练越野,直到走火入魔。
这本书中其实提到了很多不错的实践,路子正宗,从者自然不会误入歧途,这也是我推荐他的另外一个理由。
在看本书前几章的时候,我一直不断的想起当年初出茅庐入行时候所遇到的初学者困局。我很想学一个东西,一门技术,但是到底应该从哪里开始?
万事开头难,没有师傅领进门,在不停的挫败和各种不同信息的正反面轰炸下,我们很容易举白旗放弃。
试想一下这样的场景吧:假如你是一个初学者,你从某种渠道得知你selenium是代表未来测试趋势的测试工具,是提升生产力的重要手段,是提升自己收入水平的一个不错的投资,你下定决心大干一场,准备好好的学习一下这个东西。然后你开始兴冲冲的去网络上搜索资料,然后你开始困惑,因为selenium有2个版本,1和2,并且selenium1到现在都没有完全废弃,是学1还是学2,1很经典,2很前沿,你开始由于;然后你继续深挖,你发现如果学selenium2你会遇到1个叫做webdriver的东西,那是啥?然而如果要学selenium1的话你将一直不停的看到一个叫做selelniumRC的字眼,这又是什么?现在的你也许已经有一些动摇了吧,不过噩梦才刚刚开始。你也许会遇到一些靠谱的哥们,他们会先建议你学习一门语言,因为要用selenium基本上就意味着你应该学会编程。但是selenium支持太多编程语言,ruby/python/java/javascript/objective-c/php,到底应该从哪一门语言入手,你开始陷入经典的语言之争的泥沼,你悲哀的发现自己花了很多时间去潜心研究,但最终只是模模糊糊知道了selenium在远方,面前是一堆分叉路口,每种语言看起来都不错,每个分叉路口都可以到达终点,但你就是不知道该怎样迈出第一步。这便是选择的成本,选择是有风险的,选的对事半功倍,选的不对只能半途而废。
对于很多初学者来说,上面的困局应该都是存在的。花了很对精力和时间,但最终却发现一切都是徒劳,做了很多功课,但真正该做的事情却未曾开始。
好在这本书能够很好的解决这个困局。你不需要选择,这本书描述的就是selenium2,代表了主流代表了未来,用的语言是python,全世界都在用,代表了简单高效,代表了经典和优雅。很有意思的是python自身的哲学里也认为最好只用一种方法来做一件事(你可以打开python解释器,然后import this试试),免去选择的苦恼。你应该把精力放在更有意义的事情上,比如多写几个自动化测试用例,而不是纠结于各种选择徘徊不前。
然后便是初学者困局里更加常见的一个问题,如何去搭建环境。我遇到过不少人倒在这里,而且前赴后继,无限循环。如果你有这本书的话那这些问题应该不是核心问题,跟着虫师描述的步骤一步步来吧,循序渐进而又节奏轻快。
搭建好了环境,写好冒烟脚本之后敢问路在何方又是初学者常见的问题。因为selenium没有官方中文文档,啃英文实在不是一件愉快的事情。也许你好不容易看懂了解释,却发现官方的示例离自己身处的环境相差太多,官方的例子一直是google搜索,发gmail,而你却悲哀的发现在根本就没有gmail这个网站。这本书不仅仅非常详尽的介绍了selenium的api,而且给出了非常多可以运行的本土化的示例,这对初学者和其他程度使用者来说都是福音,有些例子很棒,你试过就知道。
其实试完webdriver的各种api,你应该已经算入门了。入门了之后便是更多的困惑,比如如何去写测试用例,如何做基于数据的用例设计,如何分布式执行用例,如何多线程执行用例等,这些本书都有答案。
最后便是bdd和ci,说实话如果一本介绍自动化测试的书没有这两项内容的话都是不完整的。如果自动化是彩虹,那么ci便是风雨,不经历风雨怎会见彩虹。没有ci,自动化其实找不到太多的应用场景,没有自动化,ci更是无从说起了。尽管本书的重点不在ci,但本书的终点在ci,就像是指出了宿命的依归,独具匠心。
还记得上次跟虫师见面时候的情景,应该已经有2年多了。时过境迁,曾经我们上班的地点就在隔壁,如今发现时间逝去,很多东西都已改变。不过难能可贵的是虫师对测试技术的追求一直不曾更改,一直笔耕不辍,这本书其实也算是水到渠成的结果了。勿忘初心,坚持自己,最后希望这本书能多帮助一些人,我想这应该也是虫师的初衷吧。
Selenium2自动化测试实战序言的更多相关文章
- 《Selenium2自动化测试实战--基于Python语言》 --即将面市
发展历程: <selenium_webdriver(python)第一版> 将本博客中的这个系列整理为pdf文档,免费. <selenium_webdriver(python)第 ...
- selenium2自动化测试实战--基于Python语言
自动化测试基础 一. 软件测试分类 1.1 根据项目流程阶段划分软件测试 1.1.1 单元测试 单元测试(或模块测试)是对程序中的单个子程序或具有独立功能的代码段进行测试的过程. 1.1.2 集成测试 ...
- Selenium2自动化测试实战(基于Python语言)— 编写第一个自动化脚本
实现效果:执行脚本后启动Firefox浏览器后进入百度主页,输入“Selenium”后,单击搜索按钮,最后关闭浏览器的过程(默认安装了Firefox浏览器),如下图所示: 脚本内容如下: # -*- ...
- Selenium2+Python自动化测试实战
本人在网上查找了很多做自动化的教程和实例,偶然的一个机会接触到了selenium,觉得非常好用.后来就在网上查阅各种selenium的教程,但是网上的东西真的是太多了,以至于很多东西参考完后无法系统的 ...
- selenium2自动化测试学习笔记(一)
从这周开始学习自动化测试,采用selenium2,目标是在本月学习到appium,并测试公司的真实APP项目. 系统环境:win10 语言:python3.6.4 工具:selenium2 IDE:p ...
- 关于《Selenium3自动化测试实战--基于python语言》
2016年1月,机缘巧合下我出版了<Selenium2自动化测试实战--基于python语言>这本书,当时写书的原因是,大部分讲Selenium的书并不讲编程语言和单元测试框,如果想在项目 ...
- 《selenium2 Java 自动化测试实战(第二版)》 更新2016.5.3
java 版来了!! 本文档在<selenium2 Python 自动化测试实战>的基础上,将代码与实例替换为java ,当然,部分章节有变更.这主要更语言本身的特点有关.集合和java下 ...
- selenium2 Webdriver + Java 自动化测试实战和完全教程
selenium2 Webdriver + Java 自动化测试实战和完全教程一.快速开始 博客分类: Selenium-webdriverselenium webdriver 学习selenium ...
- selenium2 python自动化测试实战(回归测试)
selenium2 python自动化测试实战 最近接手商城的项目,针对后台测试,功能比较简单,但是流程比较繁多,涉及到前后台的交叉测试.在对整个项目进行第一轮测试完成之后,考虑以后回归测试任务比较重 ...
随机推荐
- 使用Feign时报错Service id not legal hostname
报错Service id not legal hostname的原因是服务名称不能带有下划线,可以使用中划线
- ios Url Encode
//ios Url Encode //有时候在请求的参数里里特殊符号比如“+”等.而如果没有encode的话那么传过去的还是” ”,面实际上是%2B. -(NSString*)UrlValueEnco ...
- Java和Javac的使用时总提示找不到类模块的解决方案
1.场景: 争对网上的很多文章中javac编译与java运行的文章,有很多不明确的地方,使得在合适时发现很多坑.这里给大家作下简介. 2.Javac的使用注意: javac -d ./ ./Insta ...
- Spring的PropertyPlaceholderConfigurer事例应用
在开发的过程中,经常发现一些类似:${log4j.level}之类的内容,后来才知道原因.下面解释一下: 1.PropertyPlaceholderConfigurer是个bean工厂后置处理器的实现 ...
- JAVA_SE基础——26.[深入解析]局部变量与成员变量的差别
黑马程序猿入学blog ... 假设这章节非常难懂的话应该返回去先看 JAVA_SE基础--10.变量的作用域 定义的位置上差别: 1. 成员变量是定义在方法之外,类之内的. 2. 局部变量是定义在 ...
- 自己定义构造方法和description方法
本文文件夹 知识回想 一.自己定义构造方法 二.description方法 说明:这个Objective-C专题,是学习iOS开发的前奏,也为了让有面向对象语言开发经验的程序猿,可以高速上手Objec ...
- MySQL 源码系列:1:窥探篇
1:下载源码 http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.25.tar.gz http://dev.mysql.com/downloads/m ...
- 用Power BI解读幸福星球指数
"你幸福吗?"已经成了网络热词,简单的问句背后蕴含着一个普通中国人对于所处时代的政治.经济.自然环境等方方面面的感受和体会.引发当代中国人对幸福的深入思考.实际上,国际上对幸福的讨 ...
- 单链表Java实现
近期在复习基本数据结构,本文是单链表的Java实现,包含对单链表的实现插入删除查找遍历等.最后还实现了单链表的逆置. 实现了多项式相加,多项式相乘. 原文章及完整源码在这里 http://binhua ...
- Yii2框架bootstrap样式理解
Yii2框架默认採用了bootstrap作为CSS风格,各种视图类组件都如此.之前一直採用默认风格,并在必要的时候加入或者改动一下class来达到目的.但在改版Yii1.1的orange项目时.发现之 ...