Фундаментальная теория тестирования Flashcards
Почему именно такой порядок у пирамиды тестирования, и почему юнит - тесты в самом низу?
-
Unit-тесты занимают основное место в пирамиде, так как они:
- Наименее затратные по времени и ресурсам.
- Проверяют отдельные компоненты, что позволяет быстро обнаруживать и устранять ошибки в них.
- Обеспечивают широкий охват кода при меньших усилиях. -
Integration-тесты следуют за Unit-тестами, проверяя взаимодействие между компонентами:
- Устанавливают корректность передачи данных и работы между компонентами.
- Имеют более высокий уровень абстракции и сложности, чем Unit-тесты, поэтому их меньше, но они все еще затратны. -
End-to-End (E2E) тесты занимают вершину пирамиды:
- Проверяют приложение на уровне пользователя, оценивая его работу в реальных условиях.
- Более медленные и затратные, так как они эмулируют действия пользователя на более высоком уровне.
Что такое тестирование?
проверка соответствия реальных и ожидаемых результатов поведения программы, проводимая на конечном наборе тестов, выбранном определённым образом.
Что такое баг?
это различие фактического от ожидаемого (требования) результата.
Цель тестирования
проверка соответствия ПО предъявляемым требованиям, обеспечение уверенности в качестве ПО, поиск очевидных ошибок в программном обеспечении, которые должны быть выявлены до того, как их обнаружат пользователи программы.
Для чего проводится тестирование ПО?
-Для проверки соответствия требованиям.
-Для обнаружение проблем на более ранних этапах разработки и предотвращение повышения стоимости продукта.
-Обнаружение вариантов использования, которые не были предусмотрены при разработке. А также взгляд на продукт со стороны пользователя.
-повышение лояльности к компании и продукту, т.к. любой обнаруженный дефект негативно влияет на доверие пользователей.
QA
(Quality Assurance) — Обеспечение качества продукта — изучение возможностей по изменению и улучшению процесса разработки, улучшению коммуникаций в команде, где тестирование является только одним из аспектов обеспечения качества. QA подключается к задачам с момента идеи. (ВАЛИДАЦИЯ и ВЕРИФИКАЦИЯ)
К задачам обеспечения качества относятся:
- проверка технических характеристик и требований к ПО;
Применение: у нас есть требования к фиче (feature или новый функционал), которые сформировал аналитик. Мы проверяем Ожидаемые (требования и тестовая документация) с фактическими результатами. Так же бывают нефункциональные требования, которые в целом понятны, но были не учтены аналитиком или разрабом. FE: Кнопка Окей должна быть зеленая, а Cancel красная, но у нас в продукте наоборот. - оценка рисков;
Применение: Зачастую при планировании следующего спринта (дальше узнаете что это), на оценке задач, мы как QA подымаем вопрос о том, в чем могут возникнуть проблемы, что может быть задето + оценка времени, которое уйдет на тестирование. - планирование задач для улучшения качества продукции;
Применение: QA Engineer может предлагать улучшения при обсуждении новой фичи, как можно оптимизировать или улучшить уже придуманную аналитиком фичу. - подготовка документации, тестового окружения и данных;
- тестирование;
Применение: Само тестирование по составленной тестовой документации - анализ результатов тестирования, а также составление отчетов и других документов.
Применение: Когда мы совершаем прогон в нашей TMS (Test Management System - место где хранится наша дока), у нас формируется отчет сколько успешных кейсов было пройдено, сколько багов, сколько пропустили и сколько нашли блокеров.
QC
(Quality Control) — Контроль качества продукта — анализ результатов тестирования и качества новых версий выпускаемого продукта. QC engineer, как и тестировщик, подключается к проекту, когда разработка завершена. Он проверяет, что продукт получился таким, как хотел заказчик. (По факту только ВЕРИФИКАЦИЯ)
К задачам контроля качества относятся:
проверка готовности ПО к релизу;
проверка соответствия требований и качества данного проекта.
Проверка ФР к ОР
Верификация (verification)
Это процесс оценки системы с целью понимания, удовлетворяют ли результаты текущего этапа разработки условиям, которые были сформулированы в его начале. Иными словами, соответствуют ли требования, которые сформировал аналитик, текущему виду приложения.
Валидация (validation)
это определение соответствия разрабатываемого ПО ожиданиям и потребностям пользователя, его требованиям к системе.
Виды документации
Проектная и продуктовая
7 принципов тестирования
- Тестирование демонстрирует наличие дефектов (только снижает вероятность наличия, но не гарантирует их отсутствия)
- Исчерпывающее тестирование невозможно, за исключением тривиальных случаев.
- Раннее тестирование
4.Скопление дефектов. - Парадокс пестицида
- Тестирование зависит от контекста
- Заблуждение об отсутствии ошибок
Требования - что это?
это спецификация (описание) того, что должно быть реализовано.
Требования прописывает…
либо заказчик, либо аналитик, либо проджект/продукт менеджер.
9 атрибутов требований
- Корректность — точное описание разрабатываемого функционала.
- Проверяемость
- Полнота
- Недвусмысленность -требование должно содержать однозначные формулировки.
- Непротиворечивость
- Приоритетность
- Атомарность
- Модифицируемость
- Прослеживаемость
SDLC
(Software Development Life Cycle) - это жизненный цикл разработки программного обеспечения. Он представляет собой структурированный процесс, состоящий из различных фаз и этапов, которые выполняются при создании программного продукта.
этапы SDLC
- Анализ и сбор требований: на этом этапе происходит определение и сбор требований к программному продукту. Проводится исследование, выявляются потребности пользователей и определяются функциональные и нефункциональные требования.
- Проектирование: на этом этапе разрабатывается архитектура и дизайн программного продукта. Определяются компоненты системы, их взаимосвязи и интерфейсы.
- Разработка: на этом этапе происходит непосредственная реализация программного продукта. Программисты пишут код, создают функциональность и выполняют тестирование единиц кода.
- Тестирование: на этом этапе проводится тестирование программного продукта с целью выявления ошибок, дефектов и проверки его соответствия требованиям. Включает в себя функциональное тестирование, интеграционное тестирование, системное тестирование и другие виды тестирования.
- Развёртывание: на этом этапе программный продукт готовится к выпуску и установке на целевой среде. Включает в себя подготовку документации, инсталляцию, настройку и обучение пользователей.
- Эксплуатация и поддержка: после развёртывания программного продукта происходит его эксплуатация, поддержка и обновление. Ведется мониторинг работы системы, исправление ошибок и добавление новой функциональности.
STLC
(Software Testing Life Cycle) - это жизненный цикл тестирования программного обеспечения. Он представляет собой структурированный процесс, состоящий из различных фаз и этапов, которые выполняются при проведении тестирования программного продукта.
Основные этапы STLC включают:
- Планирование: на этом этапе определяются цели тестирования, разрабатывается план тестирования и определяются ресурсы, необходимые для выполнения тестов.
- Анализ требований и создание тестовой документации: на этом этапе изучаются требования к программному продукту и создается тестовая документация, включающая тестовые случаи, тестовые сценарии и другие артефакты.
- Дизайн тестов: на этом этапе разрабатывается стратегия тестирования и определяются методы, подходы и техники, которые будут использоваться для проведения тестов. Создаются тестовые случаи и сценарии на основе требований и анализа продукта.
- Подготовка к выполнению тестов: на этом этапе создается тестовая среда, включающая необходимые инструменты и данные для проведения тестов. Также выполняется подготовка тестовых сценариев и проверка настроек тестовой среды
- Выполнение тестов: на этом этапе проводятся тестирование по определенным тестовым случаям и сценариям. Результаты тестов регистрируются, ошибки и дефекты отслеживаются и отчеты о тестировании создаются.
- Анализ результатов тестирования: на этом этапе происходит анализ результатов тестирования, выявление и регистрация дефектов. Оценивается качество продукта и принимаются решения о его готовности к выпуску.
- Завершение: на этом этапе подводятся итоги тестирования, создается финальный отчет о выполненном тестировании, проводится оценка процесса тестирования и выявление возможных улучшений.
Серьёзность (Severity)
показывает степень ущерба, который наносится проекту существованием дефекта. Severity выставляется тестировщиком.
Градация Серьезности дефекта (Severity):
- Блокирующий
- Критический
3.. Значительный - Незначительный
- Тривиальный
Блокирующий дефект
(Blocker) тестирование значительной части функциональности вообще недоступно. Блокирующая ошибка, приводящая приложение в нерабочее состояние, в результате которого дальнейшая работа с тестируемой системой или ее ключевыми функциями становится невозможна.
Критический дефект
(Critical) критическая ошибка, неправильно работающая ключевая бизнес-логика, дыра в системе безопасности, проблема, приведшая к временному падению сервера или приводящая в нерабочее состояние некоторую часть системы, то есть не работает важная часть одной какой-либо функции либо не работает значительная часть, но имеется workaround (обходной путь/другие входные точки), позволяющий продолжить тестирование.