自动化测试工程师_所以你想成为一名测试自动化工程师
自動化測試工程師
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)法:
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:
在某種程度上,合適的自動化工程師應該位于此維恩圖的中間:
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的最佳資源,而無需在計算機上安裝任何東西。 您只需輸入查詢,然后在側面窗口中查看結果。
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 。 從客觀上來說,這是一個很好的建議。
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” 。 您嘗試向前邁出一步,但了解到必須先向后邁出兩步。
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!
祝好運!
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
自動化測試工程師
總結
以上是生活随笔為你收集整理的自动化测试工程师_所以你想成为一名测试自动化工程师的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 微信请求超时_java – S
- 下一篇: 不同CPU的MATLAB性能表现的简单对