Ответ
QA (Quality Assurance, Обеспечение качества) и QC (Quality Control, Контроль качества) — это две взаимодополняющие дисциплины в жизненном цикле разработки ПО, направленные на достижение высокого качества продукта, но с разными фокусами и методами.
QA — это процессо-ориентированный, превентивный подход. Его цель — предотвратить дефекты путем улучшения и контроля процессов разработки.
- Что делает QA-инженер: Разрабатывает и внедряет процессы (например, стандарты кодирования, процедуры code review, стратегии тестирования, CI/CD-пайплайны).
- Пример из практики: Я внедрял практику проведения требований к тестированию (Test Basis Review) перед началом тест-дизайна, что позволило выявить и устранить двусмысленности в спецификациях на ранней стадии, сократив количество багов, связанных с неверной интерпретацией.
QC — это продукто-ориентированный, реактивный подход. Его цель — выявить дефекты в готовом артефакте (коде, сборке).
- Что делает QC-инженер (тестировщик): Непосредственно выполняет тестирование — пишет и запускает тест-кейсы, проводит ручные проверки, анализирует результаты, регистрирует баги.
- Пример из практики: На проекте мы использовали комбинацию ручного исследовательского тестирования новых функций и набора автоматизированных регрессионных тестов на Selenium для проверки критического пути основного сценария покупки. Это позволило быстро находить регрессии после каждого билда.
Итог: QA строит систему, которая минимизирует появление багов, а QC в рамках этой системы находит те баги, которые всё же просочились. Эффективная команда сочетает оба подхода.
Ответ 18+ 🔞
Э, слушай, давай разжую тебе эту тему, а то некоторые путаются, как будто в первый раз слышат. QA и QC — это, блядь, как два брата-близнеца, которые постоянно спорят, но без друг друга нихуя не сделают. Один думает, как не накосячить, а второй ищет, где уже накосячили. Ёпта, вот и вся философия.
QA — это, ядрёна вошь, стратег и архитектор. Его главная цель — не дать этим ебанько-дефектам вообще родиться. Он не ковыряется в готовом коде, а строит такие процессы, чтобы код рождался уже более-менее приличным.
- Чем занимается: Сидит, думает, как нам всем жить правильно. Пишет инструкции, как код ревьюить, настраивает эти ваши CI/CD пайплайны, чтобы всё само бегало и проверялось. Это профилактика, чувак. Чтобы не лечить болезнь, а сделать так, чтобы не заболеть.
- Пример из жизни: Однажды я такой же хитрожопый процесс внедрил — заставил всех тестировщиков и разработчиков вместе тупо читать требования ДО того, как писать тесты. И знаешь что? Оказалось, что половину пунктов можно понять как угодно. Мы их исправили, и количество тупых багов из-за «а я думал, что тут кнопка, а не ссылка» — просто накрылось медным тазом. Вот это и есть работа QA.
QC — это, блядь, снайпер и сапёр. Его работа — найти и обезвредить всё, что просочилось через все эти красивые процессы. Продукто-ориентированный, реактивный — это всё умные слова, а по сути: «вот тебе фича, ищи, где тут косяки».
- Чем занимается: Это классический тестировщик. Пишет тест-кейсы, долбит руками по новой кнопке, пытаясь её сломать, пишет автотесты на Selenium, которые потом сами всё проверяют, и орет на всю контору: «Баг! Всё ебнулось!».
- Пример из жизни: У нас был проект, где каждый второй билд мог развалить главную покупку. Так вот, QC-подход был такой: новые фичи — долбим руками, исследуем, как обезьяны. А чтобы не проверять каждый раз одно и то же, завели пачку автотестов на этот самый сценарий покупки. После каждого обновления они запускались и, если что не так, сразу орали. Экономия времени — просто овердохуища.
Короче, итог простой, как три копейки: QA — это тот, кто строит хорошую, чистую кухню с вытяжкой и мойкой для посуды. А QC — это тот, кто приходит и проверяет, нет ли тараканов в готовом салате. Без первого будет вечный бардак и одни тараканы, а без второго ты рискуешь подать клиенту тапок вместо оливье. Эффективная команда — это когда оба этих чувака не посылают друг друга нахуй, а работают вместе.