Внедрение автоматизированных тестов, которые тестируют всё приложение, является сложной задачей. От выбора уровней для проверки (API, UI или оба) до управления тестовыми данными и подбора подходящей библиотеки для работы. Основываясь на своем опыте, я подготовил руководство по внедрению автоматизации в ваш проект. Какие аспекты следует учитывать? 

Понять характер вашего проекта

  • Включает ли он API тестирование? 

  • Включает ли он UI тестирование? 

  • Есть ли у него мобильное приложение? 

  • Как много логики заложено в мобильном приложении? 

  • Взаимодействуют ли между собой несколько мобильных устройств? 

  • Есть ли внешние зависимости, которые нужно мокировать? 

  • Выясните архитектуру кода самого проекта. Проверьте, можете ли вы применить некоторые принципы к архитектуре кода ваших автоматизированных тестов.  

  • Найдите документацию и проверьте ее во время планирования разработки автоматизации тестирования. 

Понять будущее вашего проекта 

  • Если на ближайшие недели запланирована работа по рефакторингу, лучше сделать акцент на API или UI тесты, которые, как правило, относятся к тестированию методом черного ящика. Инвестировать время в unit-тесты для классов, которые наверняка будут изменены в будущем - напрасная трата усилий. 

  • Планируется ли заказчиком работа, в которой будет использован определенный вид тестирования? Подумайте об этом, чтобы повысить качество разработки.

Определить места, которые больше всего нуждаются в тестировании 

  • Определите наиболее важные пути и элементы: Core-Domain (концепция Domain-driven design).  

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

  • Проанализируйте ошибки, найденные за последние месяцы. 

  • Выясните, есть ли у кого-нибудь в команде опыт автоматизации тестирования. 

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

Это определяется уравнением, состоящим из нескольких элементов: 

  • Какова текущая форма вашей пирамиды тестирования? 

  • Сколько энергии мы хотим потратить на автоматизацию? 

  • Каковы знания по автоматизации тестирования в команде? 

  • Какую область мы должны охватить? 

  • Как много мы должны/нам нужно мокировать? 

  • Есть ли у нас приемлемая рабочая среда для выполнения тестов? 

Убедиться, что ваша автоматизация тестирования понятна бизнесу 

  • Чем “прозрачнее” тесты, результаты тестирования, тестовые данные, тем больше желания у бизнеса приложить усилия для расширения автоматизации тестирования. 

  • При каждом удобном случае подчеркивайте ошибки, обнаруженные автоматизацией тестирования. 

Уделять внимание данным тестирования с первого дня 

  • Полагайтесь на статические данные тестирования как можно больше, потому что так легче подготовить, отладить и повторить тест вручную. 

  • Статические данные + удаление данных проще реализовать, чем динамическую генерацию данных (но это зависит от характеристик системы). 

Рассмотреть технические аспекты 

  • Реализуйте тесты так, чтобы их можно было выполнять параллельно. 

  • Сделайте тесты независимыми, легко запускаемыми, самостоятельными. 

  • Приветствуются очистка данных, сброс базы данных. 

Не переносить подход unit-тестов на автоматизированные тесты 

  • Автоматизированные тесты нуждаются во фреймворке, настройке и правильной разработке. Структурированный и хорошо выстроенный набор классов и модулей является обязательным условием. 

Вызвать у разработчиков желание выполнять и расширять тестирование 

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

  • Позаботьтесь о простоте настройки и запуска: тесты должны настраиваться с помощью 3-4 команд, а запускаться с помощью одной. 

  • Внедряйте автоматизированные тесты как часть User Story. Обсудите порядок действий с тестировщиками. 

Выделять себе немного времени и сил для рефакторинга, итераций и улучшений 

  • Автоматизированные тесты — это сложный кусок кода - такой же, как и само приложение. Примите вызов и примите тот факт, что создать надежную и масштабируемую систему автоматизации непросто. 

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

Комментарии (0)