Найти в Дзене
Mr. Tester

Определения QA, QC, Тестирование. Верификация и валидация. 7 принципов тестирования.

QA (Quality Assurance), QC (Quality Control), Верификация (Verification) и валидация (Validation) – все эти термины связаны с процессом обеспечения качества продукта. Но в чем разница между ними и как они связаны друг с другом? Давайте разберемся вместе.

Тестирование - это процесс анализа программного средства и сопутствующей документации с целью выявления дефектов и повышения качества продукта.

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

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

  • Планирование и управление
  • Анализ и проектирование
  • Внедрение и реализация
  • Оценка критериев выхода и создание отчетов
  • Действия по завершению тестов

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

QC (Quality Control) - это контроль качества уже готового продукта. QC включает в себя проверку качества сборки, упаковки, маркировки и других аспектов, связанных с производством продукта.

Отличие QC и QA:

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

Верификация (Verification) - это проверка того, что продукт соответствует своим спецификациям и требованиям. Верификация может быть проведена на любом этапе разработки или производства продукта.

Различные мероприятия процесса верификации:

  • Анализ различных аспектов тестирования (сроки, ресурсы, персонал, стоимость, инструменты тестирования и т.д.);
  • Покрытие операторов – процентное отношение операторов, исполняемых набором тестов, к их общему количеству;
  • Покрытие условий – процент исходов условий, которые были проверены набором тестов. 100% покрытие условий требует, чтобы каждое отдельное условие в каждом выражении решения было проверено как истина и ложь;
  • Покрытие альтернатив – процент результатов альтернативы, который был проверен набором тестов. Стопроцентное покрытие решений подразумевает стопроцентное покрытие ветвей и стопроцентное покрытие операторов;
  • Рецензирование – это оценка состояния продукта или проекта с целью установления расхождений с запланированными результатами и для выдвижения предложений по улучшению. Примерами рецензирования могут служить: управленческое рецензирование, неформальное рецензирование, технический анализ, инспекция и разбор;
  • Разбор – это пошаговый разбор, проводимый автором документа для сбора информации и обеспечения одинакового понимания содержания документа;
  • Инспекция – это тип равноправного анализа, основанный на визуальной проверке документов для поиска ошибок. Например, нарушение стандартов разработки и несоответствие документации более высокого уровня. Наиболее формальная методика рецензирования и поэтому всегда основывается на документированной процедуре.

Примеры верификации в зависимости от уровней тестирования:

  • Модульное тестирование (unit testing): проверка осуществления проектирования программного обеспечения.
  • Интеграционное тестирование (integration testing): тестирование на интеграцию между всеми соответствующими компонентами до того как ПО перейдет к следующему уровню (system).
  • Системное тестирование (system testing): обеспечение соответствия системы предопределенным требованиям и спецификации.
  • Приёмочное тестирование (acceptance testing): убедитесь, что система отвечает требованиям клиента.

Валидация (Validation) - это процесс проверки того, что продукт удовлетворяет потребности и ожидания пользователей. Валидация проводится после завершения разработки и перед началом производства продукта.

С помощью валидации вы можете быть уверенным в том, что создали «правильный» продукт. Продукт, который полностью удовлетворяет заказчика.

-2

Теперь, когда мы знаем, что такое QA, QC, Верификация и Валидация, давайте рассмотрим 7 принципов тестирования:

1. Тестирование показывает наличие дефектов - Тестирование может показать наличие дефектов в программе, но не доказать их отсутствие.

2. Исчерпывающее тестирование недостижимо - Невозможно провести исчерпывающее тестирование, которое бы покрывало все комбинации пользовательского ввода и состояний системы, за исключениям совсем уж примитивных случаев.

3. Раннее тестирование - Тестирование должно начинаться как можно раньше в жизненном цикле разработки программного обеспечения и его усилия должны быть сконцентрированы на определенных целях. Чем раньше обнаруживается дефект, тем проще и дешевле его исправить.

4. Скопление дефектов - Разные модули системы могут содержать разное количество дефектов, то есть плотность скопления дефектов в разных элементах программы может отличаться. В основном, большую часть критических дефектов находят в ограниченном количестве модулей. Это проявление принципа Парето: 80% проблем содержатся в 20% модулей.

5. Парадокс пестицида - Прогоняя одни и те же тесты вновь и вновь, вы столкнетесь с тем, что они находят все меньше новых ошибок. Поскольку система эволюционирует, многие из ранее найденных дефектов исправляют и старые тест-кейсы больше не срабатывают.

6. Тестирование зависит от контекста - Выбор методологии, техники и типа тестирования будет напрямую зависеть от природы самой программы. Например, программное обеспечение для медицинских нужд требует гораздо более строгой и тщательной проверки. Из тех же соображений, сайт с большой посещаемостью должен пройти через серьезное тестирование производительности, чтобы показать возможность работы в условиях высокой нагрузки.

7. Заблуждение об отсутствии ошибок - Тот факт, что тестирование не обнаружило дефектов, еще не значит, что программа готова к релизу. Нахождение и исправление дефектов будет не важным, если система окажется неудобной в использовании и не будет удовлетворять ожиданиям и потребностям пользователя.