В чём разница между QA (Quality Assurance) и QC (Quality Control)?

«В чём разница между QA (Quality Assurance) и QC (Quality Control)?» — вопрос из категории Основы тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

QA (Quality Assurance, Обеспечение качества) и QC (Quality Control, Контроль качества) — это два взаимодополняющих, но принципиально разных подхода к управлению качеством ПО.

Аспект QA (Обеспечение качества) QC (Контроль качества)
Фокус Процесс. Предотвращение дефектов на всех этапах жизненного цикла. Продукт. Выявление дефектов в готовом артефакте (коде, сборке).
Подход Проактивный, превентивный. «Сделать правильно с первого раза». Реактивный, инспекционный. «Найти и исправить ошибки».
Деятельность Создание и улучшение процессов: планирование, стандарты кодирования, ревью кода, обучение, аудиты, выбор инструментов. Непосредственное тестирование продукта: выполнение тест-кейсов, автоматизированные проверки, поиск багов, верификация исправлений.
Когда На протяжении всего цикла разработки (SDLC). Как правило, на этапе тестирования готовых компонентов или системы.
Цель Улучшить процесс, чтобы минимизировать количество багов, попадающих в продукт. Найти как можно больше багов в уже созданном продукте.

Практические примеры:

  • QA-деятельность: Внедрение практики Code Review для повышения качества кода до его коммита.
  • QC-деятельность: Написание и запуск автоматизированного UI-теста для проверки сценария логина.
# Пример QC-активности: Автоматизированный тест (контроль продукта)
def test_login_functionality():
    # Проверяем готовый функционал
    response = api_login(username="test_user", password="valid_pass123")
    assert response.status_code == 200
    assert "access_token" in response.json()

    response = api_login(username="wrong", password="wrong")
    assert response.status_code == 401  # Ожидаем ошибку авторизации

Итог: QA строит надёжный процесс, который производит качественный продукт. QC проверяет результат этого процесса — сам продукт. Оба необходимы для успешной разработки.