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

简介: WebDriver是开源Web应用自动化测试工具,不仅在Google内部,在业内也广受欢迎,也是GTAC(Google测试自动化大会)历史上最热门的话题之一。

本节书摘来自异步社区《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的存在之后,我们就成功了。

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

相关文章
|
5天前
|
安全 Linux Shell
Kali渗透测试:使用Metasploit对Web应用的攻击
Kali渗透测试:使用Metasploit对Web应用的攻击
32 4
|
23天前
|
Web App开发 JavaScript Java
自动化测试的利剑:Selenium WebDriver入门与实践
【9月更文挑战第21天】在软件开发的海洋中,自动化测试犹如一艘船,帮助开发者们快速航行至质量保证的彼岸。本文将作为你的罗盘,指引你了解和掌握Selenium WebDriver这一强大的自动化测试工具。通过深入浅出的方式,我们将探索Selenium WebDriver的基本概念、安装过程以及编写简单测试脚本的方法。无论你是刚接触自动化测试的新手,还是希望提升测试技能的开发者,这篇文章都将为你提供有价值的指导。
|
1月前
|
Web App开发 Java 测试技术
自动化测试的利器:Selenium WebDriver入门与实践
【9月更文挑战第8天】在软件开发的海洋中,测试是确保我们不会溺水的那根救生索。Selenium WebDriver,作为自动化测试的明星工具,让这根救生索更加结实可靠。本文将带你快速上手Selenium WebDriver,从基础设置到实际操作,再到实战演练,让你的开发之旅更加平稳顺畅。
|
5天前
|
安全 Java Linux
Kali渗透测试:通过Web应用程序实现远程控制
Kali渗透测试:通过Web应用程序实现远程控制
29 0
|
2月前
|
机器学习/深度学习 人工智能 运维
2023 Google I/O Connect Shanghai 参会总结:云,AI 与 Web
2023 Google I/O Connect Shanghai 参会总结:云,AI 与 Web
2023 Google I/O Connect Shanghai 参会总结:云,AI 与 Web
|
2月前
|
测试技术
基于LangChain手工测试用例转Web自动化测试生成工具
该方案探索了利用大模型自动生成Web自动化测试用例的方法,替代传统的手动编写或录制方式。通过清晰定义功能测试步骤,结合LangChain的Agent和工具包,实现了从功能测试到自动化测试的转换,极大提升了效率。不仅减少了人工干预,还提高了测试用例的可维护性和实用性。
55 4
|
2月前
|
Web App开发 测试技术 API
自动化测试之美:使用Selenium和Python进行Web应用测试
【8月更文挑战第31天】在软件开发的快节奏世界中,自动化测试如同一束明灯,照亮了质量保证之路。本文将引导你通过Selenium和Python的强大组合,探索如何构建高效的Web应用测试框架。我们不仅会讨论理论,还会深入代码,从一个简单的示例开始,逐步扩展至更复杂的场景。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧。让我们一同揭开自动化测试的神秘面纱,体验它的魅力所在。
|
2月前
|
人工智能 Java 测试技术
自动化测试之美:如何用Selenium提升Web应用的质量保证
【8月更文挑战第24天】 在软件开发的海洋里,自动化测试如同一艘救生艇,帮助开发团队保持代码质量的同时,还能确保他们不会淹没在功能的迭代和bug修复中。Selenium,作为一个用于Web应用程序测试的工具,它的强大之处在于模拟真实用户操作的能力。本文将通过浅显易懂的语言和实际代码示例,引导读者理解Selenium的魅力所在,以及如何有效利用它来提升Web应用的测试效率和覆盖率。
|
1月前
|
jenkins 测试技术 持续交付
自动化测试的高效之路:如何利用Python进行Web应用测试
【9月更文挑战第13天】在软件开发的快节奏中,自动化测试是确保质量和效率的关键。本文将引导你了解如何使用Python语言及其强大的测试框架来提升Web应用的测试效率。我们将一起探索编写简洁而强大的测试脚本的技巧,以及如何通过持续集成(CI)实现自动化测试流程。准备好让你的测试工作飞一般的感觉!
|
2月前
|
XML JavaScript 测试技术
Web自动化测试框架(基础篇)--HTML页面元素和DOM对象
本文为Web自动化测试入门指南,介绍了HTML页面元素和DOM对象的基础知识,以及如何使用Python中的Selenium WebDriver进行元素定位、操作和等待机制,旨在帮助初学者理解Web自动化测试中的关键概念和操作技巧。
46 1