Rusau LearnВойти

Автоматизация тестирования

Автоматизация тестирования: с чего начать и как перейти из ручного

Автоматизация тестирования – это проверки, которые вместо человека проходит программа: она выполняет сценарий и сравнивает результат с ожидаемым. Начинают её с базы ручного тестирования и тест-дизайна, затем учат один язык программирования (чаще всего Java, Python или JavaScript), фреймворк автоматизации и его паттерны, разбираются в пирамиде тестирования и CI/CD. На проекте переход обычно начинается с того, что тестировщик предлагает команде автоматизировать самое рутинное, то есть регресс и смоук.

Мой видеоурок: Автоматизация тестирования. С чего начать и как перейти?Открыть на YouTube
Сначала база
тест-дизайн и документация нужны и в автотестах
Java, Python, JS
самые востребованные языки для автотестов, по моей оценке
Регресс и смоук
их автоматизируют в первую очередь

Путь по шагам

  1. Шаг 1

    База ручного тестирования

    Теория, техники тест-дизайна, тестовая документация и базовые инструменты. На курсах автоматизации эту часть часто сжимают до пары уроков, и её стоит добрать отдельно.

    Открыть
  2. Шаг 2

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

    Java, Python или JavaScript, с оглядкой на вакансии в своей стране. Для автотестов хватает основ: переменные и типы данных, методы и функции, циклы, классы и ООП.

  3. Шаг 3

    Фреймворк автоматизации

    Готовая библиотека, в которой типовые действия уже описаны методами: pytest для Python, Selenium для разных языков, Cypress или Playwright для JavaScript.

  4. Шаг 4

    Паттерны автоматизации

    Правила, как устроить код автотестов, чтобы его можно было поддерживать. Самый известный из них – Page Object.

  5. Шаг 5

    Тесты разных уровней и пирамида

    API- и интеграционные тесты, тесты интерфейса и end-to-end для веба, мобильных или десктопных приложений. Пирамида тестирования подсказывает, каких тестов должно быть больше.

    Открыть
  6. Шаг 6

    CI/CD и отчёты

    Автотесты запускают в конвейере: настраивают джобы в Jenkins или похожем инструменте, собирают отчёты и разбирают падения.

    Открыть

Чем заняты ручной тестировщик и автоматизатор

Ручной тестировщик пишет чек-листы и тест-кейсы, которые читает человек, проходит проверки по ним и заводит баг-репорты на найденные дефекты. Инструменты у него готовые и с интерфейсом: он смотрит фронтенд в браузере, отправляет запросы к базе данных, проверяет API в Postman и иногда пишет там простые автотесты. По моему опыту, документации в этой работе много.

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

Юнит-тесты и часть интеграционных пишут сами разработчики, иногда ещё до кода, если команда работает по TDD (разработка через тестирование). Автоматизировать всё подряд нельзя. Удобство интерфейса оценивает человек, а автотест проверяет ровно то, что в него заложили.

Почему начинают с ручного тестирования

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

Тест-дизайн нужен и внутри автотеста. Для сценария подбирают набор тестовых данных по техникам тест-дизайна, чтобы тестов хватало для вывода о том, что функция работает, и при этом не было лишних. Шаги и ожидаемый результат в коде автотеста повторяют тест-кейс. Например, если в интернет-магазине доставка бесплатна от 3000 рублей, параметризованный автотест берёт суммы 2999, 3000 и 3001. Это граничные значения, и десяток случайных сумм к ним ничего не добавит.

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

Какой язык программирования выбрать

Я выделяю три востребованных языка: Java, Python и JavaScript. Java и Python давно популярны в автоматизации, на Java автотесты пишут дольше всех, и учить её сложнее. Python и JavaScript осваивать проще, а JavaScript в автотестах набирает популярность. Подойдёт любой из трёх, но перед выбором стоит посмотреть вакансии: в разных странах преобладают разные языки, и узкое направление вроде автоматизации на Ruby сузит выбор работы.

Часто советуют писать автотесты на том же языке, что и сам проект. Код тогда проще поддерживать и разработчику, и тестировщику, но это не обязательное условие, и приложение на Java вполне можно проверять тестами на Python.

Язык – это инструмент, его меняют от проекта к проекту, и второй язык после первого даётся заметно легче. На старте хватает основ: переменные и типы данных, методы и функции, циклы, классы и принципы ООП. Переусложнять автотесты циклами и хитрой логикой не стоит, иначе для самих автотестов понадобятся свои тесты.

Фреймворк, паттерны и пирамида тестов

Знать язык для автотестов мало. Поверх него идёт фреймворк автоматизации, то есть библиотека, где типовые действия уже описаны готовыми методами: открыть страницу, нажать кнопку, сравнить значение. В Python тесты запускает pytest, а действия в браузере выполняют подключённые к нему Selenium или Playwright, для JavaScript есть Cypress и Playwright, а Selenium работает с Java и другими языками. На проекте фреймворк собирают под себя из таких библиотек и средств самого языка, и новичок подстраивается под то, что уже есть.

Следующий слой – паттерны автоматизации, правила устройства кода тестов. Самый известный из них, Page Object, собирает все элементы одной страницы в один файл, и тесты берут их оттуда. Паттернов много, и какие нужны, зависит от фреймворка и проекта. В тестах интернет-магазина вход встречается в каждом сценарии с корзиной и заказом. Если разработчики поменяли идентификатор кнопки "Войти", с Page Object локатор правят в одном классе страницы входа, а без него придётся править каждый тест, где он записан. Сюда же относятся параметризованные тесты, когда один сценарий прогоняют на наборе данных.

Дальше разбираются, какие тесты писать. Юнит-тесты обычно пишут разработчики, а автоматизатору остаются интеграционные и API-тесты, тесты графического интерфейса и end-to-end. По пирамиде тестирования быстрых нижних тестов должно быть больше всего, а медленных тестов интерфейса меньше всего. Начинать автоматизацию с тестов интерфейса на проекте, где нет юнит-тестов, – частая ошибка. Рядом стоит подход shift left, при котором тестировщики и автоматизаторы подключаются к работе как можно раньше.

Последний шаг – CI/CD. Автоматизатору уже мало нажать "Собрать" в Jenkins. Он сам настраивает джобы, которые разворачивают автоматизацию на проекте и запускают автотесты, и разбирает их отчёты.

Как начать автоматизацию на своём проекте

Учиться автоматизации проще всего на работе. Стоит поговорить с командой и предложить, что можно автоматизировать. Обычно это регрессионные и смоук-тесты, самые рутинные и долгие. Говорить при этом стоит про деньги: бизнесу важно, сколько он сэкономит и насколько быстрее и проще пойдут релизы.

Допустим, ручной смоук личного кабинета банка занимает у тестировщика два часа, а релизы выходят каждую неделю. Если те же проверки запускаются в Jenkins после каждой сборки, эти часы уходят на новую функциональность, а сломанный вход или перевод виден в отчёте сразу после сборки.

Если компания заинтересована, она поможет разработчиками и менторами, материалами и книгами, иногда оплатит курс. На настоящем проекте учиться выгоднее, чем на учебном, но интересы должны совпасть у вас, работодателя и заказчика, потому что за счёт заказчика учить никого не станут. О возможности автоматизировать стоит спросить ещё на собеседовании.

Автоматизация удешевляет тестирование в будущем, ускоряет процессы и повышает качество продукта, но и она не панацея. Иногда вводить её незачем.

  • Короткий проект

    Автотесты не успеют окупить время, потраченное на их написание.

  • Ранняя стадия, когда требования часто меняются

    Автотесты придётся переписывать вслед за каждым изменением.

  • Проверки, которые не автоматизируются

    Удобство интерфейса (usability) оценивает человек, и автотест здесь не поможет.

Видеоуроки, шпаргалки и задания

В ролике "Автоматизация тестирования. С чего начать и как перейти?" я отвечаю на вопрос подписчика и рисую порядок изучения на доске. Сам я не автоматизатор: план составлен по пройденному курсу автоматизации и по работе рядом с автоматизаторами. О том, чем заняты ручные тестировщики и автоматизаторы, какой язык выбрать и куда расти дальше, я говорю на стриме "Автоматизация и ручное тестирование" с коллегой, которая сама писала автотесты.

В бесплатном базовом курсе по тестированию автотесты встречаются в уроке "CI/CD для тестировщика + демо в Jenkins": там они запускаются в конвейере, а после теории есть задания. Шпаргалка по пирамиде показывает, как разложить проверки по уровням, а в шпаргалке по скриптам Postman собраны готовые проверки ответа, с которых удобно начать первые автотесты.

Курсы по теме

Вопросы и ответы

С чего начать изучение автоматизации тестирования?

С базы ручного тестирования: теории, тест-дизайна и документации. Затем выбрать язык программирования (чаще Java, Python или JavaScript) и выучить его основы, освоить фреймворк автоматизации и паттерны вроде Page Object, разобраться в пирамиде тестирования и в том, как автотесты запускаются в CI/CD.

Можно ли сразу пойти в автоматизацию без опыта ручного тестирования?

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

Какой язык программирования выбрать для автотестов?

Чаще всего выбирают Java, Python или JavaScript. Python и JavaScript осваивать проще, Java сложнее, но на ней написано много проектов автоматизации. Перед выбором стоит посмотреть вакансии в своей стране. Язык – инструмент: второй даётся легче первого, и на новом проекте его можно сменить.

Что автоматизируют в первую очередь?

Регрессионные и смоук-тесты. Их прогоняют на каждой сборке, и вручную это самая рутинная и долгая работа. Новую функциональность сначала проверяют руками, а в автотесты она попадает, когда кейсы написаны и решено, что их стоит автоматизировать.

Заменит ли автоматизация ручное тестирование?

Нет. Автотест проверяет ровно то, что в него заложили. Новую функциональность сначала тестируют руками, удобство интерфейса оценивает человек, а на коротком проекте или при постоянно меняющихся требованиях автоматизация может не окупиться.

Как перейти в автоматизацию на текущем проекте?

Поговорить с командой, предложить автоматизировать самое рутинное, обычно регресс и смоук, и объяснить, сколько времени и денег это сэкономит. Заинтересованная компания помогает менторами и материалами, а иногда оплачивает курс. Учиться на настоящем проекте выгоднее, чем на учебном.

Посмотреть программы курсов

Программа каждого курса открыта целиком: видны все модули, уроки и число шагов.

Все курсы

Здесь используются cookies: без них сайт не работает, и по ним видно, откуда о платформе узнают.Cookies нужны для входа и учёта переходов. Подробнее