Привет! На связи Антон Тарасов, руководитель группы тестирования мобильного приложения Тинькофф. В течение последних десяти лет я был инженером и руководителем в направлениях 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 в компании. В начале внедрения у нас было много специалистов по ручному тестированию без опыта программирования, не говоря уже об автоматизации.

Внедрение изменений разделилось на три четкие зоны:

  1. Работа с текущими сотрудниками.

  2. Наем новых.

  3. Изменение образовательных программ в учебном центре.

Мы доработали матрицу компетенций профессии 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.

Команда — главная образующая ячейка любого ИТ-продукта. Большая часть опрошенных выбрала обучение в команде:

Как учились специалисты после внедрения подхода Full Stack QA. 40% кейсов — работа команды
Как учились специалисты после внедрения подхода Full Stack QA. 40% кейсов — работа команды

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

Сколько процентов от общего количества обучилось
Сколько процентов от общего количества обучилось

Одно из платформенных правил мобильного приложения — QA-инженеры должны тратить на задачи по автоматизации минимум пять часов в неделю. Правило согласовано с бизнесом и учитывается при планировании. А активности по автоматизации включают не только написание тестов, но и обучение.

Вот такие данные получились по командам мобильного приложения:

Часы в неделю

Процент

t ⩽ 5

68

5 < t ⩽ 10

24

t > 10

8

В некоторых спринтах инженеры не успевают заниматься техническим развитием и писать автотесты. Поэтому мы со стороны платформы постоянно собираем метрики по автоматизации и стараемся ставить четкие и понятные цели закрытия долга по автоматизации.

Прогресс автоматизированных кейсов на платформу iOS за последние полгода
Прогресс автоматизированных кейсов на платформу iOS за последние полгода

Какие выводы

 За последние несколько лет я заметил несколько трендов в области QA:

  • растет уклон в автоматизацию — как для сохранения времени, так и для экономии бюджетов проекта;

  • нужно понимать концепции CI/CD с погружением в некоторые инфраструктурные задачи на базовом уровне.

Я думаю, в ближайшее время QA-инженер будет все чаще становиться прямым помощником разработчика. Это приведет к раннему написанию тестов и автоматизации почти всех фич сразу на необходимом уровне.

Вывод: основы алгоритмического программирования и понимание базовых структур и функций — необходимый скилл для QA-инженера. А значит, да — QA должен уметь писать код :)  

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


  1. Tempest23
    16.11.2023 12:26
    +2

    Что качественная автоматизация, что качественный анализ и ручное тестирование требуют глубокого понимания конкретных областей, при чём в каждой из них требуется очень разный набор знаний. Невозможно написать и развивать хороший автомейшн фреймворк без достаточно глубоких знаний архитектуры проектов, дизайн паттернов и итеративного улучшения. Невозможно анализировать и планиравать тестирование без достаточно глубоких теоретических знаний о разных методологиях, техник тестирования, их плюсов и минусов, менеджерских навыков. Сейчас компании хотят из одного сотрудника получить швейцарский нож, чтобы одной зарплатой убить двух зайцев. В итоге ни автоматическое, ни мануальное тестирование у них нормально не работают.

    Да и мало кому одинаково интересны обе этих области, чтобы вкладывать существенные ресурсы для них изучения. Может топовые компании и способны привлекать эту небольшую долю кадров, но их на всех не хватит.

    Сорри, если что-то не так понял. Просто задачи довольно смутно сформулированы. За "обеспечение качества" может скрываться какой угодно набор реальных активностей, так что исхожу из стандартного: 50 на 50 между автоматизацией и мануальным тестированием.


    1. respawn91 Автор
      16.11.2023 12:26

      Привет и спасибо за комментарий!

      Задачи сформулированы смутно, так как от команды к команде всё может очень сильно меняться в плане распределения активностей QA. Как ты сам правильно отметил, этих активностей может быть очень много разных - всё происходит от задач и целей проекта

      Про развитие фреймворка полностью согласен, потому у нас этим и занимаются выделенные люди с уклоном в дизайн паттернов, инфраструктуру и архитектуру. Более того, эти же люди делятся своими best practice со всеми по средстам вэбинаров/записей/статей

      Ну и постоянное обучение и развитие - часть нашей индустрии, тут согласен полностью


  1. o_f
    16.11.2023 12:26
    +1

    Ну в Тинькофф, qa занимается не только кодом, но ещё и девопсовыми задачами и в космос летает так-то.


    1. respawn91 Автор
      16.11.2023 12:26

      И немного шьем, да!


  1. ArtemOdintsov
    16.11.2023 12:26

    . ..


  1. smajluha
    16.11.2023 12:26

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

    Собесы в тинькофф это бесконечный поток этапов (насколько помню их 4-5) и кандидатов, от чего интервьюеры устают, теряют интерес и вопросы задают по листочку, да и ответы сверяют по нему же. Если вы не можете решить подходит вам человек или нет в пределах 2 встреч - это странно.

    Лайв кодинг тоже глупость. Я могу писать автотесты, но задачу с литкода не решу в условиях стресса и ограниченного времени.


    1. respawn91 Автор
      16.11.2023 12:26

      Привет!

      Если не включать встречи с рекрутером, то у любого инженера 2 собеседования: профиль + теория/лайв-кодинг. Если кандидат хочет попробовать несколько профилей разом (в своё время я проходил и Mobile, и WEB) - его право

      А если всё прошло успешно, то уже фиты с командами - это всё же не собеседования

      Про лайв-кодинг вопрос очень спорный и холиварный, в комментарии не хватит места развернуться. Предлагаю написать статью об этих проблемах - там и обсудить можно будет :)


  1. Vot-tot
    16.11.2023 12:26

    нужен и жрец и чтец и на дудке дудец и за минималку)


  1. Sh1k4r1
    16.11.2023 12:26

    Чёт непонятно с самого начала. Есть "ручник", есть "автоматизатор" и потом вылезает некий QA. Чем же он занимается? Все понемножку?

    И при этом уже дальше идёт поток fullstack QA


  1. amedvedjev
    16.11.2023 12:26

    Не, тут все просто. Такой фулл КА отвечать может только за кусок функционала. Скажем заказ карт. Вот он его и тестит манульно и автотесты пишет, по образу и подобию имеющегося фреймворка. Тогда это возможно. Речь не идет о написании с нуля тест фреймворка. А только о его наполнении авто тестами.

    В большинстве случаев более сложные задачи в коде отданы чистым автоматчикам.

    Речь идет о больших проектах. Маленькие вполне может осилить такой фулл стак КА.