我在研究自动化开发方面投入了大量的时间和精力,但我成为自动化开发者的时间并不长。我花了很多年时间打基础,现在我正在为一个Appium/Java移动测试自动化框架做概念验证。
对我这个试图进入自动化领域的手动测试员来说,最大的警醒是,自动化不是依靠学习单一的测试工具,就像以前Rational Rose、Segue SilkTest和Mercury Quick Test Pro所主导的那样。现在,这要困难得多。为了在测试自动化方面做得够好,你必须学习如何编码。
我并不是说所有的QA工程师都必须知道如何编码。但是,如果你是一个试图进入测试自动化领域的手动测试员,你的时间可能更应该用在学习编程语言,这比学习自动化工具的来龙去脉更合适。
我自学了如何编码,并获得了作为自动化开发人员的工作,你也可以。所有这一切只需要五个比较难的步骤。
为什么要学习自动化开发?
传统上,质量保证工程师的角色一直是一个非编码的角色。作为一名软件质量保证工程师,你在软件开发团队中的主要角色是终端用户的代言人,通过客户的眼睛来看待产品。你需要像终端用户一样使用和检视产品。这个过程就是一次探索性测试,正如Cem Kaner在Testing Computer Software一书中的描述:
"对某一输入的预期边界是什么?如果你超越这些界限,给出意想不到的或非正常的响应,只是为了看看被测试的系统将如何表现,会发生什么?"
通过自动化回归测试套件,你将有更多的时间来探索你正在测试的系统以及它的行为方式。
在波士顿的一个有关测试话题的咖啡座谈会上,我问道:"希望转向自动化的手动测试人员如何学习如何编码?" 这很快演变成了另一个问题:QA工程师是否应该学习编码?
The Mob Programming Guidebook的作者Llewellyn Falco回答说:"每个人都应该知道如何编码!"。这就像阅读和写作。你可能没有写过一本书,但你应该知道如何阅读和写作"。
我同意。当我在学校学习软件工程时,一旦我开始学习更多关于商业分析师角色、数据库开发和软件开发的知识,我的测试能力就得到了提升。因此,我建议以下五个步骤。
第一步:选择一种语言,任何语言都行
你选择什么作为你的第一个编程语言并不重要。如果你想进入自动化测试领域,Java、JavaScript、Python、甚至Ruby都是不错的选择。下面是一个简单的介绍:
- Selenium WebDriver/Java是企业软件测试中最受欢迎的组合,也是需要了解的一种很好的全能语言。但要注意的是,尽管最新的版本在很多年前就出现了,很多公司仍在从Java 7过渡到Java 8。
- JavaScript与许多不同的JavaScript前端框架配对很好,比如VueJS。Protractor是由谷歌创建的,用于测试AngularJS应用程序。Nightwatch.JS和SeleniumJS与Node.JS和服务器端JavaScript配对良好。也可以尝试学习E6,即最新版本的JavaScript。
- 有了Python,你可以快速地把能用的东西组合在一起。使用Python的Selenium不那么冗长。
- Ruby是另一种容易学习的语言。当Ruby on Rails处于鼎盛时期时,开发者只要想创建一个简单的网络应用就会使用它。但是在自动化领域,似乎没有那么多的需求了。
第二步:编码,编码,编码
不久前,我还是一个没有工作的软件测试员,没有多少编码经验。我在研究生院时有一些编码经验,但那是十年前的事了。所以,为了重新适应编码,我研究了免费电子书Learning Python the Hard Way中的所有例子。如果你需要大量的手把手指导,这本书就很适合你。
使用Python也有帮助,因为该语言的启动时间相对较短。然后我购买了Java for Testers,以使我更容易掌握Java编程语言。“邪恶”测试员Alan Richardson的任何作品都是金子。
但是,仅仅阅读关于编码的文章是不够的。你必须编码! 我记得当我第一次开始尝试学习Richardson的Selenium WebDriver in Java在线课程时。我到处听讲座,看视频,甚至在火车、飞机和地铁上。但由于我没有和老师一起实际编码,所以没有沉淀下来。
当你在学习在线课程时,如果视频显示教师在IntelliJ中输入代码,你也应该这样做。在我的例子中,我把屏幕的左半部分设置为在浏览器中播放视频,而在右半部分我打字并试图运行代码示例。
如果你仍然需要更多的指导,可以考虑报名参加大规模开放式在线课程(MOOC)。许多组织提供免费或廉价的在线课程。以下是几个例子:
- edX,Mooc.org的一部分,将自己描述为 "向世界各地的学习者提供来自世界上最好的大学和机构的高质量课程"。
- 可汗学院,"提供练习题、教学视频和个性化的学习仪表板,使学习者能够在课堂内外按照自己的节奏学习"。
- Udemy,"一个在线学习和教学的全球市场,学生们通过学习专家讲师讲授的超过45,000门课程的广泛资料库,掌握新技能,实现自己的目标"。
你在寻找有关Java编码的信息?EdX、哈佛和麻省理工学院的MOOC提供了三个新的Java入门课程。
- 第1部分:开始用Java编码
- 第2部分:写好代码
- 第3部分:基本数据结构和算法
如果你是一名移动测试员,了解安卓应用开发的内部运作将有助于你弄清如何设置Appium。我还推荐谷歌Android开发者网站,它可以:
- 引导你安装Android Studio,一个用于PC或Mac的集成开发环境(IDE)。教程引导你了解事情如何运作。
- 提供免费课程,如Android初学者系列。
- 告诉你如何创建你的第一个应用程序。
虽然训练营不会让你成为一名程序员,但许多开源工具、语言和框架的文档都可以在网上找到,免费的在线教程也是如此。
第三步:创建GitHub账户并探索
如果你还没有,请注册一个GitHub账户。GitHub是一个神奇的地方,在这里你可以寻找最新的开源自动化工具集,并从工具的创造者那里获得指导和最新的信息。他们还提供样本测试,所以其他人可以学习他们的工具集。你会发现这样的工具:
- SeleniumHQ,它有关于这个头号GUI自动化工具在C#、JavaScript、Java、Ruby和Python中的所有最新绑定的文档。
- Appium,用于移动应用的Selenium WebDriver
- Protractor,一个基于Node.JS的自动化工具,你可以用来帮助测试AngularJS应用程序。
- REST Assured,基于Java的框架,帮助你测试RESTful APIs。
GitHub的美妙之处在于,只要你允许GitHub仓库中的代码公开展示,它就是完全免费的!
你是否有任何代码样本或项目想纳入在线编码组合?把它们上传到GitHub,并在简历中加入你的账户链接。GitHub有一个广泛的帮助部分,介绍如何创建一个账户并上传你的代码。你还会了解到代码是如何被处理的,从分支到合并再到创建拉动请求。
第四步:写一个快速和简单的自动化测试
现在是时候通过在你最喜欢的网站上编写你的第一个自动化测试并将结果放在GitHub上公开了。一旦我掌握了窍门,我就开始四处寻找可以自动化的东西,比如Dave Haeffner的The Internet,这是一个为初级自动化开发者创建的实践测试网站。
你有自己创建的自动化解决方案吗?分享它,并获得反馈!
第五步:认为你够了解?继续练习。
最重要的是一旦你被聘为测试自动化工程师,不要停止练习编码。学习是一个永无止境的旅程。
每当我学到一些有价值的东西,我就会想出一些示例代码,然后尝试写一些代码演练,放在我的博客上。我一开始很简单,以The Internet作为我的测试站点。然后,经过几个月的工作经验,我试图找出如何使亚马逊的网站自动化的方法。从那以后,我开始修补API测试,先是用Apache的HTTP组件,然后是Postman,最后是用Java REST Assured库。目前,我正在摸索Appium Desktop,一个我想用来探索移动应用程序的工具。
剩下的就看你自己了
我可以用第一手经验告诉你,如果你经历了这个过程,你更有可能被雇用为自动化开发人员。为什么?因为你可以向雇主证明最重要的技能:你是一个愿意自学成才的人。