
Внедрение автоматизированных тестов, которые тестируют всё приложение, является сложной задачей. От выбора уровней для проверки (API, UI или оба) до управления тестовыми данными и подбора подходящей библиотеки для работы. Основываясь на своем опыте, я подготовил руководство по внедрению автоматизации в ваш проект. Какие аспекты следует учитывать?
Понять характер вашего проекта
-
Включает ли он API тестирование?
-
Включает ли он UI тестирование?
-
Есть ли у него мобильное приложение?
-
Как много логики заложено в мобильном приложении?
-
Взаимодействуют ли между собой несколько мобильных устройств?
-
Есть ли внешние зависимости, которые нужно мокировать?
-
Выясните архитектуру кода самого проекта. Проверьте, можете ли вы применить некоторые принципы к архитектуре кода ваших автоматизированных тестов.
-
Найдите документацию и проверьте ее во время планирования разработки автоматизации тестирования.
Понять будущее вашего проекта
-
Если на ближайшие недели запланирована работа по рефакторингу, лучше сделать акцент на API или UI тесты, которые, как правило, относятся к тестированию методом черного ящика. Инвестировать время в unit-тесты для классов, которые наверняка будут изменены в будущем — напрасная трата усилий.
-
Планируется ли заказчиком работа, в которой будет использован определенный вид тестирования? Подумайте об этом, чтобы повысить качество разработки.
Определить места, которые больше всего нуждаются в тестировании
-
Определите наиболее важные пути и элементы: Core-Domain (концепция Domain-driven design).
-
Поговорите с менеджером проекта, тестировщиками и разработчиками, чтобы выяснить важнейшие элементы с их точки зрения.
-
Проанализируйте ошибки, найденные за последние месяцы.
-
Выясните, есть ли у кого-нибудь в команде опыт автоматизации тестирования.
Изучить, какой вид автоматизации тестирования принесет наибольшую выгоду с учетом стоимости и времени разработки
Это определяется уравнением, состоящим из нескольких элементов:
-
Какова текущая форма вашей пирамиды тестирования?
-
Сколько энергии мы хотим потратить на автоматизацию?
-
Каковы знания по автоматизации тестирования в команде?
-
Какую область мы должны охватить?
-
Как много мы должны/нам нужно мокировать?
-
Есть ли у нас приемлемая рабочая среда для выполнения тестов?
Убедиться, что ваша автоматизация тестирования понятна бизнесу
-
Чем “прозрачнее” тесты, результаты тестирования, тестовые данные, тем больше желания у бизнеса приложить усилия для расширения автоматизации тестирования.
-
При каждом удобном случае подчеркивайте ошибки, обнаруженные автоматизацией тестирования.
Уделять внимание данным тестирования с первого дня
-
Полагайтесь на статические данные тестирования как можно больше, потому что так легче подготовить, отладить и повторить тест вручную.
-
Статические данные + удаление данных проще реализовать, чем динамическую генерацию данных (но это зависит от характеристик системы).
Рассмотреть технические аспекты
-
Реализуйте тесты так, чтобы их можно было выполнять параллельно.
-
Сделайте тесты независимыми, легко запускаемыми, самостоятельными.
-
Приветствуются очистка данных, сброс базы данных.
Не переносить подход unit-тестов на автоматизированные тесты
-
Автоматизированные тесты нуждаются во фреймворке, настройке и правильной разработке. Структурированный и хорошо выстроенный набор классов и модулей является обязательным условием.
Вызвать у разработчиков желание выполнять и расширять тестирование
-
Хорошей практикой считается делать тесты удобными для запуска и расширения разработчиками. Размещение их в том же репозитории, что и код приложения — первый шаг к достижению этой цели.
-
Позаботьтесь о простоте настройки и запуска: тесты должны настраиваться с помощью 3-4 команд, а запускаться с помощью одной.
-
Внедряйте автоматизированные тесты как часть User Story. Обсудите порядок действий с тестировщиками.
Выделять себе немного времени и сил для рефакторинга, итераций и улучшений
-
Автоматизированные тесты — это сложный кусок кода — такой же, как и само приложение. Примите вызов и примите тот факт, что создать надежную и масштабируемую систему автоматизации непросто.
Есть еще много аспектов, которые необходимо учитывать, но перечисленные выше, на мой взгляд, являются основными. Внедрение автоматизации тестирования в ваш проект — трудная задача, но, если вы чувствуете, что обладаете необходимыми навыками — дерзайте! Однако я бы посоветовал поддерживать связь с опытным разработчиком, чтобы посоветоваться с ним по поводу структуры фреймворка. Конкретный рецепт успешной автоматизации тестирования сложно описать в рамках одной статьи в блоге, но я думаю, что полезно хотя бы задать себе вопросы и вдохновиться предложениями, написанными выше.
ссылка на оригинал статьи https://habr.com/ru/articles/725272/
Добавить комментарий