Тестирование

Quality Assurance VS Quality Control VS Testing

Сегодня, когда люди говорят Quality Assurance (QA), часто под этим подразумевается процесс тестирования (Testing). Так ли это на самом деле?

Обеспечение качества (QA) тесно связано с тестированием, но на самом деле это разные понятия.

Для начала, давайте разберёмся что же такое качество.

Качество

Качество (Quality) — Степень, с которой компонент, система или процесс соответствует
зафиксированным требованиям и/или ожиданиям и нуждам пользователя или заказчика.

Атрибут качества (Quality attributes) — Свойство или характеристика, влияющая на качество объекта.

Атрибуты качества:

  • Функциональная пригодность
  • Безопасность
  • Совместимость
  • Надёжность
  • Удобство использования
  • Производительность
  • Удобство сопровождения
  • Переносимость

Теперь, когда разобрались с тем, что такое качество давайте посмотрим в чём же разница между обеспечением качества (Quality Assurance), контролем качества (Quality Control) и Тестирование (Testing).

Quality Assurance VS Quality Control VS Testing

Обеспечение качества (Quality Assurance) — Рабочие методы и активности, направленные на выполнение требований к качеству и его улучшение.

Контроль качества (Quality control) — Рабочие методы и активности, направленные на оценку
качества компонента или системы.

Тестирование (Testing) — Процесс, содержащий в себе все активности жизненного цикла, как динамические, так и статические, касающиеся планирования, подготовки и оценки программного продукта и связанных с этим результатов работ (документация, макеты и т.д.) с целью определить, что они соответствуют описанным требованиям, показать, что они подходят для заявленных целей и для определения дефектов.

Давайте посмотрим какие именно активности выполняются на каждом этапе

QA — выставляет минимальные требования к качеству, например нет открытых Major и выше дефектов, процент не пройденных тестов <10% и т.д.

Testing — выполняет проверку качества требований, макетов и т.д., составление тестовой документации, проверку ПО на соответствие требованиям, создание баг репортов.

QC — выполняет анализ результатов тестирования, анализирует метрики и на основе их определяется текущее качество продукта.

QA — Бывают ситуации, когда качество не достигло ожидаемого уровня или снизилось. В таких случаях QA анализирует проблемы и пытается решить, каким образом можно сделать продукт лучше.

Поэтому задача QA стараться делать так, чтобы лучше и быстрее найти дефекты, а ещё и чтобы они в принципе не появлялись в продукте.

Что же может сделать QA для этого?

Прежде всего — это ввод лучших практик, например:

  • Код ревью разработчиков
  • Ревью тест-кейсов
  • Ревью требований
  • CI\CD
  • и тд

Сами эти практики не являются QA, но решение ввести любую из них — это же QA активность.

QC и Тестирование влияют на качество косвенно. Они лишь показывают наличие багов и дают понять текущий уровень качества, но не улучшают его. В свою очередь, QA напрямую влияет на качество, принимая верные решения и создавая для проекта такую атмосферу, в которой дефекты будут появляться намного реже.

Исходя из этого, тестирование является активностью контроля качества. В свою очередь, контроль качества входит в обеспечение качества.

Подведём итог:

  1. QA ≠ QC ≠ Testing
  2. QC включается в себя Testing.
  3. Testing — нахождение ошибок и несоответствий в требованиях, продукте, документации и тд.
  4. QC — анализ метрик, статистик, определение и анализ качества продукта.
  5. QA — ввод новых практик, которые уменьшают вероятность появления багов в продукте.
  6. Тестированием занимается тестировщик.
  7. QC обычно выполняет Test Lead либо ключевой тестировщик.
  8. QA обычно ложится на плечи QA Manager.