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自动化测试实战 最近接手商城的项目,针对后台测试,功能比较简单,但是流程比较繁多,涉及到前后台的交叉测试.在对整个项目进行第一轮测试完成之后,考虑以后回归测试任务比较重 ...
随机推荐
- ArcEngine中COM对象与其基础RCW分开后就不能再使用
操作ArcEngine中的COM对象时,为了减少内存的增长,用掉的对象要手动释放常用的方法是ReleaseComObject System.Runtime.InteropServices.Marsha ...
- LintCode: Convert Sorted Array to Binary Search Tree With Minimal Height
C++ /** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; ...
- MVC 之 解决MVC中使用BundleConfig.RegisterBundles引用Css及js文件发布后的丢失
在MVC3中我们这样引用资源文件: <link href="@Url.Content("~/Content/Site.css")" rel="s ...
- 微信小程序 - 上传图片组件
2019-01-08 更新至1.1:修复了一些问题 2019-03-14 全面更新,推荐:https://www.cnblogs.com/cisum/p/10533559.html 使用了es8的as ...
- SpringMVC学习笔记六:使用Formatter解析或格式化数据
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6832903.html Converter可以将一种类型转换成另一种类型,是任意Object之间的类型 ...
- JavaWeb分页显示内容之分页查询的三种思路(数据库分页查询)
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6134851.html 在开发过程中,经常做的一件事,也是最基本的事,就是从数据库中查询数据,然后在客户端显示出 ...
- Java之所有对象的公用方法>8.Obey the general contract when overriding equals
Overriding the equals method seems simple, but there are many ways to get it wrong, and consequences ...
- JavaSE入门学习7:Java基础语法之语句(下)
继续接着Java基础语法来:JavaSE入门学习5:Java基础语法(一)和JavaSE入门学习6:Java基础语法(二). 语句 Java经常使用的3种循环:while.do...while,for ...
- Lotusscript统计在线用户数
使用notessession的SendConsoleCommand方法向服务器控制台发送“show inetusers”命令,该命令返回一个结果(字符串),字符串类似如下: admin 192.1 ...
- Dapper 的输出参数使用示范
-- 普通SQL 示范-- Queries with output parameters. Hide Shrink Copy Code // output parameters // the para ...