Ответ
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 проверяет результат этого процесса — сам продукт. Оба необходимы для успешной разработки.