📝 ГАЙД: Как вкатиться в автоматизацию тестирования?
Привет! 👋🏼
Мы уже выпустили ГАЙД: Как вкатиться в тестирование?
Настало время узнать, что же вам придется изучить, чтобы стать QA Automation!
В этом гайде вы найдете список всех важных тем, вместе с ссылками на проверенные и чаще всего бесплатные материалы, советы по подготовке к собесу и сообщества QA Automation специалистов. Погнали!
Содержание
📝 Кратко о том, что предстоит изучить
- 1️⃣ Теория тестирования
- 💻 Программирование
- 🏫 Базовый Computer Science
- 🌐 Web-технологии
- 📖 Библиотеки автотестирования
- 🍀 Git
- 🏎 CI / CD
- 🧺 SQL
🕊️ Напутствие
📝 Кратко о том, что предстоит изучить
Все темы разбиты по уровням:
1️⃣ — нужно знать всем
2️⃣ — чуть посложнее, но тоже лучше знать
3️⃣ — сложно, но это позволит вам быть очень конкурентноспособным/ой
1️⃣ Теория тестирования
Многие начинающие специалисты уверены, что QA Automation — это только про программирование, а не про проектирование тест-кейсов, составление тест планов и многие другие задачи, которые выполняет Manual QA. Это совсем не так. Действительно, существуют вакансии, где QA Automation Engineer пишет автотесты по готовым сценариям, но общая тенденция такова, что QA Automation Engineer — это, в первую очередь, QA Engineer. Поэтому оправляем вас в ГАЙД: Как вкатиться в тестирование?
💻 Программирование
Второй ключевой навык автоматизатора/ки — программирование. Умение программировать включает в себя множество разнообразных навыков: знание языка программирования, основ проектирования, многопоточности и различных библиотек тестирования.
Далее я перечислю основные темы, которые позволят вам стать конкурентноспособным специалистом/кой на рынке и помогут не наступать на чужие грабли.
Язык программирования
Первый вопрос, который у вас возникнет — какой язык программирования выбрать?
💡 Моя рекомендация — не застревайте на этом вопросе слишком долго — учите то, что ближе всего к вашим критериям (какой ЯП используется у вас на работе, основы чего вы уже знаете, какой язык вам больше нравится). Если речь, конечно же, не о совсем редких языках типо Rust.
Давайте посмотрим на статистику по Dev Ecosystem за 2021 год. Самые популярные ЯП для автоматизации — JavaScript, Java и Python. Это значит, что выбрав эти языки, вы точно найдёте себе работу. Более того, опытный автоматизатор зачастую использует несколько ЯП на работе, поэтому ваши знания точно не пропадут.
Преимущество изучения Java как первого ЯП — низкоуровневость, в Java вы будете детально расписывать команды, от этого вам будет понятнее, как устроен язык.
В Python — наоборот, вы будете использовать высокоуровневые команды, отчего быстрее начнете программировать, но будете хуже понимать, а что происходит под капотом.
📚 Материалы по изучению ЯП
Крайне рекомендую совмещать разные виды информации — например, проходить курс, параллельно решать задачки и параллельно закреплять информацию, читая учебник.
JavaScript
- 1️⃣ Вводный курс по JS
- 2️⃣ Курсы по верстке, фронту и тд на CodeAcademy
- 1️⃣ Сайт-учебник Learn JavaScript
Java
- 1️⃣ Базовый Java курс от Computer Science Center
- 1️⃣ Интерактивное решение задач https://javarush.ru/
- 1️⃣ Книга для начинающих “Head First Java / Изучаем Java”
- 2️⃣ Книга посложнее “Java Библиотека профессионала. Том 1. Основы” | Хорстманн Кей
Python
- 1️⃣ Самое главное место для теории — документация
- 1️⃣ Интерактивный курс на русском языке: Python Tutor
- 1️⃣ Курс Python для начинающих от Сергея Балакирева
- 1️⃣ Курс для начинающих от Института биоинформатики
- 2️⃣ Если хочется еще материала — можно почитать “A Byte of 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
- 2️⃣ Общая база для старта — гарвардский курс «CS50. Основы программирования» на русском языке, либо проходите в оригинале на английском
- 1️⃣ Парадигмы программирования — статья с примерами на JavaScript
- 1️⃣ ООП — неплохая статья с псевдокодом, JavaScript примеры
- 2️⃣ Принципы написания кода — книги “Совершенный код”, Макконнелл Стив и “Чистый код” Мартин Роберт К.
- 2️⃣ Шаблоны проектирования для маленьких — Head First. Паттерны проектирования. Бейтс Берт, Сиерра Кэти, библиотека паттернов в Refactoring.Guru с примерами на разных ЯП
3️⃣ Алгоритмы и структуры данных
- Русскоязычный курс по алгоритмам и структурам данных от Computer Science Center.
- Более расширенный курс, если хотите закопаться в алгоритмы — Специализация Структуры и алгоритмы данных на Coursera.
- Книга для подготовки к алгоритмической части собеседования — “Грокаем алгоритмы” Бхаргава Адитья
3️⃣ System Design
- Классика — книжка с кабанчиком “Designing Data-Intensive Applications”, Martin Kleppmann
- Книга для подготовки к System Design интервью System Design Interview by Alex Xu
- Разбор вышеупомянутых книг по главам на русском YouTube канале { Между скобок }
🌐 Web-технологии
Одна из самых популярных задач для QA инженеров — тестирование web приложений. Поэтому критически важно знать, как выглядит классическое web приложение, из каких частей оно состоит и как взаимодействуют эти части. Помимо представления, как архитектурно веб-сайт устроен внутри, вам необходимо знать особенности тестирования разных частей — UI тестирования (HTML, CSS, XPath, JS) и API тестирования (структура HTTP-запроса и модель OSI).
📚 Материалы по Web-технологиям
- 1️⃣ Клиент-серверная архитектура: статья для самых маленьких, видео.
- 2️⃣ Общий курс по сетям Андрея Созыкина (модель OSI)
- 1️⃣ Курс по web-технологиям для начинающих
- 1️⃣ HTTP спецификация, особенно глава Method Definitions.
- 3️⃣ Книга “Компьютерные сети. Принципы, технологии, протоколы.” Олифер
📖 Библиотеки автотестирования
Существует огромное количество библиотек тестирования, которые вы можете увидеть в требованиях в вакансиях. Эти библиотеки позволяют переиспользовать уже написанный код для типовых задач автотестирования. Их знание позволяет вам быстро писать автотесты и не перепридумывать новые велосипеды. Разберем самые популярные из них.
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 — репортинг результатов тестирования.
📚 Материалы по библиотекам тестирования
Для любого стека
- Test Automation University с классными курсами по автоматизации
- Куча курсов на Udemy — оценивать можно по отзывам
JavaScript
- 1️⃣ Cypress: документация по Cypress, как писать Page Object, короткий практический курс, воркшоп с примерами кода, тестирование доступности с Cypress
Супер воркшоп по Cypress от Xebia - 1️⃣ Jest: вводный курс
- 2️⃣ Puppeteer: документация, туториалы
Python
Java, Kotlin
- 1️⃣ База про архитектуру UI тестов
- 1️⃣ Неплохой пример с Cucumber, TestNG и RestAssured
- 1️⃣ Воркшоп по RestAssured
- 1️⃣ Примеры с Selenide из документации
- 2️⃣ Retrofit пример (не идеально написанный)
- 1️⃣ Практика тестирования бэкенда на Java + Rest-Assured
- 1️⃣ Kotlintest и его возможности
🍀 Git
Переходя к инструментам, один из базовых навыков любого программиста — умение грамотно хранить код и поддерживать полную историю изменений. Для этого существует система контроля версий (VCS), которая хранит всю историю кода.
📚 Материалы по Git
- 1️⃣ Статья “Как научить людей использовать Git”
- 1️⃣ Гайд по Git
- 1️⃣ Интерактивный тренажер GitExplorer — помогает найти нужную команду в формате “я хочу сделать <то-то> с <тем-то>”
- 1️⃣ Туториал Learning Git Branching
🏎 CI / CD
Непрерывная интеграция (CI) подразумевает разработку автоматических процессов выкладывания продукта “в мир” (в продакшн). Когда вы научитесь писать тесты и возможно, подумаете, что самое важное позади — это не совсем так. Один из самых важнейших этапов автоконтроля качества — автоматические проверки, упали ли тесты на разных этапах разработки и релизного процесса.
Подтемы вам понадобятся, чтобы освоить внедрение автотестов в CI/CD:
Linux (Bash / Shell)
Чтобы реализовывать скрипты (последовательные запуски разных команд), вам необходимо знать одну из оболочек Bash или Shell. По сути эти команды дублируют то, что вы обычно делаете через юзер интерфейс (открываете файловый менеджер, создаете папки и файлы, переименовываете и перезаписываете и тд), только через вызов команд в консоли.
Docker
В современном автотестировании докеризация используется повсеместно. Она необходима для того, чтобы изолировать окружение для наших тестов или продукта и запускать их внутри “отдельного компьютера”, где будут все необходимые библиотеки для запуска.
Концепция Quality Gates (ворота качества)
Для того, чтобы эффективно управлять CI и использовать возможность автоматических проверок, вам нужно освоить концепцию Quality Gates. Её суть в подготовке разных метрик (например, процент покрытия кода) и требований, чтобы эти метрики выполнялись. Если эти метрики не выполняются — мы закрываем наши “ворота” и не даем фиче отправиться в мир (продакшн).
📚 Материалы по СI / CD
- 1️⃣ Тест на знание Bash (как выучить — гуглить команду, пробовать на практике)
- 1️⃣ Курс по Docker для начинающих
- 2️⃣ Статья про Docker и Docker compose
- 2️⃣ Документация Kubernetes
- 1️⃣ Что такое CI / CD для маленьких
- 2️⃣ Статья и воркшоп СI / CD глазами тестировщика GitLab CI
🧺 SQL
Какое вы бы приложение не тестировали, вероятность, что у этого приложения есть база данных, очень высока (где еще данные хранить 🙂). Поэтому знать язык запросов в базу данных даже на самом базовом уровне очень важно.
📚 Материалы по SQL
- 1️⃣ Уроки SQL для маленьких от Андрея Созыкина
- 1️⃣ Интерактивный тренажер по SQL
- 2️⃣ Учебник SQL от Сергея Моисеенко
- 2️⃣ Упражнения по SQL
👩🎓 Подготовка к интервью
Подготовка к собеседованию — на 50% залог успеха (процент посчитан на глаз 😁), поэтому этому этапу стоит уделить пристальное внимание и не надеяться на удачу.
Хорошая новость — интервьюеры не особо изобретательны и зачастую вопросы повторяются из раза в раз. Где найти эти сборники вопросов?
- Видео от меня, как найти лучший оффер и какие технические вопросы могут вам встретиться.
- Python: Вопросы к QA Automation
- Java: Junior QA Automation вопросы, Java вопросы посложнее
- Selenium: Топ 100 вопросов по Selenium
- Тестирование API: что должен знать тестировщик
- Куча видео публичных собеседований QA на канале Вадима Ксендзова
💡 Гуглите “топ вопросов junior <ваш ЯП> developer” и перечитывайте вопросы, репетируйте вслух ответы, проверяйте себя. Чем больше вопросов вы заранее разберёте, тем выше вероятность, что на собесе вопросы вас не удивят.
💡 Смотрите видео собеседований в фоне каждый день, чтобы постепенно запоминать правильные ответы, привыкать к терминам и способам объяснения.
🏡 Погружение в коммьюнити
Освоение новой профессии — это ОЧЕНЬ сложный путь, но! Внутри коммьюнити очень много людей, которые готовы вам помочь и поддержать. Вступайте в сообщества, слушайте подкасты, погружайтесь в среду. Сначала многое будет не понятно, но постепенно вы послушаете разные интерпретации терминов от разных специалистов и со временем придет понимание и пройдет адаптация.
Одни из тёплых ресурсов, что я могу рекомендовать:
- Конечно же, наш подкаст “Вроде в проде”
- Telegram каналы прекрасных тестировщиц: Testing и Life, Yet another QA, Short QA Ideas.
- YouTube каналы: Alex Pshe, Artem Rusau, Oleh Pendrak.
- Чат для QA Juniors и закрытый чат для тестировщиц QA Sisters.
🕊️ Напутствие
Что ж, начинающий/ая QA Automation, теперь у тебя есть план, а это уже очень много!
Путь будет сложный и тернистый, но многие специалисты его прошли, а значит, получится и у тебя. Помни, что любую проблему можно загуглить или когда все совсем плохо, завести твиттер и начать громко просить о помощи, кто-то из коммьюнити обязательно придёт!
❓ Также у нас есть твиттер Вроде в проде и мой аккаунт, где всегда можно задать вопрос.
Удачи! 🙌