Привет! На связи Антон Тарасов, руководитель группы тестирования мобильного приложения Тинькофф. В течение последних десяти лет я был инженером и руководителем в направлениях QA, Scrum-Master, Delivery Manager и Project Manager.
Постараюсь ответить на вопрос: должен ли QA уметь писать код? Расскажу о том, кто такие Full Stack QA в нашей компании, как мы их нанимаем, обучаем и растим. Я не буду говорить о том, как мы переизобрели задачи или понимание того, кто такой QA в современном энтерпрайзе. Или о том, как мы совершили некую революцию в индустрии. Я лишь расскажу, какие проблемы мы встречаем и как их стараемся решить.
Добро пожаловать под кат!
QA должен совмещать в себе разные качества
Исторически сложилось, что на проектах тестирование разделяется на ручное и автоматизированное.
«Ручник» занимается тем, что:
проводит тестирование на «кончиках пальцев»;
пишет и поддерживает тестовые артефакты;
выступает как тест-дизайнер, если есть направление Test Automation;
заводит дефекты;
помогает в построении процессов разработки, если в компании применяется подход QA.
Наличие только ручного тестирования заводит в тупик, потому что ручные проверки плохо масштабируются и оцениваются. С каждой следующей итерацией количество проверок растет, а время на тестирование — нет. И с таким подходом тестирование все чаще становится бутылочным горлышком команды.
Автоматизатор занимается тем, что:
пишет автотесты;
работает с фреймворком.
Когда на проекте есть автотесты, их нужно поддерживать. Если QA не может сделать этого сам, растет нагрузка и на разработчиков, и на автоматизаторов и ухудшается time-to-market.
Плюсы разделения тестирования — прозрачность процесса и четкое распределение ролей. Этот подход работает в моделях разработки ПО, близких к водопаду.
Дилемма в том, что мы живем в условиях постоянных изменений: растет количество коммуникаций, расфокусируются задачи, снижаются технические компетенции. Все это ведет к выгоранию специалистов.
Как человек с опытом работы в качестве Scrum Master-а, приведу пример: попробуйте стабильно и четко оценить задачи инженера по автоматизации на спринт вместе со всей остальной командой с корректной сложностью. Сразу всплывают подводные камни, приходится выводить автоматизации в сервис по канбану, сводить интеграции с основной командой.
Если объединить все сказанное выше, в современных продуктовых командах нужен QA-инженер, который сможет совмещать в себе качества различных направлений, но при этом строить процессы так, чтобы все успевать и не выгорать.
Как внедрить Full Stack QA
Шаг 1 — определить задачи Full Stack QA. Общие цели тестирования в крупных проектах давно должны быть высечены где-то на скале:
уменьшение времени на регрессионное тестирование и Lead Time;
постоянная разработка и оптимизация тестовых фреймворков;
улучшение качества приложения и самих процессов разработки ПО.
Из общих целей мы сформировали задачи Full Stack QA:
работа в команде для обеспечения качества и улучшения пользовательского кайфа — путь QA;
создание тестовых артефактов и работа с ними — путь тестирования;
автоматизация тестов по пирамиде тестирования — путь автоматизации.
Я рассказываю об общем векторе развития QA в компании, в направлениях Backend/Web/Mobile будут свои особенности и тонкости. Например, для направления Backend нужны знания и скиллы по основам нагрузочного тестирования.
Постановка задач — дело важное и полезное, но это лишь начало. Дело за «малым» — это все внедрить.
Шаг 2 — внедрить Full Stack QA в компании. В начале внедрения у нас было много специалистов по ручному тестированию без опыта программирования, не говоря уже об автоматизации.
Внедрение изменений разделилось на три четкие зоны:
Работа с текущими сотрудниками.
Наем новых.
Изменение образовательных программ в учебном центре.
Мы доработали матрицу компетенций профессии QA, чтобы понять, как соотнести специалистов внутри компании между собой:
|
Junior |
Middle |
Senior |
Lead |
Задачи |
Выполнение задач под контролем наставника |
Самостоятельная работа |
Внедрение улучшений в процессы |
Решение задач любого уровня |
Работа в команде | ||||
Харды |
Задачи — выполнение рабочих активностей в рамках проекта или продукта.
Работа в команде — то, как QA влияет на процессы своей команды.
Харды — техническое развитие как инженера с учетом профиля (Backend/Web/Mobile).
Чтобы прокачиваться по необходимым и полезным скиллам, наши специалисты могут:
учиться на корпоративном портале: существуют готовые записи и вебинары, полноценные внутренние курсы с ручной проверкой ДЗ кураторами;
учиться на внешних ресурсах, когда руководитель согласует курс и компания его оплачивает;
участвовать во внутренних воркшопах от держателей профессий или команд разработки;
быть ментором или наставником от соответствующего направления.
Шаг 3 — доработать программу собеседований. Наши собеседования — продукт, который мы постоянно развиваем и улучшаем.
В каждом направлении есть держатели профессии и держатели секций собеседований. Именно они и формируют вектор, исходя из производственных и бизнесовых необходимостей. Кроме этого, учитывается опыт и обратная связь с собеседований от тех, кого мы собеседуем.
В QA-направлении есть три обязательных собеседования: экспертная область — Web/Mobile/Backend, теория тестирования и секция лайв-кодинга. Для последней нам не важен язык программирования — например, за последние пару месяцев кандидаты решали задачи на Java, Kotlin, Swift, Go, Python, C#.
Важны основы алгоритмического программирования, знание базовых структур и функций, умение изменять задачу ввиду новых данных и применение тест-дизайна при написании кода.
Шаг 4 — обновить образовательные курсы. Одно из важнейших направлений для компании — приток молодой и свежей крови начинающих инженеров. Кроме работы с вузами по программе стажировок у нас есть свой учебный подготовительный центр — Финтех Школа, где мы растим будущее пополнение.
Отбор на курсы по направлению QA включает решение задач по программированию. Программирование — часть любого курса, например Java для бэкенда, Kotlin/Swift для мобайла. С самого начала мы закладываем ребятам фокус на техническое развитие, чтобы адаптация в наших командах проходила как можно проще. Для тех, кто успешно пройдет курс, есть свой четко прописанный путь выхода в инженеры.
Как прошло внедрение в команде
Я руковожу двумя группами тестирования — в каждой по пять команд численностью до пяти человек. Наш релизный цикл и количество функционала в приложении приводят к тому, что нужно постоянно перерабатывать тестовую модель и уменьшать сроки на тестирование фич и регресс.
Для нас автоматизация играет ключевую роль. Мы используем нативные фреймворки автоматизации мобильных приложений на языках Kotlin и Swift. Все цифры будут касаться именно их.
У нас более 50 продуктовых команд, среди которых собирали статистику — опросили больше 70 человек из команды QA.
Команда — главная образующая ячейка любого ИТ-продукта. Большая часть опрошенных выбрала обучение в команде:
В обучении по уровням важно учитывать несколько моментов: джуны — выпускники наших проектов стажировок и финтех-школы в большинстве случаев. Многие мидлы пришли в компанию еще специалистами по ручному тестированию, ну а сеньоры — всем ребятам пример!
Одно из платформенных правил мобильного приложения — QA-инженеры должны тратить на задачи по автоматизации минимум пять часов в неделю. Правило согласовано с бизнесом и учитывается при планировании. А активности по автоматизации включают не только написание тестов, но и обучение.
Вот такие данные получились по командам мобильного приложения:
Часы в неделю |
Процент |
t ⩽ 5 |
68 |
5 < t ⩽ 10 |
24 |
t > 10 |
8 |
В некоторых спринтах инженеры не успевают заниматься техническим развитием и писать автотесты. Поэтому мы со стороны платформы постоянно собираем метрики по автоматизации и стараемся ставить четкие и понятные цели закрытия долга по автоматизации.
Какие выводы
За последние несколько лет я заметил несколько трендов в области QA:
растет уклон в автоматизацию — как для сохранения времени, так и для экономии бюджетов проекта;
нужно понимать концепции CI/CD с погружением в некоторые инфраструктурные задачи на базовом уровне.
Я думаю, в ближайшее время QA-инженер будет все чаще становиться прямым помощником разработчика. Это приведет к раннему написанию тестов и автоматизации почти всех фич сразу на необходимом уровне.
Вывод: основы алгоритмического программирования и понимание базовых структур и функций — необходимый скилл для QA-инженера. А значит, да — QA должен уметь писать код :)
Комментарии (10)
smajluha
16.11.2023 12:26Fullstack QA это попытка усидеть на двух стульях, платить одному человеку за работу двоих. По итогу такой тестировщик и бизнес логику не знает, и код писать ему некогда.
Собесы в тинькофф это бесконечный поток этапов (насколько помню их 4-5) и кандидатов, от чего интервьюеры устают, теряют интерес и вопросы задают по листочку, да и ответы сверяют по нему же. Если вы не можете решить подходит вам человек или нет в пределах 2 встреч - это странно.
Лайв кодинг тоже глупость. Я могу писать автотесты, но задачу с литкода не решу в условиях стресса и ограниченного времени.
respawn91 Автор
16.11.2023 12:26Привет!
Если не включать встречи с рекрутером, то у любого инженера 2 собеседования: профиль + теория/лайв-кодинг. Если кандидат хочет попробовать несколько профилей разом (в своё время я проходил и Mobile, и WEB) - его право
А если всё прошло успешно, то уже фиты с командами - это всё же не собеседования
Про лайв-кодинг вопрос очень спорный и холиварный, в комментарии не хватит места развернуться. Предлагаю написать статью об этих проблемах - там и обсудить можно будет :)
Sh1k4r1
16.11.2023 12:26Чёт непонятно с самого начала. Есть "ручник", есть "автоматизатор" и потом вылезает некий QA. Чем же он занимается? Все понемножку?
И при этом уже дальше идёт поток fullstack QA
amedvedjev
16.11.2023 12:26Не, тут все просто. Такой фулл КА отвечать может только за кусок функционала. Скажем заказ карт. Вот он его и тестит манульно и автотесты пишет, по образу и подобию имеющегося фреймворка. Тогда это возможно. Речь не идет о написании с нуля тест фреймворка. А только о его наполнении авто тестами.
В большинстве случаев более сложные задачи в коде отданы чистым автоматчикам.
Речь идет о больших проектах. Маленькие вполне может осилить такой фулл стак КА.
Tempest23
Что качественная автоматизация, что качественный анализ и ручное тестирование требуют глубокого понимания конкретных областей, при чём в каждой из них требуется очень разный набор знаний. Невозможно написать и развивать хороший автомейшн фреймворк без достаточно глубоких знаний архитектуры проектов, дизайн паттернов и итеративного улучшения. Невозможно анализировать и планиравать тестирование без достаточно глубоких теоретических знаний о разных методологиях, техник тестирования, их плюсов и минусов, менеджерских навыков. Сейчас компании хотят из одного сотрудника получить швейцарский нож, чтобы одной зарплатой убить двух зайцев. В итоге ни автоматическое, ни мануальное тестирование у них нормально не работают.
Да и мало кому одинаково интересны обе этих области, чтобы вкладывать существенные ресурсы для них изучения. Может топовые компании и способны привлекать эту небольшую долю кадров, но их на всех не хватит.
Сорри, если что-то не так понял. Просто задачи довольно смутно сформулированы. За "обеспечение качества" может скрываться какой угодно набор реальных активностей, так что исхожу из стандартного: 50 на 50 между автоматизацией и мануальным тестированием.
respawn91 Автор
Привет и спасибо за комментарий!
Задачи сформулированы смутно, так как от команды к команде всё может очень сильно меняться в плане распределения активностей QA. Как ты сам правильно отметил, этих активностей может быть очень много разных - всё происходит от задач и целей проекта
Про развитие фреймворка полностью согласен, потому у нас этим и занимаются выделенные люди с уклоном в дизайн паттернов, инфраструктуру и архитектуру. Более того, эти же люди делятся своими best practice со всеми по средстам вэбинаров/записей/статей
Ну и постоянное обучение и развитие - часть нашей индустрии, тут согласен полностью