职业经验 职言 | 编码是测试自动化职业生涯的关键:你准备好了吗?

TesterHome小助手 · 2022年09月30日 · 最后由 西学东渐 回复于 2022年10月13日 · 6687 次阅读

编译:TesterHome
原文标题:Coding is key to a test automation career: Are you prepared?
作者:T.J. Maher(Verily Life Sciences 公司软件测试工程师)
编者注:
Verily Life Sciences 是一家健康管理公司,前身为 Google Life Sciences。2015 年,谷歌改组为 Alphabet,业务调整之后,谷歌原有的健康业务分离出来。同一年,Google Life Sciences 也更名为 Verily,目前该公司已经获得包括 Alphabet、淡马锡、银湖资本等多轮投资。

本文作者为该公司一名软件测试工程师,希望他的职业经历和经验能够给大家带来启发,以下为作者观点。

我在研究自动化开发方面投入了大量的时间和精力,但我成为自动化开发者的时间并不长。我花了很多年时间打基础,现在我正在为一个 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,一个我想用来探索移动应用程序的工具。

剩下的就看你自己了

我可以用第一手经验告诉你,如果你经历了这个过程,你更有可能被雇用为自动化开发人员。为什么?因为你可以向雇主证明最重要的技能:你是一个愿意自学成才的人。

共收到 5 条回复 时间 点赞

是这样,我觉得每个测试人员都有编程的基础,当工作需要时,可以助力,如:有时需从代码提取测试点,有时需二次开发或新造轮子生成想要的测试工作。因为工作效能的提升是一个永恒的话题,测试需要自动化的点无所不在,只要你能发现并去行动。

思而不行则殆

如果要我自己写代码产出可能会很慢,但是你要我在别人写的基础上进行修改的话就很快了,这是不是说明只适合做一个代码搬运工😂

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册