Процессы и автоматизация проекта с нуля
Есть множество статей про технологии и те или иные подходы к автоматизации. Но почему-то нет статей про «обратную сторону» автоматизации. Как вообще всё зарождается на проекте? И как это «всё» организовать? Ниже будет рассмотрен пример компании Россельхозбанк.
Общая информация по проекту
Большой проект с командами, разрабатывающими общий продукт;
В командах есть QA Manual (Ручной тестировщик);
Направления тестирования - Frontend, Backend.
Изучаем проект
Понимаем цель разработки продукта и кто потребитель: ответы на эти вопросы помогают понять, на что делать упор в автоматизации. Например, если работаем с юридическими лицами, то делаем упор на тестирование «исполнения законодательства» и переводы по платежам и тд. Если это физические лица, то на основные выполняемые операции: переводы с карты на карту, оплату услуг и тп. Так же важно, чтобы направление автоматизации «смотрело» в целом на продукт, а не на отдельные в нем команды.
Знакомимся с участниками разработки продукта: в нашем случае нужно быть знакомым со всеми, так как необходимо будет взаимодействовать тем или иным образом. Выделю ключевых людей:
Владельцы продуктов (Product Owners), они заказчики автоматизации в команде;
QA каждой команды. Они - это клиенты инструмента автоматизации, их уровень счастья - это показатель успеха;
Лидер ручного тестирования. Помогает в организации процесса и во взаимодействии с ручным тестированием;
Лидер разработки Frontend. Он влияет на стабильность и качество автотестов;
Специалист по закупке. Решит вопросы выделения техники, в основном с серверным железом.
Изучаем каждую команду: собираем информацию о том, какую часть проекта разрабатывает команда.
Разбираемся в направлении - Frontend, Backend или всё сразу;
Разбираемся с тем, как QA тестируют свою часть продукта;
Выясняем, на каком уровне QA manual знаком с автоматизацией;
Находим боли в тестировании и что приоритетно закрыть автоматизацией.
Формируем требования к автоматизации и заказываем ресурсы
Что мы собрали?
У нас есть 8 команд;
Есть 11 QA инженеров;
Есть направления тестирования Frontend, Backend + будем «ходить» в Базу данных;
90% QA manual никогда не занимались автоматизацией.
Исходя из данных, формируем требования к автоматизации
У нас нет задачи делать какие-то инновационные решения, поэтому придерживаемся классики:
В качестве языка программирования выбираем Java - так будет проще найти специалистов;
Нужно тестировать Frontend. Берем Selenium;
Нужно тестировать Backend. Взаимодействуем с ним через REST. Берем REST-assured;
Нужно «ходить» в базу данных. Возьмем стандартные библиотеки из Java;
Нужно либо обучить QA manual разработке автотестов, либо нанять армию из N автоматизаторов. Мы думаем о расходах проекта на тестирование, поэтому убиваем 2-х зайцев сразу. Берем Cucumber;
Нам нужна отчетность с красивыми графиками. Берем Allure.
Получился следующий стек технологий: Java, Selenium, REST-assured, Cucumber.
Оцениваем силы автоматизаторов
Поскольку их нет, берем 1 автоматизатора на 5 команд (больше 5-и не потянет).
Автотесты нужно где-то запускать
Что нам понадобится?
Машина для Jenkins. 1 штука. Через него реализуем удаленный запуск;
Машина под Slave Jenkins. Как agent для Jenkins;
Машина под Selenoid. Для параллельного запуска тестов.
Делаем демо нашего инструмента
Наше демо будут смотреть все: владельцы продуктов, QA инженеры, разработчики, аналитики и тд. Значит ориентируемся на понимание для всех.
Берем команду в качестве первой «жертвы» автоматизации. Ребята разрабатывают Frontend. Нам нужна наглядность.
Делаем 5-10 автотестов. Записываем на видео;
Обязательно после прогона показываем Allure. Красивые графики любят все;
Рисуем «инфраструктуру автотестов». Главное, чтобы было просто и понятно;
Обозначаем главную цель автоматизации;
Демонстрируем эффект от автоматизации;
Делаем сравнительные тесты. Ручное прохождение и автоматизированное;
Показываем, как создаются сценарии;
Показываем планы автоматизации (когда появятся тот или иной функционал);
Показываем, как будет происходить внедрение автоматизации в команды.
Подготавливаем UI к автоматизации
Для обеспечения надежности, стабильности и качества автотестов, необходимо раскидать якоря на UI. Централизованно через лидера Frontend и дополнительно через владельцев продукта проставляем атрибут для UI-элементов “data-test-id“ или с любым другим названием. Смысл в том, чтобы со стороны UI проставить этот атрибут во всех элементах типа «Таблица, поле для ввода, кнопка» и тд. Если коротко, то на всех элементах, с которыми взаимодействуем, это даст +300% к надежности автотестов. Переезд элемента в другое место или изменение его содержимого никак не повлияют на проверку автотестом. Делаем этот момент обязательным для всех новых фич.
Разрабатываем автотесты
Делим команды между автотестерами;
Разрабатываем каркас проекта для автоматизации. Все по шаблону;
Подготавливаем набор Cucumber шагов для работы с Frontend, основным направлением в тестировании. Выносим шаги в отдельный проект и делаем из него подключаемый артефакт;
Настраиваем Selenoid и Jenkins;
Начинаем подключать команды к автоматизации. При подключении команды все сводится к тому, чтобы создать репозиторий, загрузить каркас, создать Job в Jenkins по шаблону, обучить QA работе с Cucumber, работе с Git и средой разработки;
После обучения QA manual самостоятельно пишут автотесты. Один раз за спринт автоматизатор приходит в команду и принимает написанные автотесты, делает правки и вливает в основную ветку. На этом этапе ребята качают уровень написания правильных сценариев, а мы получаем качественные проверенные сценарии;
После встречи со всеми командами у автоматизатора в спринте остается еще 5-6 свободных дней. Это время тратим на разработку Cucumber шагов;
В конце спринта на продуктовом демо показываем результаты по командам и делаем анонсы новых фич в инструменте.
Результаты
6 спринтов (60 дней), 8 команд, 2 автотестера и 11 ручных тестировщиков - имеем 50% покрытия регресса проекта автотестами. Это с учетом подключения команд (подключались постепенно) и разработки шагов.
Вещи, о которых нужно помнить при разработке с таким подходом
Ручной тестировщик - это клиент. QA инженер - прямой потребитель инструмента автоматизации. Их уровень комфорта, счастья и количество автотестов - это показатель качества нашей работы. Если один из показателей падает, значит нужно что-то менять. Иначе все посыпется.
Ориентация на выгоду для проекта. Нужно всегда помнить, что содержание разработчиков, тестировщиков, аналитиков и других специалистов стоит денег. В конечном итоге наша цель их сэкономить. Как мы их экономим?
Автотестами: находим дефекты запуская их каждый день.
На каждом этапе тестирования сокращаем время регресса.
Все это приводит к более быстрому выпуску продукта в промышленную эксплуатацию.
Не работает? Меняй! Не нужно бояться ошибок. Их будет очень много в разработке, в общении с командами, во взаимодействии с QA инженерами, в демо. Главное увидеть, что «что-то» не работает и менять подход до тех пор, пока все не будут в восторге. Всё делаем для людей. Не для себя.
Источники:
Доп. материал:
Last updated