Фундаментальная теория Flashcards

Изучите базовые принципы QA: цели тестирования, виды дефектов, принципы, уровни тестирования и основные термины. Идеально чтобы заложить прочную основу для работы в QA.

1
Q

Почему юнит-тесты находятся внизу пирамиды тестирования?

A

Unit-тесты проверяют отдельные компоненты, требуют меньше ресурсов и времени, обеспечивают широкое покрытие кода. Интеграционные тесты проверяют взаимодействие компонентов, а E2E — работу приложения в реальных условиях. Чем выше уровень, тем сложнее и дороже тесты.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Что такое тестирование?

A

Проверка соответствия реального поведения программы ожидаемым результатам на основе выбранных тестов.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Что такое баг?

A

Несоответствие фактического результата требованиям (ожидаемому результату).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Цель тестирования.

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Для чего проводится тестирование ПО?

A

Проверка соответствия требованиям.

Раннее обнаружение ошибок.

Выявление непредусмотренных сценариев.

Повышение доверия пользователей.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Что такое QA?

A

Quality Assurance — улучшение процессов разработки, коммуникаций в команде и качества продукта на всех этапах (ВЕРИФИКАЦИЯ И ВАЛИДАЦИЯ).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Какие задачи включает обеспечение качества?

A

Проверка требований к ПО.

Применение: у нас есть требования к фиче (feature или новый функционал), которые сформировал аналитик. Мы проверяем Ожидаемые (требования и тестовая документация) с фактическими результатами. Так же бывают нефункциональные требования, которые в целом понятны, но были не учтены аналитиком или разрабом. FE: Кнопка Окей должна быть зеленая, а Cancel красная, но у нас в продукте наоборот.

Оценка рисков и планирование улучшений.

Применение: Зачастую при планировании следующего спринта (дальше узнаете что это), на оценке задач, мы как QA подымаем вопрос о том, в чем могут возникнуть проблемы, что может быть задето + оценка времени, которое уйдет на тестирование.

Подготовка тестовой среды и документации.

Применение: Само тестирование по составленной тестовой документации

Тестирование и анализ результатов.

Применение: Когда мы совершаем прогон в нашей TMS (Test Management System - место где хранится наша дока), у нас формируется отчет сколько успешных кейсов было пройдено, сколько багов, сколько пропустили и сколько нашли блокеров.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Что такое QC?

A

Quality Control — контроль качества готового продукта (верификация соответствия требованиям).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

В чем разница между валидацией и верификацией?

A

Верификация: Соответствие продукта требованиям (правильно ли мы делаем?).

Валидация: Соответствие потребностям пользователя (правильное ли мы делаем?).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

7 принципов тестирования.

A
  1. Тестирование выявляет дефекты, но не гарантирует их отсутствие.
  2. Исчерпывающее тестирование невозможно.
  3. Раннее тестирование экономит время и деньги.
  4. Дефекты склонны группироваться.
  5. Парадокс пестицида (тесты устаревают).
  6. Тестирование зависит от контекста.
  7. Заблуждение об отсутствии ошибок (пройденные тесты ≠ отсутствие багов).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Что такое нефункциональное тестирование?

A

Проверка аспектов, не связанных с функциональностью: производительность, безопасность, удобство использования.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Что такое регрессионное тестирование?

A

Проверка, что изменения в коде не нарушили существующую функциональность.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Что такое Smoke-тестирование?

A

Проверка базовой работоспособности системы перед углубленным тестированием. Если смок тест не пройден, то нет смысла проводить дальнейшее тестирование.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Пример бага с высокой серьезностью, но низким приоритетом.

A

Краш приложения у 1% пользователей устаревшей ОС, которую компания не поддерживает.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Почему раннее тестирование экономит ресурсы?

A

Исправление ошибок на ранних этапах дешевле, чем на стадиях тестирования или эксплуатации.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Какие виды тестирования существуют?

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Что такое Severity и Priority дефекта?

A

Severity: Влияние дефекта на систему (выставляет тестировщик).

Priority: Срочность исправления (выставляет менеджер).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Градации Severity.

A
  1. Blocker — система неработоспособна.
  2. Critical — нарушена ключевая логика.
  3. Major — существенные ошибки с обходным путем.
  4. Minor — незначительные дефекты (например, GUI).
  5. Trivial — косметические недочеты.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Градации Priority.

A

Высокий (High)Критическая для проекта ошибка. Должна быть исправлена как можно быстрее.

Средний (Medium)Не критичная для проекта ошибка, однако требует обязательного решения.

Низкий (Low)*Наличие данной ошибки не является критичным и не требует срочного решения. Может быть исправлена, когда у команды появится время на ее устранение.

20
Q

Что проверяют на интеграционном уровне тестирования?

A

Взаимодействие компонентов, API, работу с БД и внешними сервисами.

21
Q

Почему Unit-тесты сложно поддерживать?

A

Частые изменения кода, сложность мокирования зависимостей, тестирование приватных методов.

22
Q

Что такое парадокс пестицида?

A

Если тесты не обновляются, они перестают находить новые дефекты.

23
Q

Что такое «заблуждение об отсутствии ошибок»?

A

Ошибочное мнение, что отсутствие найденных дефектов = их полное отсутствие.

24
Q

Какие атрибуты должны быть у требований, что значит каждое из них?

A

Корректность, проверяемость, полнота, однозначность, непротиворечивость, приоритетность, атомарность.

25
Q

Этапы SDLC и их описание.

A

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

Проектирование: на этом этапе разрабатывается архитектура и дизайн программного продукта. Определяются компоненты системы, их взаимосвязи и интерфейсы.

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

Тестирование: на этом этапе проводится тестирование программного продукта с целью выявления ошибок, дефектов и проверки его соответствия требованиям. Включает в себя функциональное тестирование, интеграционное тестирование, системное тестирование и другие виды тестирования.

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

Эксплуатация и поддержка: после развёртывания программного продукта происходит его эксплуатация, поддержка и обновление. Ведется мониторинг работы системы, исправление ошибок и добавление новой функциональности.

26
Q

Этапы STLC и их описание

A

Планирование: на этом этапе определяются цели тестирования, разрабатывается план тестирования и определяются ресурсы, необходимые для выполнения тестов.

Анализ требований и создание тестовой документации: на этом этапе изучаются требования к программному продукту и создается тестовая документация, включающая тестовые случаи, тестовые сценарии и другие артефакты.

Дизайн тестов: на этом этапе разрабатывается стратегия тестирования и определяются методы, подходы и техники, которые будут использоваться для проведения тестов. Создаются тестовые случаи и сценарии на основе требований и анализа продукта.

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

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

Анализ результатов тестирования: на этом этапе происходит анализ результатов тестирования, выявление и регистрация дефектов. Оценивается качество продукта и принимаются решения о его готовности к выпуску.

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

27
Q

Задачи QC

A
  • Проверка готовности ПО к релизу
  • Проверка ФР к ОР
  • Проверка соответствия требований и качества данного продукта
28
Q

Виды документации

A

Проектная и продуктовая

29
Q

Требования

A

Это спецификация (описание) того, что должно быть реализовано.

30
Q

Требования прописывает…

A

либо заказчик, либо аналитик, либо проджект/продукт менеджер.

31
Q

Что такое STLC

A

(Software Testing Life Cycle) - это жизненный цикл тестирования программного обеспечения. Он представляет собой структурированный процесс, состоящий из различных фаз и этапов, которые выполняются при проведении тестирования программного продукта.

32
Q

Блокирующий дефект

A

(Blocker) тестирование значительной части функциональности вообще недоступно. Блокирующая ошибка, приводящая приложение в нерабочее состояние, в результате которого дальнейшая работа с тестируемой системой или ее ключевыми функциями становится невозможна.

32
Q

Что такое SDLC

A

(Software Development Life Cycle) - это жизненный цикл разработки программного обеспечения. Он представляет собой структурированный процесс, состоящий из различных фаз и этапов, которые выполняются при создании программного продукта.

32
Q

Что такое серьёзность (Severity)

A

Показывает степень ущерба, который наносится проекту существованием дефекта. Severity выставляется тестировщиком.

33
Q

Что такое срочность (priority)

A

Показывает, как быстро дефект должен быть устранён. Priority выставляется менеджером, тимлидом или заказчиком

33
Q

Значительный дефект

A

(Major) не работает важная часть одной какой-либо функции/бизнес-логики, но при выполнении специфических условий, либо есть workaround, позволяющий продолжить ее тестирование либо не работает не очень значительная часть какой-либо функции. Также относится к дефектам с высокими visibility - обычно не сильно влияющие на функциональность дефекты дизайна, которые, однако, сразу бросаются в глаза.

33
Q

Критический дефект

A

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

34
Q

Незначительный дефект

A

(Minor) часто ошибки GUI, которые не влияют на функциональность, но портят юзабилити или внешний вид. Также незначительные функциональные дефекты, либо которые воспроизводятся на определенном устройстве.

35
Q

Тривиальный дефект

A

(Trivial) почти всегда дефекты на GUI — опечатки в тексте, несоответствие шрифта и оттенка и т.п., либо плохо воспроизводимая ошибка, не касающаяся бизнес-логики, проблема сторонних библиотек или сервисов, проблема, не оказывающая никакого влияния на общее качество продукта

35
Q

Какой баг отловить при верификации невозможно

A

Баги, возникающие в реальных условиях эксплуатации

36
Q

Сколько процентов функционала содержит основное количество багов

A

20% функционала имеет 80% багов

37
Q

Когда проводится sanity тестирование

A

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

38
Q

Виды интеграционного тестирования

A

Существует три различных подхода к интеграционному тестированию, каждый из которых будет объяснен ниже: интеграционное тестирование сверху вниз, интеграционное тестирование снизу вверх и многослойное интеграционное тестирование.

39
Q

Интеграционный уровень

A

Проверят взаимосвязь компоненты, которую проверяли на модульном уровне, с другой или другими компонентами, а также интеграцию компоненты с системой (проверка работы с ОС, сервисами и службами, базами данных, железом и т.д.). Часто в английских статьях называют service test или API test.

В случае с интеграционными тестами редко когда требуется наличие UI, чтобы его проверить. Компоненты ПО или системы взаимодействуют с тестируемым модулем с помощью интерфейсов. Тут начинается участие тестирования. Это проверки API, работы сервисов (проверка логов на сервере, записи в БД) и т.п.

Строго говоря на модульном уровне тестирование тоже участвует. Возможно помогает проектировать тесты или во время регресса смотрит за прогоном этих тестов, и если что-то падает, то принимает меры.

40
Q

Компонентный уровень

A

Чаще всего называют юнит тестированием. Реже называют модульным тестированием. На этом уровне тестируют атомарные части кода. Это могут быть классы, функции или методы классов.
Пример: твоя компания разрабатывает приложение “Калькулятор”, которое умеет складывать и вычитать. Каждая операция это одна функция. Проверка каждой функции, которая не зависит от других, является юнит тестированием.
Юнит тесты находят ошибки на фундаментальных уровнях, их легче разрабатывать и поддерживать. Важное преимущество модульных тестов в том, что они быстрые и при изменении кода позволяют быстро провести регресс (убедиться, что новый код не сломал старые части кода).
Тест на компонентном уровне:
1. Всегда автоматизируют.
2. Модульных тестов всегда больше, чем тестов с других уровней.
3. Юнит тесты выполняются быстрее всех и требуют меньше ресурсов.
4.Практически всегда компонентные тесты не зависят от других модулей (на то они и юнит тесты) и UI системы.
В 99% разработкой модульных тестов занимается разработчик, при нахождении ошибки на этом уровне не создается баг-репортов. Разработчик находит баг, правит, запускает и проверяет (абстрактно говоря это разработка через тестирование) и так по новой, пока тест не будет пройден успешно*.
На модульном уровне разработчик (или автотестер) использует метод белого ящика. Он знает что принимает и отдает минимальная единица кода, и как она работает.

41
Q

Принципы пирамиды

A

Тест (ручной, на высоких уровнях, или автотест, на низких уровнях), должен быть на том же уровне, что и тестируемый объект. Например, модульный тест (проверяющий функции, классы, объекты и т.п.) должен быть на компонентном уровне. Это неправильно, если на приемочном уровне запускается тест, который проверят минимальную единицу кода.
Тесты уровнем выше не проверяют логику тестов уровнем/уровнями ниже.
Чем выше тесты уровнем, тем они:
сложней в реализации, и соответственно, дороже в реализации;
важнее для бизнеса и критичней для пользователей;
замедляют скорость прохождения тестовых наборов, например, регресса.