📝 ГАЙД: Как вкатиться в автоматизацию тестирования?

Вроде в проде
9 min readAug 23, 2022

Привет! 👋🏼

Мы уже выпустили ГАЙД: Как вкатиться в тестирование?

Настало время узнать, что же вам придется изучить, чтобы стать QA Automation!

В этом гайде вы найдете список всех важных тем, вместе с ссылками на проверенные и чаще всего бесплатные материалы, советы по подготовке к собесу и сообщества QA Automation специалистов. Погнали!

📹 Видео с разбором гайда

Содержание

📝 Кратко о том, что предстоит изучить

👩‍🎓 Подготовка к интервью

🏡 Погружение в коммьюнити

🕊️ Напутствие

📝 Кратко о том, что предстоит изучить

Все темы разбиты по уровням:

1️⃣ — нужно знать всем

2️⃣ — чуть посложнее, но тоже лучше знать

3️⃣ — сложно, но это позволит вам быть очень конкурентноспособным/ой

1️⃣ Теория тестирования

Многие начинающие специалисты уверены, что QA Automation — это только про программирование, а не про проектирование тест-кейсов, составление тест планов и многие другие задачи, которые выполняет Manual QA. Это совсем не так. Действительно, существуют вакансии, где QA Automation Engineer пишет автотесты по готовым сценариям, но общая тенденция такова, что QA Automation Engineer — это, в первую очередь, QA Engineer. Поэтому оправляем вас в ГАЙД: Как вкатиться в тестирование?

💻 Программирование

Второй ключевой навык автоматизатора/ки — программирование. Умение программировать включает в себя множество разнообразных навыков: знание языка программирования, основ проектирования, многопоточности и различных библиотек тестирования.

Далее я перечислю основные темы, которые позволят вам стать конкурентноспособным специалистом/кой на рынке и помогут не наступать на чужие грабли.

Язык программирования

Первый вопрос, который у вас возникнет — какой язык программирования выбрать?

💡 Моя рекомендация — не застревайте на этом вопросе слишком долго — учите то, что ближе всего к вашим критериям (какой ЯП используется у вас на работе, основы чего вы уже знаете, какой язык вам больше нравится). Если речь, конечно же, не о совсем редких языках типо Rust.

Dev Ecosystem, Testing, 2021

Давайте посмотрим на статистику по Dev Ecosystem за 2021 год. Самые популярные ЯП для автоматизации — JavaScript, Java и Python. Это значит, что выбрав эти языки, вы точно найдёте себе работу. Более того, опытный автоматизатор зачастую использует несколько ЯП на работе, поэтому ваши знания точно не пропадут.

Преимущество изучения Java как первого ЯП — низкоуровневость, в Java вы будете детально расписывать команды, от этого вам будет понятнее, как устроен язык.

В Python — наоборот, вы будете использовать высокоуровневые команды, отчего быстрее начнете программировать, но будете хуже понимать, а что происходит под капотом.

📚 Материалы по изучению ЯП

Крайне рекомендую совмещать разные виды информации — например, проходить курс, параллельно решать задачки и параллельно закреплять информацию, читая учебник.

JavaScript

Java

Python

Kotlin

  • 1️⃣ Самое главное место для теории — документация
  • 2️⃣ Хороший курс Kotlin можно пройти на JetBrains Academy
  • 2️⃣ Порешать задачки на Kotlin можно на “Kotlin Koans”
  • 1️⃣ Книга “Kotlin in action” от разработчиков языка Жемерова Д. & Исаковой С.

🏫 Базовый Computer Science

Помимо самого языка программирования важно знать некоторые базовые основы, которые распространяются на разные языки программирования и отвечают на следующие вопросы:

  • 1️⃣ Как можно программировать? Существуют различные парадигмы программирования — это набор идей и понятий, которые определяют стиль написания программ, подход к программированию.
  • 1️⃣ Как моделировать наш мир в рамках языка программирования? Здесь вам поможет изучение объектно-ориентированного программирования и его четырех принципов: полиморфизм, инкапсуляция, наследование и абстракция.
  • 2️⃣ Какие существуют общие принципы написания кода? Есть общие рекомендации, как писать код. Например, самые известные из них: SOLID, KISS, DRY.
  • 2️⃣ Как писать легко поддерживаемый и масштабируемый код? Чем больше наша система тестов, тем тяжелее менять ее структуру и поддерживать легкое расширение, когда мы решили добавить ещё один тест. Чтобы не писать спагетти-код (сильно запутанный, тяжело поддерживаемый код), вам необходимо знать шаблоны проектирования — правила “разруливания” сложных ситуаций в коде.
  • 2️⃣ Как выбирать способ хранения данных? В автоматизации мы зачастую работаем с большими тестовыми данными, поэтому важно различать способы хранения данных и понимать, сколько мы времени тратим на разные операции по взаимодействию данных. Тут нам помогут структуры данных.
  • 3️⃣ Как писать эффективный код? Помимо хранения данных, другая частая проблема автоматизации — скорость прохождения тестов. Чтобы писать быстрый код, важно уметь “считать скорость кода” и владеть базовыми алгоритмами (готовыми шаблонами, как быстро решить задачу).

💡 Если вдруг на этом месте вам стало не по себе, как много всего нужно знать — не переживайте! Никто не будет спрашивать у вас все эти темы (тем более глубоко) на первом собеседовании. Но вам важно помнить — чтобы стать действительно продвинутым QA Automation — важно уметь хорошо писать код.

📚 Материалы по Computer Science

3️⃣ Алгоритмы и структуры данных

3️⃣ System Design

🌐 Web-технологии

Одна из самых популярных задач для QA инженеров — тестирование web приложений. Поэтому критически важно знать, как выглядит классическое web приложение, из каких частей оно состоит и как взаимодействуют эти части. Помимо представления, как архитектурно веб-сайт устроен внутри, вам необходимо знать особенности тестирования разных частей — UI тестирования (HTML, CSS, XPath, JS) и API тестирования (структура HTTP-запроса и модель OSI).

📚 Материалы по Web-технологиям

📖 Библиотеки автотестирования

Существует огромное количество библиотек тестирования, которые вы можете увидеть в требованиях в вакансиях. Эти библиотеки позволяют переиспользовать уже написанный код для типовых задач автотестирования. Их знание позволяет вам быстро писать автотесты и не перепридумывать новые велосипеды. Разберем самые популярные из них.

JavaScript

  • Cypress — удобный фреймворк для UI и API снепшот, интеграционного и E2E тестирования. Позволяет в интерактивном формате следить за прохождением автотеста. Огромный плюс — быстрая скорость прохождения тестов и вcтроенные ожидания.
  • Playwright — E2E тестирование web-приложений.
  • Puppeteer — библиотека для API и UI тестирования в headless режиме.
  • Jasmin — BDD фреймворк без доп. прослоек в виде других фреймворков.
  • Mocha — библиотека тестирования на NodeJS, поддерживает асинхронность тестов.
  • Jest — простой и лаконичный фреймворк для тестирования на JS.
  • Enzyme — библиотека для удобного тестирования React компонентов.
  • Sinon.js — готовые моки и заглушки для тестов на JS.
  • Chai — библиотека ассертов для TDD / BDD.

Python

  • Pytest — самая популярный фреймворк запуска тестов.
  • Selenium — библиотека для UI тестирования.
  • Requests — библиотека для HTTP запросов.
  • Robot Framework — библиотека для BDD подхода.

Java, Kotlin

  • JUnit5, TestNG — фреймворки запуска тестов.
  • Selenium и Selenide (обертка над Selenium, удобнее в использовании) — библиотеки UI тестирования.
  • RestTemplate, Retrofit, RestAssured (самая популярная) — библиотеки Rest API тестирования.
  • AssertJ, Hamcrest — библиотеки удобных асертов.
  • Jacoco — оценка покрытия юнит и интеграционных тестов.
  • Swagger API Coverage — оценка покрытия RestAssured тестов по документации openapi.
  • Allure — репортинг результатов тестирования.

📚 Материалы по библиотекам тестирования

Для любого стека

JavaScript

Python

Java, Kotlin

🍀 Git

Переходя к инструментам, один из базовых навыков любого программиста — умение грамотно хранить код и поддерживать полную историю изменений. Для этого существует система контроля версий (VCS), которая хранит всю историю кода.

📚 Материалы по Git

🏎 CI / CD

Непрерывная интеграция (CI) подразумевает разработку автоматических процессов выкладывания продукта “в мир” (в продакшн). Когда вы научитесь писать тесты и возможно, подумаете, что самое важное позади — это не совсем так. Один из самых важнейших этапов автоконтроля качества — автоматические проверки, упали ли тесты на разных этапах разработки и релизного процесса.

Подтемы вам понадобятся, чтобы освоить внедрение автотестов в CI/CD:

Linux (Bash / Shell)

Чтобы реализовывать скрипты (последовательные запуски разных команд), вам необходимо знать одну из оболочек Bash или Shell. По сути эти команды дублируют то, что вы обычно делаете через юзер интерфейс (открываете файловый менеджер, создаете папки и файлы, переименовываете и перезаписываете и тд), только через вызов команд в консоли.

Docker

В современном автотестировании докеризация используется повсеместно. Она необходима для того, чтобы изолировать окружение для наших тестов или продукта и запускать их внутри “отдельного компьютера”, где будут все необходимые библиотеки для запуска.

Концепция Quality Gates (ворота качества)

Для того, чтобы эффективно управлять CI и использовать возможность автоматических проверок, вам нужно освоить концепцию Quality Gates. Её суть в подготовке разных метрик (например, процент покрытия кода) и требований, чтобы эти метрики выполнялись. Если эти метрики не выполняются — мы закрываем наши “ворота” и не даем фиче отправиться в мир (продакшн).

📚 Материалы по СI / CD

🧺 SQL

Какое вы бы приложение не тестировали, вероятность, что у этого приложения есть база данных, очень высока (где еще данные хранить 🙂). Поэтому знать язык запросов в базу данных даже на самом базовом уровне очень важно.

📚 Материалы по SQL

👩‍🎓 Подготовка к интервью

Подготовка к собеседованию — на 50% залог успеха (процент посчитан на глаз 😁), поэтому этому этапу стоит уделить пристальное внимание и не надеяться на удачу.

Хорошая новость — интервьюеры не особо изобретательны и зачастую вопросы повторяются из раза в раз. Где найти эти сборники вопросов?

💡 Гуглите “топ вопросов junior <ваш ЯП> developer” и перечитывайте вопросы, репетируйте вслух ответы, проверяйте себя. Чем больше вопросов вы заранее разберёте, тем выше вероятность, что на собесе вопросы вас не удивят.

💡 Смотрите видео собеседований в фоне каждый день, чтобы постепенно запоминать правильные ответы, привыкать к терминам и способам объяснения.

🏡 Погружение в коммьюнити

Освоение новой профессии — это ОЧЕНЬ сложный путь, но! Внутри коммьюнити очень много людей, которые готовы вам помочь и поддержать. Вступайте в сообщества, слушайте подкасты, погружайтесь в среду. Сначала многое будет не понятно, но постепенно вы послушаете разные интерпретации терминов от разных специалистов и со временем придет понимание и пройдет адаптация.

Одни из тёплых ресурсов, что я могу рекомендовать:

🕊️ Напутствие

Что ж, начинающий/ая QA Automation, теперь у тебя есть план, а это уже очень много!

Путь будет сложный и тернистый, но многие специалисты его прошли, а значит, получится и у тебя. Помни, что любую проблему можно загуглить или когда все совсем плохо, завести твиттер и начать громко просить о помощи, кто-то из коммьюнити обязательно придёт!

❓ Также у нас есть твиттер Вроде в проде и мой аккаунт, где всегда можно задать вопрос.

Удачи! 🙌

--

--