
Есть множество статей про технологии и те или иные подходы к автоматизации. Но почему-то нет статей про «обратную сторону» автоматизации. Как вообще всё зарождается на проекте? И как это «всё» организовать?
Итак, здравствуйте! Меня зовут Ярослав, я являюсь лидером автоматизации тестирования в Центре развития финансовых технологий Россельхозбанка. В этой статье поделюсь своим опытом организации автоматизации на примере большого проекта РСХБ из 8 команд.
Общая информация по проекту
-
Большой проект с командами, разрабатывающими общий продукт.
-
В командах есть 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% покрытия регресса проекта автотестами. Это с учетом подключения команд (подключались постепенно) и разработки шагов.
4 вещи, о которых нужно помнить при разработке с таким подходом
Ручной тестировщик — это клиент
QA инженер — прямой потребитель инструмента автоматизации. Их уровень комфорта, счастья и количество автотестов — это показатель качества нашей работы. Если один из показателей падает, значит нужно что-то менять. Иначе все посыпется.
Ориентация на выгоду для проекта
Нужно всегда помнить, что содержание разработчиков, тестировщиков, аналитиков и других специалистов стоит денег. В конечном итоге наша цель их сэкономить.
Как мы их экономим?
-
Автотестами: находим дефекты запуская их каждый день.
-
На каждом этапе тестирования сокращаем время регресса.
Все это приводит к более быстрому выпуску продукта в промышленную эксплуатацию.
Не работает? Меняй!
Не нужно бояться ошибок. Их будет очень много в разработке, в общении с командами, во взаимодействии с QA инженерами, в демо. Главное увидеть, что «что-то» не работает и менять подход до тех пор, пока все не будут в восторге. Всё делаем для людей. Не для себя.
Кайфуй
Наверное, самое главное в любой работе — это получать удовольствие. До сих пор с умилением смотрю на автотесты. Я тоже был QA manual инженером и прекрасно понимаю, насколько нудно тестировать регресс раз за разом. Автотесты — это бальзам:)
ссылка на оригинал статьи https://habr.com/ru/articles/591449/
Добавить комментарий