Журнал / польза

Чем занимается автоматизатор тестирования на Python и как им стать

Как ускорить тестирование с помощью одного из самых популярных языков программирования.

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

Python — это швейцарский нож в сфере тестирования. Он поможет написать UI-тесты, сгенерировать большое количество данных и протестировать API. Да и в целом в стандартных библиотеках Python есть готовые инструменты для автоматизации тестирования.

Эрик Бурыгин, руководитель команды тестирования мобильных приложений в Яндексе и автор курса «Тестирование веб-приложений на Python», рассказал, чем Python удобен для тестировщика.

Кто такой автоматизатор тестирования на Python

Автоматизатор — это человек, который переводит ручные тест-кейсы в автоматические. Другими словами, он пишет код, который заставляет машину выполнять конкретные действия за человека. Например, в тест-кейсе написано: «Проверить авторизацию». Для этого надо зайти на страницу, ввести логин и пароль, нажать «Авторизоваться» и проверить результат. Ручной тестировщик пройдёт этот путь самостоятельно, а автоматизатор напишет скрипт, который всё сделает за него.

Автоматизировать тесты можно на различных языках, но не каждый язык настолько универсален, как Python. Так, например, на Swift удобно автоматизировать iOS-приложения, а на JavaScript — веб-приложения, в то время как на Python можно автоматизировать всё. В этом его плюс.

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

Какие задачи решает автоматизатор

Автоматизатор занимается тем, что покрывает код или отдельные фичи тестами. Иногда он сам знает, что нужно проверить, но чаще всего ему дают набор тест-кейсов и говорят: «Автоматизируй эти сценарии».

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

Тесты — не единственное направление работы. У нас в команде старшие автоматизаторы не проводят тесты, а пишут собственные инструменты для автоматизации, которые помогают упростить и ускорить работу всей команды.

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

Какими инструментами пользуется автоматизатор на Python

Есть множество хороших инструментов «из коробки», например Selenium. Это мощный и функциональный инструмент, который позволяет взаимодействовать с веб-приложением: кликать, скроллить или вводить данные — в общем, делать всё, что может делать человек, и даже немного больше. И всё это можно автоматизировать.

Есть большое разнообразие фреймворков и библиотек на Python для любых задач тестирования, от простых до универсальных, например PyUnit, PyTest, Robot Framework, Lettuce и Behave. Если ничего не подойдёт, всегда можно написать что-нибудь своё — однажды мы именно так и сделали.

Что должен уметь автоматизатор

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

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

Важно, чтобы автоматизатор был знаком с областью, в которой он собирается работать. Например, вы привыкли автоматизировать веб, знаете его инструменты и архитектуру — это даёт вам больше контекста и понимания в работе. Но если вам предложат делать автоматизацию бэкенда, вам будет сложно и придётся много и быстро учиться. Для работы с бэкендом потребуется разобраться, как он устроен, что такое REST, чем отличаются методы, что такое тело запроса, заголовки, параметры и тому подобное.

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

С чего начать обучение

Я бы рекомендовал сначала изучить тестирование в любом виде, а затем выбрать, что хочется автоматизировать. Самое бесполезное — обучение в стол. Поэтому сначала ответьте на вопрос, что вы хотите автоматизировать, а потом подумайте, на чём вы будете это делать.

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

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

— На курсе «Тестирование веб-приложений на Python» в Яндекс Практикуме мы фокусируемся именно на тех знаниях, которые требуются автоматизатору. Это короткий двухмесячный курс, на котором мы рассказываем, как автоматизировать тестирование веб-приложений. Мы обучаем базовым инструментам: языку Python, философии юнит-тестов и работе в Selenium. А ещё учим составлять красивые и функциональные отчёты в Allure.

Если вы хотите стать автоматизатором тестирования, для начала посмотрите на Python и попробуйте понять, комфортно ли вам на нём работать, ведь это будет ваш основной инструмент. Будьте честны с собой и, если хотите попробовать свои силы в автоматизации, — дерзайте!

Что посмотреть и почитать

— Официальный сайт Python.

Лекции Школы автоматизации Яндекса.

— Интересная статья на Хабре «Шесть способов тестировать эффективно».

— Моя статья «Как правильно готовить автоматизацию, или Что покрывать тестами в первую очередь».