В чём разница между Testing (тестирование) и QA (обеспечение качества)?

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

Ответ

Testing (Тестирование) — это тактическая деятельность по проверке готового продукта или его компонентов на наличие дефектов. Это подмножество QA.

QA (Quality Assurance, Обеспечение качества) — это стратегический процесс, охватывающий всю разработку и направленный на предотвращение дефектов через улучшение процессов.

Аспект Testing QA
Цель Найти баги и проверить соответствие требованиям. Предотвратить появление багов, улучшить процессы.
Фокус Продукт (что сделано). Процесс (как делается).
Подход Реактивный (исправление после обнаружения). Проактивный (предупреждение на этапе создания).
Вовлечённость Чаще на этапах проверки (тест-дизайн, выполнение тестов). На всех этапах жизненного цикла (планирование, разработка, тестирование, релиз).
Методы Написание и выполнение тест-кейсов, автотесты, нагрузочное тестирование. Внедрение стандартов кодирования, code review, CI/CD, метрики качества, ретроспективы.

Практический пример в разработке:

  • QA-деятельность: Внедрение практики Code Review для проверки кода до слияния в основную ветку.

    # Пример плохой практики, которую выявит code review (часть QA)
    def calculate_price(quantity, price):
        return quantty * price  # Опечатка -> потенциальный баг
  • Testing-деятельность: Написание автоматического unit-теста для проверки функции.

    # Пример теста (часть Testing)
    def test_calculate_price():
        result = calculate_price(5, 10)
        assert result == 50, f'Expected 50, got {result}'

Вывод: QA создаёт среду для производства качественного кода, а Testing проверяет результат этой работы.