本节书摘来自异步社区《Google软件测试之道》一书中的第2章2.5节与Web Driver的创建者Simon Stewart的对话,作者【美】James Whittaker , Jason Arbon , Jeff Carollo,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.5 与Web Driver的创建者Simon Stewart的对话
Simon Stewart是WebDriver的创建者,也是Google在浏览器自动化领域的专家(译注:Simon于2013年离开Google加盟Facebook)。WebDriver是开源Web应用自动化测试工具,不仅在Google内部,在业内也广受欢迎,也是GTAC(Google测试自动化大会)历史上最热门的话题之一。我们的采访记者和Simon一起做了这个访谈,Simon在这里讨论了Web应用自动化的话题和关于WebDriver未来的一些想法。

HGTS:好像很多人并不清楚Selenium和WebDriver之间的区别,你能解释一下吗?

Simon:Selenium是Jason Huggins在ThoughtWorks时创建的一个项目。Jason那个时候写了一个Web应用,假定用户使用的浏览器是IE。这样做可以理解,因为那个时候IE有百分之九十多的市场占有率。但是他持续不断的得到用户反馈,指出这个应用在Firefox浏览器上有bug,这个时候他就碰到一个问题,当他修复Firefox上的bug的时候会导致在IE上出现另外的问题。对他来说,Selenium是一个可以加速开发应用程序的工具,可以确保每次变更在两个浏览器上都可以正常工作。

大概在一年前,或者不到一年的样子,我真正开始去创建WebDriver。但在Selenium真正稳定之前,我的主要精力集中在更加通用的Web应用测试上。这并不奇怪,我们两个使用了不同的方法来实现Web自动化。Selenium在浏览器内部使用JavaScript实现,而WebDriver使用浏览器本身的API集成到浏览器内部。两种方法各有优劣。例如,Selenium可以在瞬间打开一个新的Chrome浏览器,但却不能上传文件或者很好地处理用户交互,因为它是JavaScript实现,必须限定在JS沙箱之内。由于WebDriver构建在浏览器里面,它可以突破这些限制,但打开一个新的浏览器却比较痛苦。在我们都开始为Google工作的时候,我们决定把这两个集成到一起。

HGTS:但我还是听到人们在分别谈论它们。它们还依然是两个独立的项目吗?

Simon:对于所有浏览器自动化工具集,我称为Selenium。WebDriver只是其中的一个工具,官方的名字是“Selenium WebDriver”。

HGTS:那么Google是如何介入进来的呢?

Simon:几年前,Google在创建了London office的时候,雇佣了一些Thoughtworks的前员工,这些人邀请我去做一个关于WebDriver的技术分享。这次分享并没有给我带来什么信心,前排的一个家伙听着听着居然睡着了,我在分享的过程中必须与他的鼾声做斗争。碰巧的是,这个分享的录制设备也坏了。但还是有很多人对此感兴趣,于是我们再次被邀请在GTAC上做一个没有鼾声的分享。之后我很快就加入了Google。现在我也知道那个事情的真相了。

HGTS:确实,每个人有自己的秘密。说正经的,我们之前也看过你的分享,很难想象有人会睡着。他是我们认识的人吗?

Simon:不,他已经离开Google很久了。我们还是假设他前一天晚上熬夜了比较好。

HGTS:我们必须从中吸取教训。大家需要明白,在Simon Stewart的分享过程中睡觉,对你的职业生涯是非常不利的。自从你加入了Google,WebDriver是你的全职工作吗?

Simon:不,这只是我20%的工作。我的主要工作是一个产品的SET,虽然我现在还在负责推进WebDriver的前进,但已经有外部的贡献者了,他们做的非常棒。在一个开源项目的早期阶段,人们拿过来使用,因为他们需要这样的项目,而且也没有其他可以替代的。内在的激励就是要去贡献。现在许多WebDriver的用户都在口口相传如何去使用操作,这些用户更像是消费者,而不是贡献者。但在早期,WebDriver社区的草根却在真正地推进这个工具向前发展。

HGTS:我们知道故事的来龙去脉了。WebDriver在Google内部非常受欢迎,这是怎么开始的?是有试点的项目吗?有没有一些错误的教训呢?

Simon:这是一个社交网络产品,在Wave团队最先开始使用。该团队位于Sydney的办公室,但这个团队现在却已经不存在了。Wave的工程师尝试去使用Selenium作为他们的测试框架,但是却无法解决一些问题。Wave实在是太复杂了。工程师们很勤奋,找到了WebDriver并开始问许多优秀的问题,然后这变成了我20%的时间要处理的事情。他们找到我的老板,希望我能在去Sydney待上一个月,帮助他们建立自己的测试框架。

HGTS:我想你当时成功了。

Simon:是的,那个团队很棒,我们把框架做出来了。提出了大量针对WebDriver的新需求,这对于其他的团队也是一个榜样,WebDriver在Web应用方面处于领先地位。从那一刻开始,WebDriver就再也没有缺少过用户,对于我来说,全身心的投入进去也更有意义。

HGTS:第一个用户总是最难的。你是怎么改进WebDriver,并让它可以在Wave团队工作的?

Simon:我使用了一个被称为DDD(译注:defect-driven development)的流程,缺陷驱动开发。我总是宣称WebDriver是完美无瑕的,一旦用户发现了一个bug,我就立刻去修复它,然后再宣布它没有问题了,更加完美无瑕。这样的话,可以确定我修复的bug是一些人们真正关心的bug。这对于改善一个已有产品是非常有用的,这可以确保你是在修复最重要的bug,而不是修复人们并不关心的bug。

HGTS:你还是WebDriver里唯一的工程师吗?

Simon:不,我们有一个团队,WebDriver是Google内部的一个正式项目,并在开源方面非常活跃。随着浏览器数量、版本和平台的不断增加,我们告诉大家我们必须很疯狂,我们每天都在把不可能的事情变成可能。有时候我觉得比较理智的人其实并不适合做我们这个项目。

HGTS:在Wave项目之后你得到了很多动力。对于用户来说,是否意味着WebDriver替代了旧的Selenium的地位?

Simon:我想是的。许多原来Selenium工程师都去做其他事情了。由于在Wave上的成功,我对WebDriver也充满了信心和能量。一些我从来没有见过的人,如来自德国的Michael Tam,已经开始在WebDriver上做一些重要的工作了,我也很小心地鼓励这样的关系模式。Michael是第一个我没有真正见过就有提交代码权限的人。

其实我并没有特别地跟进WebDriver的扩张。比较明确的是,在物理位置上离我近的团队,更愿意去使用WebDriver。我想Picasa网络相册团队事实上是第一个真正使用WebDriver的团队,而且是在Wave团队之前,然后Ads也开始使用了。在Google,不同团队在使用各自的Web自动化框架。Chrome在使用PyAuto,Search在使用Puppet(有一个开源的版本叫做Web Puppeteer),Ads使用WebDriver,等等。

HGTS:WebDriver的未来会怎样?你们团队有什么目标吗?

Simon:好吧,目前看起来还有点乱。即便是在几年前,在市场上还有一个主流的浏览器,但现在没有了。IE、Firefox、Chrome、Safari、Opera等都拥有了自己的市场。但这还只是桌面版的而已。在移动端的浏览器引擎也正在疯狂地扩张。在2008年以后,许多商用的浏览器自动化工具把他们都给忽略了,IE除外,这其实是非常不明智的做法。下一步,WebDriver会在标准化上发力,这样可以保证相同的网络应用代码在不同的浏览器上都可以工作。当然,这也需要浏览器厂商一起参与进来,支持我们的WebDriver API。

HGTS:这听起来好像是标准委员会要做的事情。目前有什么进展吗?

Simon:是的,有一些。很不幸地是,我必须去写一些英文文档,而不是编写代码了,在W3C里有一个文档,所有的浏览器开发商都会参与进去。

HGTS:你希望的未来是怎样的?未来的浏览器自动化工具又是如何工作的呢?

Simon:我希望他们都消失到后台之中。自动化的API会对所有浏览器适用,人们不用去担心这些基础框架,他们仅仅去使用即可。希望人们能把更多的精力放在他们Web应用本身,而不是如何去自动化上。在人们真正忘了WebDriver的存在之后,我们就成功了。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

《Google软件测试之道》—第2章2.5节与Web Driver的创建者Simon Stewart的对话相关推荐

  1. 《Google软件测试之道》目录—导读

    内容提要 Google软件测试之道 每天,Google都要测试和发布数百万个源文件.亿万行的代码.数以亿计的构建动作会触发几百万次的自动化测试,并在好几十万个浏览器实例上执行.面对这些看似不可能完成的 ...

  2. 《Google软件测试之道》—第2章2.4节与工具开发工程师Ted Mao的访谈

    本节书摘来自异步社区<Google软件测试之道>一书中的第2章2.4节与工具开发工程师Ted Mao的访谈,作者[美]James Whittaker , Jason Arbon , Jef ...

  3. 《Google 软件测试之道》摘录

    最近刚刚看完<Google 软件测试之道>,受益颇多,遂记录下: 只有在软件产品变得重要的时候质量才显得重要 第一章:谷歌软件测试介绍 角色介绍 SWE(Software Engineer ...

  4. 《Google软件测试之道》- Google软件测试介绍

    <Google软件测试之道>- Google软件测试介绍 2015-05-21 目录 1 质量与测试   2 角色   3 组织结构   4 爬.走.跑   5 测试类型   相关链接 与 ...

  5. 《Google软件测试之道》读书笔记

    Google软件测试之道 像google一样进行软件测试 软件测试介绍 少则清晰,测试人员的稀缺导致测试资源很昂贵.(不要招聘太多的测试人员) 质量不等于测试 开发对质量负责(预防行为,不是检测) 卫 ...

  6. 《Google软件测试之道》有感

    Google软件测试之道有感 谷歌测试工程师给我的感觉 他们做了些什么 A&Q 谷歌测试工程师给我的感觉 如他们的招聘要求,有很多想法,并且有能力去实现.印象深刻的是,有一位为了实现自己的想法 ...

  7. 《Google软件测试之道》告诉你什么是测试

    Google软件测试介绍 1.Google的测试团队并非雄兵百万,我们更像是小而精的特种部队,我们依靠的是出色的战术和高级武器 2.在Google,写代码的开发人员也承担了测试的重任.质量从来就不仅仅 ...

  8. Google软件测试之道(读书笔记)

    目录 第一章 Google软件测试介绍 第二章 软件测试开发工程师 第三章 测试工程师 第四章 测试工程经理 第五章 Google软件测试改进 第一章 Google软件测试介绍 角色.类型.行为.组织 ...

  9. Google软件测试之道

    目录 一.Google软件测试介绍 1.质量不等于测试 2.角色 3.组织结构 4.爬.走.跑 5.测试类型 二.软件测试开发工程师 三.测试工程师 1.一种面向用户的测试角色 2.测试工程师的工作 ...

最新文章

  1. Swift 基本基本运算符
  2. matlab fminimax 多变量,Matlab应用实例(8)—fminimax
  3. 前缀和?or差分序列?
  4. 2012年08月13日
  5. 『设计模式』外观模式--这篇博客也太明了吧
  6. PIFO到底是什么?【Programmable Packet Scheduling at Line Rate】
  7. Unity Shader:雾的数学运算以及在Unity中使用Fog
  8. android沉浸模式代码,Android沉浸式的两种方法
  9. 必应拼音输入法与搜狗拼音输入法体验性分析检测
  10. c语言中输出值作用,printf在c语言中什么意思
  11. 算法题解 - 牛客编程巅峰赛S1第4场 - 黄金钻石组
  12. java 微信网页授权_java微信网页授权获取openid(第十四课)
  13. Mint-ui MessageBox.confirm 确定和取消事件
  14. Debian10配置IP地址、DNS、主机名
  15. bert获得词向量_NLP中的词向量对比:word2vec/glove/fastText/elmo/GPT/bert
  16. cati服务器授权信息无效,CATI基础知识介绍(四)
  17. iOS开发-Please sign in with an app-specific password. You can create one at appleid.apple.com
  18. html大作业网页代码 ——2019凡客服装店铺商城(1页) HTML+CSS+JavaScript HTML+CSS大作业_ 服装店铺网页制作作业_购物网页设计...
  19. 几张图看懂区块链是什么?
  20. C语言解决猴子吃桃子问题

热门文章

  1. ValueError: Connection error, and we cannot find the requested files in the cached path.解决方案
  2. Java输出特殊偏旁的汉字,输出个人基本信息
  3. SharePoint 混合单点--Azure访问控制服务(ACS)与S2S身份验证信任
  4. 关于安装composer提示could not open input file composer.phar的问题解决
  5. WKWebView1 加载带图文富文本
  6. 电机马达带负载转矩前馈补偿的永磁同步电机无感FOC 采用龙伯格负载转矩观测器,可快速准确观测到负载转矩
  7. Rearrange 函数
  8. SDUT Greatest Number
  9. 机器学习原来如此简单,万能模板直接用
  10. ”爱情密码“帖的故事--从实例中学懂摩尔密码