# Профили QA-инженеров Профили QA-инженеров нужны, чтобы оценивать коллег в соответствии с их уровнем на [performance review](../goal-setting.md#performance-review). Это делает продвижение по карьерной лестнице понятным и прозрачным. ## Карьерная лестница Карьерная лестница — это возможный путь развития сотрудника в Авито. Он зависит от того, какие задачи решает специалист и какие основные навыки использует в работе. Сейчас в Авито существуют такие уровни QA-инженеров: - [Е1](#е1) - [Е2](#е2) - [Е3](#е3) - [Е4](#е4) - [Е5](#е5) - [Е6](#е6) Двигаться ли по карьерной лестнице — это решение самого сотрудника. Многое зависит от его проактивности и желания учиться. Задача менеджера — помочь специалисту в развитии. Например, подключать к новым задачам, давать возможность для участия в кросс-функциональных проектах. ## Как работают профили - Ожидания каждого следующего уровня добавляются к ожиданиям предыдущих. Например, E4-инженер должен уметь делать всё то же самое, что E1, E2 и E3. - Сотрудник должен проявить навыки и компетенции своего или следующего профиля на деле. Просто уметь или хотеть делать недостаточно. - Если менеджер считает, что специалисту в команде не нужен какой-то навык, то его можно не учитывать. ### Е1 - Занимается ручным тестированием, составляет и тестирует по тест-кейсам или делает тестирование ad-hoc . - Решает задачи с подробным описанием скоупа тестирования. - Тестирует отдельные задачи. - Пишет чеклисты и тест-кейсы на основные позитивные и негативные сценарии. - Перепроверяет закрытые баги и пишет понятные и воспроизводимые багрепорты по ошибкам. ### Е2 - При тестировании задач пишет тест-кейсы и автотесты на них. - Может составить тест-кейсы для конкретных фичей, реализованных в задаче, с применением основных техник тест-дизайна: например, классы эквивалентности. - Может всегда быстро предоставить актуальную и правдивую информацию о качестве разрабатываемых фичей - в задачах всегда понятно, что тестировалось руками и автоматически. - Разбирает отчёты автотестов, перепроверяет ошибки. - Разрабатывает новые автотесты е2е и/или интеграционного уровня, поддерживает их. - Знает основные техники тест-дизайна и активно их использует, когда они применимы: оптимизирует проверки, обеспечивает полноту покрытия через техники тест-дизайна. Например покрывает негативные сценарии, граничные значения, проверяет все возможные ветви бизнес-процессов. Разрабатывает тест-кейсы и автотесты на основе техник тест-дизайна. ### Е3 - Обеспечивает качество на всех этапах реализации, следит за метриками после выкатки фичи, юзер-сторей или крупных фичей. - Составляет тестовые модели для части функциональности команды. - Самостоятельно решает задачи даже без описания подробного скоупа тестирования. - Кроме новых автотестов е2е и тестов интеграционного уровня, может разрабатывать тесты компонентного уровня. - Использует паттерн pageObjects. Разрабатывает недублирующие, оптимальные, стабильные тесты. Улучшает стабильность уже существующих автотестов. - Составляет тест-кейсы и обсуждает с разработчиками, как будет распределяться автоматизация по пирамиде тестирования. Следит за тем, чтобы команда придерживалась пирамиды тестирования. - Тестирует не только UI, но и уровни ниже: например, API. - Владеет и ведёт процессы SPT/ZBP в своей команде, обеспечивает должное SLO по решению проблем пользователей и багов. - Применяет и владеет процессом ATDD в команде, составляет критерии приёмки вместе с product owner. - Драйвит достижение baseline по ТММ в QA-секции. - Может добавить дополнительные Quality Gates в CI/CD команды. - Использует подход Risk Based Testing в оценке и предотвращении рисков, либо использует другие методологии по работе с рисками, проводит оценку рисков у задач. ### Е4 - Обеспечивает качество всего функционала команды целиком. - На основе данных по покрытию тестовой модели и непосредственного тестирования, может предоставить полную информацию о проведённом тестировании, качестве и рисках для любого изменения, которое выкатывается в продакшен. - Актуализирует и владеет тестовой моделью всего функционала разрабатываемого продукта или системы, обеспечивает необходимое и достаточное покрытие тестами всей тестовой модели. - Координирует кросскомандное тестирование. - Доносит до команды информацию о состоянии качества и фокусирует команду на его улучшении. - Умеет разрабатывать тесты на backend и хотя бы на один client-side, чтобы обеспечивать покрытие на всех уровнях системы. - Прорабатывает вместе с разработчиками юнит-тесты. - Может проверить качество покрытия юнит-тестами, которые пишут разработчики, через код ревью или с помощью мутационного тестирования. - Исследует проблемы flaky-тестов и самостоятельно устраняет причины, либо адресует руткозы flaky-тестов на ответственных и добивается их исправлений. - Если видит проблемы в большом количестве багов от команды, то исследует первопричину и меняет процессы обеспечения качества. - Является экспертом по QA внутри своей команды: обучает коллег тестировать через менторство, с объяснением теории и применением практики. Организует процессы тестирования, так, чтобы не являться боттл-неком для команды. - Может настроить автоматическую сборку тестового контура для интеграционного тестирования фичей в юните. Например, прогон специфичных тестов на релизах Инфомодели. - Проводит исследовательское тестирование с целями, сессиями и итоговыми отчётами. ### Е5 - Для больших проектов проводит оценку рисков, аргументировано объясняет, где и что может пойти не так. - Занимается улучшением общих инструментов тестирования, осуществляет вклад в общую экосистему тестирования компании: например, самостоятельно добавляет необходимый функционал в Resource Manager. - Комплексно подходит к обеспечению качества. Проводит сам или привлекает экспертов для проведения нефункционального тестирования - performance-тесты и Security-тесты. Например, комплексно подходит к соблюдению NFR сервисами. - Владеет метриками качества своей команды/юнита, всегда может показать на объективных метриках, какая ситуация сейчас с качеством. - Участвует в разборах инцидентов, предотвращает повторные инциденты. - Является экспертом по QA внутри своего юнита или нескольких команд - обучает коллег тестировать как положено, с теорией и практикой. - Имеет карту/модель рисков по всему юниту, системно работает над предотвращением рисков в юните. ### Е6 - Создаёт с нуля новые инструменты для обеспечения качества. Например, скрипты сравнения диффов инфомодели или фреймворк для интеграционного тестирования автозагрузки. - Может провести исследование по оценке качества для пользователей и качества продукта в целом: тестирует гипотезы качества на пользователях, сравнивает свой продукт и конкурентов в плане качества. Например, проводит сравнительное тестирование продуктов, проводит оценку по аспектам качества относительно конкурентов. - Имеет карту/модель рисков по всему кластеру, системно работает по предотвращению рисков в кластере. - Координирует общекластерные проекты по тестированию.