自动化测试工程师_所以你想成为一名测试自动化工程师

自动化测试工程师

I see many people and personally have several friends and acquaintances that are interested in becoming a Test Automation Engineer (TAE), a.k.a. Software Development in Test (SDET)*, but they all have many questions:

我看到很多人和个人有几个有兴趣成为测试自动化工程师(TAE),也就是测试中的软件开发(SDET)*的朋友和熟人,但是他们都有很多问题:

  • How do I become one and what skills do I gain?

    我如何成为一体,我将获得什么技能?
  • Do I have to program as well as traditional software developers?

    我必须像传统软件开发人员一样编程吗?

  • What does the job involve?

    工作涉及什么?

This is a very short list. I even left out questions about salaries and career prospects (hint: they’re pretty great wherever you are). To keep this article focused, I’ll provide actionable answers just for the three questions above.

这是一个很短的清单。 我什至省去了有关薪水和职业前景的问题(提示:无论您身在何处,他们都很棒)。 为了使本文重点突出,我将仅针对上述三个问题提供可行的答案。

Some insist that there are differences between a TAE, a SDET, and other titles. I found that most of these titles are used interchangeably and their definitions are fluid. Check out the “The problem with titles for testers” article.

有些人坚持认为TAE,SDET和其他标题之间存在差异。 我发现这些标题大多数都可以互换使用,并且它们的定义是不确定的。 请查看“ 测试人员标题的问题 ”一文。

I will use such titles interchangeably, and they all refer to the broad concept of a profession that involves the use of programming expertise to write a variety of functional (and non-functional) tests.

我将互换使用这些标题,并且它们全都指专业的广泛概念,涉及使用编程专业知识来编写各种功能(和非功能)测试。

大图景 (The Big Picture)

A SDET is a highly in-demand profession, so it’s definitely worth considering a career in this direction. At the same time, you certainly don’t become one overnight. Not even after a week-long bootcamp either. But it is certainly achievable without going through a multi-year university degree program (a Computer Science degree is considered a plus, but rarely a mandatory prerequisite like in law or medicine). I know that because I’m a well paid self-taught SDET myself.

SDET是一项非常抢手的职业,因此绝对值得考虑朝这个方向发展的职业。 同时,您当然不会一overnight而就。 甚至在为期一周的训练营之后也没有。 但是,如果不通过多年制大学学位课程,当然可以实现这一目标(计算机科学学位被视为优先考虑,但很少有法律或医学方面的强制性先决条件)。 我知道这是因为我自己是一个自学成才的SDET。

So the answer to the first question “How do I become one?” is:

因此,第一个问题“我如何成为一个人”的答案。 是:

Most SDETs are self-taught. All you have to do is have the motivation to learn!

大多数SDET是自学的。 您要做的就是有学习的动力!

Just like any profession, a SDET is a combination of skills. Below is a Skill Tree showing what an experienced SDET should have. Depending on what you already know, you may be somewhere half-way.

就像任何专业一样,SDET是技能的结合。 下面是显示经验丰富的SDET应该具备的技能树。 根据您已经知道的内容,您可能会处于中间位置。

Yeah, that’s a lot, but don’t be discouraged, because:

是的,很多,但是不要灰心,因为:

  • having MOST of these skills means to be a senior SDET superman with 15+ years of experience

    拥有大多数这些技能意味着成为拥有15年以上经验的高级SDET超人
  • no employer demands all of them

    没有雇主要求所有人
  • No SDET I ever met has ALL of these, let alone be an expert in all of them.

    我从未遇到过SDET拥有所有这些功能,更不用说成为所有这些功能的专家了。

I myself lack skills in Mobile Test Automation and Performance Testing at the time of writing this article. I don’t worry about it.

在撰写本文时,我本人缺乏移动测试自动化和性能测试方面的技能。 我不用担心

To land your first junior SDET job though, you probably need half of these at most. Maybe only a third if you’re lucky to find an employer who’s willing to train you up. Let’s go through them.

但是,要获得第一个初级SDET工作,您最多可能需要一半的工作。 如果您幸运地找到愿意培训您的雇主,也许只有三分之一。 让我们来看看它们。

一般技能 (General skills)

Nearly every job or profession wants some universal skills. You must be communicative, empathetic, a team-player, etc. These are cited so often, that they tend to get ignored even. I trust that your current or last job wanted the same, so you’re probably fine.

几乎每个工作或职业都需要一些通用技能。 您必须保持交流,同理心,团队合作精神等。这些被频繁引用,以至于甚至容易被忽略。 我相信您目前或最近的工作也希望如此,所以您可能还不错。

In my opinion, a QA professional must be communicative and diplomatic above all, and for very good reasons. But I leave this discussion for another article.

我认为,质量保证专家首先必须具有很好的沟通和外交能力,这是有充分理由的。 但是,我将这个讨论留给另一篇文章。

测试技巧 (Testing skills)

Test automation is, well, automation of tests. But somebody needs to think of test scenarios, right? And what if they are incomplete, unstructured, vague, and based on a flawed understanding of the requirements and the domain? In other words, what if they are garbage?

测试自动化是测试的自动化。 但是有人需要考虑测试场景,对吗? 如果它们不完整,结构松散,含糊不清,并且基于对需求和领域的理解有误,该怎么办? 换句话说,如果它们是垃圾怎么办?

Then the universal “Garbage In, Garbage Out” (GIGO) law applies:

然后适用普遍的“垃圾进,垃圾出”(GIGO)法:

Image for post
Garbage In, Garbage Out!
垃圾进垃圾出!

If you already are a QA professional in any capacity, then you are acutely aware that “testing” is far more than monkey-clicking on buttons and checking that nothing “bad” happens. Test scenarios and their execution is just the tip of the iceberg. Most of the testing work happens “below the surface” and precedes test execution: business requirements analysis, applying critical thinking, discovering flaws and contradictions in documents, creating various test models that ensure adequate and timely test coverage to name a few.

如果您已经以任何身份成为质量检查专家,那么您就会清楚地知道,“测试”远不止于单击按钮并检查是否没有“坏”现象。 测试场景及其执行只是冰山一角。 大多数测试工作发生在“表层之下”,并且在测试执行之前进行:业务需求分析,运用批判性思维,发现文档中的缺陷和矛盾,创建各种测试模型以确保适当且及时的测试覆盖率。

In a way, a proper Automation Engineer should be right in the middle of this Venn diagram:

在某种程度上,合适的自动化工程师应该位于此维恩图的中间:

Image for post
SDET’s skills are both testing and programming
SDET的技能是测试和编程

If you’re confident in your testing skills, skip to the next section. If not, then this free testing syllabus on guru99.com is a great, beginner-friendly place to start.

如果您对自己的测试技能有信心,请跳到下一部分。 如果没有,那么guru99.com上的这个免费测试大纲是一个不错的,适合初学者的起点。

If you want a book, pick one that teaches you concrete testing techniques, not theory abstract stuff. I own Software Testing: Techniques, Principles, and Practices by JJ Shen, and it’s pretty good despite multiple typos and grammar errors. By reading through reviews of many QA books, this seems to be a common issue, which I find weird and ironic — books teaching quality… themselves lack quality. I’ve also heard good things about Software Testing by Ron Patton.

如果您想要一本书,请选择一本教您具体测试技术的书,而不是理论抽象的书。 我拥有JJ Shen撰写的 软件测试:技术,原理和实践 ,尽管存在多种错别字和语法错误,但它还是不错的。 通过阅读许多质量检查书的评论,这似乎是一个普遍的问题,我觉得这很奇怪和具有讽刺意味-书的教学质量……他们自己缺乏素质。 我还听说过Ron Patton的有关 软件测试 的好消息。

技术技能-杂项 (Technical skills — miscellaneous)

Next are misc technical skills. It’s useful to learn them early because even if you decide that Test Automation is not for you, these skills will help you in life. We live in an increasingly digital world, and gaining a greater understanding of computers and the Internet definitely won’t hurt. I will talk about CLI, HTTP, HTML, and SQL.

接下来是杂项技术技能。 尽早学习它们很有用,因为即使您认为测试自动化不适合您,这些技能也将对您的生活有所帮助。 我们生活在一个日益数字化的世界中,对计算机和Internet的深入了解绝对不会受到伤害。 我将讨论CLI,HTTP,HTML和SQL。

  • The Command Line Interface (CLI)*: everyone technical in IT needs this. Instead of clicking around with your mouse, you need to open up the terminal window and type in commands to execute stuff. The things you can do ranges from trivial (create or delete a file) to very complex admin things. The good news is that you only need to learn ca. 15 commands to do most things you’ll need, and so it only takes one or two dedicated weekends to get the hang of it.

    命令行界面(CLI) *:IT领域的每个技术人员都需要此。 无需用鼠标四处浏览,您需要打开终端窗口并输入命令来执行操作。 您可以做的事情从琐碎的(创建或删除文件)到非常复杂的管理工作不等。 好消息是,您只需要学习ca。 15条命令可完成您所需的大多数事情,因此仅需花费一两个专用的周末即可完成任务。

    Just watch this free

    只需免费观看

    YouTube 1h 14m tutorial. If you can remember and use what you learn there, then feel free to put “command line basics” on your CV. Oh, and don’t forget to practice in any of the free online terminal emulators such as cocalc.com

    YouTube 1h 14m教程 。 如果您能记住并使用在此学到的知识,请随时在“简历”上添加“命令行基础知识”。 哦,别忘了在任何免费的在线终端模拟器中练习,例如cocalc.com

*Note that there are two major CLI flavors — Windows and UNIX (Linux, macOS). Both are useful, but at work, you will most likely need the Linux ones.

*请注意,有两种主要的CLI风格-Windows和UNIX(Linux,macOS)。 两者都很有用,但是在工作中,您很可能需要Linux。

  • HTTP: the main protocol that allows us to browse the internet. Learning the basics will at least give you an understanding of how web pages and files fly across the World Wide Web, which is pretty cool. At work, you might need to write code or use a tool that communicates with a piece of software using HTTP. “HTTP: the definitive guide” is an old book, but the foundational things didn’t change much, so it’s still a firm recommendation from me.

    HTTP :允许我们浏览互联网的主要协议。 学习基础知识至少可以使您了解网页和文件如何在万维网上飞行,这非常酷。 在工作中,您可能需要编写代码或使用通过HTTP与某个软件进行通信的工具。 “ HTTP:权威指南”是一本古老的书,但是基础内容并没有太大变化,因此它仍然是我的坚定建议。

  • HTML: or HyperText Markup Language, a.k.a. “What web pages are made of”. It only takes about 20 hours of learning and 20 hours (i.e. one full week) of dedicated practice to gain enough understanding without delving too deep into it. If you wish to become a Web Developer, the learning curve is of course steeper and longer.

    HTML :或超文本标记语言,又称“由什么网页组成”。 只需花费大约20个小时的学习时间和20个小时(即一个完整的一周)的专心练习,即可获得足够的理解而又无需太深究。 如果您想成为Web开发人员,学习曲线当然会更陡峭和更长。

    There are countless free and paid tutorials and out there. For a high-level overview, you can take a look at Pluralsight’s “

    那里有无数的免费和付费教程。 要获得高层次的概述,您可以查看Pluralsight的“

    HTML Fundamentals” (2h 20m). I also recommend watching “HTML, CSS, and JavaScript: The Big Picture” (1h 28m) for a VERY gentle introduction into how several simple technologies are glued together to display stuff on the internet. Don’t have a Pluralsight account? You can get a free trial and binge watch those and many other courses.

    HTML基础知识 ”(2h 20m)。 我还建议您观看“ HTML,CSS和JavaScript:The Big Picture ”(1小时28m),以非常温柔的介绍如何将几种简单的技术粘合在一起以在Internet上显示内容。 没有Pluralsight帐户? 您可以免费试用,并观看这些课程和许多其他课程。

    W3schools.com is what I’d recommend as a non-video free alternative. An old resource, but still great.

    W3schools.com是我推荐的非视频免费替代品。 一个古老的资源,但仍然很棒。

  • SQL: Structured Query Language less useful in everyday life, but at least the word “database” will not be a vague concept anymore. SQL is what you use to “talk” to databases and its knowledge is very frequently required. Pluralsight has a fantastic “Introduction to SQL” course and Udemy offers a list of free SQL courses for beginners. Finally, SQLZoo is hands down THE best resource to practice SQL online without having to install anything on your computer. You just type in queries and see results in a side window.

    SQL :结构化查询语言在日常生活中不太有用,但至少“数据库”一词已不再是一个模糊的概念。 SQL是您用来“交谈”数据库的工具,非常需要它的知识。 Pluralsight开设了很棒的“ SQL入门 ”课程,Udemy 为初学者提供了免费SQL课程列表。 最终, SQLZoo成为了在线实践SQL的最佳资源,而无需在计算机上安装任何东西。 您只需输入查询,然后在侧面窗口中查看结果。

Image for post

I’ll sum up with Carl Sagan’s eloquent quote:

我将总结一下卡尔·萨根雄辩的话:

“We live in a society exquisitely dependent on science and technology, in which hardly anyone knows anything about science and technology”

“我们生活在一个极其依赖科学和技术的社会中,几乎没有人对科学和技术有任何了解”

Well said, Mr. Sagan! It is for this reason that I encourage EVERYONE to learn at least the command line, HTTP, and HTML to be digitally literate in this digital world.

好说,萨根先生! 出于这个原因,我鼓励每个人至少学习在这个数字世界中以数字方式学习数字的命令行,HTTP和HTML

If you master the above skills and the associated tools (takes longer), then you are already a Technical Test Engineer — a much more sought after level compared to a non-technical manual tester.

如果您掌握了上述技能和相关工具(需要更长的时间),那么您已经是技术测试工程师-与非技术手动测试人员相比,这是一个更加受追捧的水平。

编程技巧-一般 (Programming skills — general)

This is probably the biggest hurdle — plain programming in any of the popular languages. Which ones are those? Refer to TIOBE Index here. If you have no idea where to start, then trust me — skip C or C++ (unless you wish to invent a new Operating System) and pick either Java, C#, JavaScript, or Python. This is objectively good advice.

这可能是最大的障碍-使用任何一种流行语言进行简单编程。 那些是什么? 请参考此处的TIOBE索引 。 如果您不知道从哪里开始,请相信我-跳过C或C ++ (除非您希望发明一个新的操作系统),然后选择 Java ,C#, JavaScript Python 。 从客观上来说,这是一个很好的建议。

Image for post
Most popular programming languages
最受欢迎的编程语言

If you allow me a biased opinion — then I’d narrow it down to either Java (the most popular back-end language) or JavaScript (the most popular front-end language). Scan job sites to see what languages are most in-demand in your geographical area for SDET jobs. I’d be surprised if it’s not one of the four I mentioned. If you believe I’m wrong — please let me know.

如果您允许我发表偏见,请把它缩小为Java(最流行的后端语言)或JavaScript(最流行的前端语言)。 扫描作业站点,以了解您的地理区域中SDET作业最需要的语言。 如果不是我提到的四个之一,我会感到惊讶。 如果您认为我错了,请告诉我。

There are no shortcuts here, I’m afraid. Pick any online resource and expect to run a marathon (months), not a sprint (weeks).

恐怕这里没有捷径。 选择任何在线资源,并希望进行马拉松(数月),而不是短跑(数周)。

  • Pluralsight packages courses into Paths, such as Java Path or JavaScript Path, so the content is orderly and well structured. One major advantage is that Pluralsight carefully curates courses and does not allow low-quality content nor duplicates, so you don’t have to guess between a dozen near-identical courses.

    Pluralsight将课程打包到路径中,例如Java路径或JavaScript路径,因此内容井井有条且结构合理。 Pluralsight的一个主要优点是,Pluralsight会精心策划课程 ,并且不允许出现低质量的内容或重复的内容,因此您不必在十几个几乎完全相同的课程之间进行猜测。

  • Udemy is a very popular platform with countless courses. Here, you’ll have to separate the wheat from the chaff yourself and go through reviews to ensure you don’t waste your valuable time on low-quality videos. But you can pick up a gem for the price of one lunch.

    乌迪米 一个非常受欢迎的平台,提供无数课程。 在这里,您必须自己将小麦与谷壳分开,并进行评论,以确保您不会将宝贵的时间浪费在低质量的视频上。 但是您可以以一顿午餐的价格买到一颗宝石。

The journey does not stop after learning how to write basic computer instructions. The ten-thousand-hour rule to reach mastery is true in some sense — it’s not a scientifically accurate number, but rather a reminder that your learning and self-development journey will take years, not months.

学习如何编写基本的计算机指令后,旅程不会停止。 从某种意义上说,一万小时的规则要达到精通-这不是一个科学准确的数字,而是提醒您学习和自我发展的过程将需要数年而不是数月。

The good news is that JUNIOR positions exist for that very reason — you only need to know a certain minimum to get through the door, and you improve on the job.

好消息是,JUNIOR职位的存在正是出于这个原因-您只需要知道一定的最低限度即可上门,并且您可以改善工作。

Another piece of good news is that the entry threshold for Automation positions is generally a bit lower compared to traditional software developers. But you should strive to improve and catch up!

另一个好消息是,与传统软件开发人员相比,自动化职位的入门门槛通常较低。 但是您应该努力改善并赶上!

So the answer to the second question “Do I have to program as well as traditional software developers?” is:

因此,第二个问题的答案是“我必须像传统软件开发人员一样编程吗?” 是:

You have to learn how to program, yes, but the ask is generally lower for (at least junior) Automation Engineers. It’s compensated by the fact that you have to demonstrate testing skills too.

是的,您必须学习如何编程,但是对于(至少是初级)自动化工程师来说,要求通常较低。 您也必须展示测试技能,这弥补了这一点。

技术工具 (Technical tools)

I’d like to separately mention technical tools for you to avoid surprises. No one programs in Notepad and every modern project makes use of so-called “libraries” and “frameworks” (other people’s packaged up code) as well as a VCS (Version Control System) to track changes to code. This means that to contribute to a project, IN ADDITION to programming, you need to grasp the basics of:

我想单独提及一些技术工具,以免给您带来意外。 记事本中没有程序,每个现代项目都使用所谓的“库”和“框架”(其他人打包的代码)以及VCS(版本控制系统)来跟踪代码更改。 这意味着要为项目做出贡献,除了编程之外,您还需要掌握以下基本知识:

  • Any modern Integrated Development Environment or IDE (a glorified Notepad with a lot of bells and whistles)

    任何现代的集成开发环境或IDE(带有很多花哨功能的精美记事本)
  • At least 1 or 2 fundamental testing frameworks to help you write tests

    至少1或2个基本测试框架可帮助您编写测试

The above is enough to get started with a home pet project, but at work, you’ll also need:

以上内容足以开始家庭宠物项目,但在工作中,您还需要:

  • A Version Control System (VCS), such as Git. This means learning some concepts and about 10 specialized CLI commands to hit the ground running.

    版本控制系统(VCS),例如Git。 这意味着要学习一些概念以及大约10个专门的CLI命令以使您开始工作。
  • A build tool (Maven, Gradle, MSBuild, other). Don’t ask what it is now, but it makes your programming life much easier.

    生成工具(Maven,Gradle,MSBuild等)。 不要问现在是什么,但是它使您的编程工作变得更加轻松。

All of this means that there’s a relatively brief but frustrating period where you try to do one simple thing A, but “oh, you first need to install tool B, and execute the command C, and then do the D thing, and THEN you’re all set to finally do A”. You try to take a step forward, but learn that you have to first take two steps back.

所有这些都意味着在一个相对短暂但令人沮丧的时期内,您尝试做一件简单的事情A,但是“哦,您首先需要安装工具B,执行命令C,然后再做D事情,然后您所有的人都准备好去做A” 。 您尝试向前迈出一步,但了解到必须先向后迈出两步。

Image for post

It’s a bit like learning to drive a car: you just want to move forward, but you have to figure out which pedal is which, and how do I twist this manual gearbox thing? And oh, was I supposed to look into the rear mirror before driving off?

这有点像学习驾驶汽车:您只想向前走,但是您必须弄清楚哪个踏板是哪个,以及如何扭转手动变速箱的东西? 哦,我应该在开车前看一下后视镜吗?

To this, I can only say one thing in big letters: HANG IN THERE!

为此,我只能大声地说一件事: 挂在里面!

This phase will pass, all the pieces will fall into place and your workflow will become smooth. Just keep at it! Your brain is a wonderful learning machine.

这个阶段将过去,所有环节都将落到位,您的工作流程将变得流畅。 只要坚持下去! 您的大脑是一个很棒的学习机器。

测试自动化技能 (Test Automation skills)

This article is already a bit long, so I will just mention that Test Automation has its unique challenges that require specific skills. Apart from specific tools and frameworks, there are fundamental principles that must be learned and followed to produce high-quality work.

本文已经有点长了,所以我只想提一下Test Automation有其独特的挑战,需要特定的技能。 除了特定的工具和框架之外,还必须学习并遵循一些基本原则才能生成高质量的作品。

These principles have been perfectly summed up by agileinaflash blog authors in these acronyms: FIRST, BICEP, CORRECT.

这些原则已经由agileinaflash博客作者以以下首字母缩写完美地概括了:FIRST,BICEP,CORRECT。

The authors explain how software developers should apply these concepts to unit tests in their “Pragmatic Unit Testing in Java 8 with JUnit” book, but Automation Engineers typically write all kinds of tests, except unit tests.

作者在其“ 使用JUnit的Java 8中的实用单元测试 ”一书中解释了软件开发人员应如何将这些概念应用于单元测试,但是自动化工程师通常会编写除单元测试以外的所有类型的测试。

For this reason, I’ve created a course “Fundamentals of Test Automation in Java” where I explain and apply these concepts to a whole variety of functional tests.

因此,我创建了一个课程“ Java中的测试自动化基础知识 ”,在其中我将解释这些概念并将其应用于各种功能测试。

结论 (Conclusion)

  • Yes, you can become a SDET.

    是的,您可以成为SDET。
  • No, a 3-year Computer Science degree is not a must (but a nice to have).

    不,三年制计算机科学学位不是必须的(但很高兴拥有)。
  • Yes, you can become a self-taught SDET, but you have to put in the work, and it won’t happen overnight. Regardless of the outcome, whatever you learn in the process — you will become a smarter person, and at least some skills will make you a more tech-savvy computer user.

    是的,您可以成为自学成才的SDET,但是您必须投入工作,而且它不会一overnight而就。 不管结果如何,无论您在过程中学到什么,您都将变得更聪明,并且至少某些技能将使您成为更精通技术的计算机用户。

Good luck!

祝好运!

Image for post

This article is part of the “Tales of an opinionated SDET” series. Andrejs Doronins is a professional Test Automation Engineer and a Pluralsight course author. If you wish to learn test automation — check out my courses — a free trial will give you access to them and the entire library of 7000+ other courses.

本文是“ SDET故事集”系列的一部分。 Andrejs Doronins是一名专业的测试自动化工程师,也是Pluralsight课程的作者 。 如果您想学习自动化测试-请查看我的课程- 免费试用将使您可以访问它们以及7000多种其他课程的整个库。

翻译自: https://medium.com/javarevisited/so-you-want-to-become-a-test-automation-engineer-16cad0db257c

自动化测试工程师

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值