Собираем QA, QC и тестирование в матрешку!
Мы любим пополнять наши ряды талантливыми новобранцами. И на собеседовании не раз замечали, что на вопрос о разнице между обеспечением качества (Quality Assurance, QA), контролем качества (QualityControl, QC) и тестированием (Testing) ответы сильно разнятся. Порой даже вызывают ожесточенные споры с «переворачиванием столов».
А суть в том, что определяются эти понятия в каждой компании и даже команде по-своему. В разное время под термином «тестирование» подразумевались различные вещи – вот порой и возникает недопонимание. Нам такие туманности не нужны, поэтому давайте положим все на свои места и разберемся, что к чему. Ура!
Quality Assurance
По сути, тестирование и QC входят в QA, так что наиболее простым сравнением будет обычная матрешка. Обеспечение качества – это совокупность мероприятий, покрывающих все технологические стадии разработки, релиза и эксплуатации ПО для обеспечения качества выпускаемого продукта. Если чуть проще, то это мозговой центр принятия решений в командах по обеспечению качества продуктов, наша самая большая матрешка.
Процесс обеспечения качества состоит из:
- Проверки спецификаций и требований к ПО.
- Оценки рисков.
- Планирования задач для улучшения качества продукта.
- Подготовки тестовой документации (регламент, подход, тест-план, чек-лист), тестовых окружений и данных. По сравнению с QC и тестированием на этом этапе разрабатывается эффективная модель и последовательность проведения различных тестов продукта, описывается инструментарий и сценарии, которые обеспечат необходимый уровень покрытия функциональности.
- Тестирования и верификации требований и спецификаций.
- Процесса тестирования продукта.
- Анализа результатов тестирования, составления отчетов и других приемочных документов.
QA-менеджер должен точно понимать, в какой момент к проекту подключится тестер, и успеть подготовить к этому времени план тестирования, тестовую документацию, окружение. Помимо этого, он должен обладать парой скилов других членов команды:
- От маркетолога – понимание целевой аудитории и рынка.
- От программиста – хотя бы поверхностное понимание кода и технических ограничений для реализации функционала.
- От PM’а – целостное восприятие всех частей проекта, понимание сроков, этапов и итераций жизненного цикла проекта.
Таким образом, мы выяснили, что QA помимо непосредственного тестирования и оценки качества продукта представляет собой ряд как организационных мероприятий по планированию и формированию подхода, так и подготовительных активностей. Это все позволяет добиться высокого качества продукта, артефактов и непосредственно всего процесса привлечения команды тестирования.
Quality control
Внутри матрешки QA находится QC. Это проверка актуального состояния объекта тестирования с помощью таких критериев, как:
- Степень готовности продукта к релизу.
- Соответствие требованиям.
- Соответствие заявленному уровню качества проекта.
Таким образом, основной фронт работы QC-менеджера состоит в качестве промежуточных и конечных результатов разработки. Контролируется это в целом так:
- Проверяется соответствие функционала требованиям.
- Анализируется документация на соответствие стандартам написания, содержания и формата. Проверять можно как тестовую документацию и спецификацию, так и календарный план проекта.
- Делается ревью кода насчет адекватности стандартам программирования, архитектурной документации, требованиям безопасности и т.д.
То есть, цель мероприятий QC заключается в предоставлении актуальных и своевременных срезов по качеству на основе различных методик его расчета в зависимости от этапа разработки продукта и количества и приоритета найденных дефектов.
Тестирование
Тестирование – это проверка соответствия создаваемого продукта требованиям, осуществляемая путем анализа ее работы в специальных условиях, выбранных определенным образом.
Общая схема тестирования выглядит примерно так:
1. Тестер получает продукт и/или требования на входе.
2. Он создает тесты и наблюдает за поведением программы в тех или иных условиях.
3. Тестировщик получает данные о соответствиях и несоответствиях поведения продукта спецификациям. После чего он документирует это в виде описания дефектов, заполнения тестовой документации.
4. Полученная информация используется для улучшения продукта или изменения требований с помощью внесения доработок в код.
В процессе тестирования специалист управляет выполнением программы и создает этим условия для наблюдения за поведением продукта, сравнивая реальность с ожидаемой ситуацией.
Он умеет определить, чем вызвана ошибка, или по крайней мере знает, где это искать. В том числе стандартной практикой является использование вспомогательного инструментария и внутренних возможностей платформы разработки, контроль логов приложения, работа с БД.
Подводим итог
Мы считаем, что для качественных продуктов важна перспектива. Писать красивый код и тестировать — это чудесно, но именно опытный QA-менеджер сможет увидеть причины срывов дедлайнов, недовольства заказчиков и, конечно, запоротого финального продукта или сервиса.
А так как теперь вы знаете, как отличить QA от QC и тестирование от них обоих, у вас есть все шансы создавать ПО 80 уровня. Сегодня и всегда!