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

1
Q

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

A
  1. Unit-тесты занимают основное место в пирамиде, так как они:
    - Наименее затратные по времени и ресурсам.
    - Проверяют отдельные компоненты, что позволяет быстро обнаруживать и устранять ошибки в них.
    - Обеспечивают широкий охват кода при меньших усилиях.
  2. Integration-тесты следуют за Unit-тестами, проверяя взаимодействие между компонентами:
    - Устанавливают корректность передачи данных и работы между компонентами.
    - Имеют более высокий уровень абстракции и сложности, чем Unit-тесты, поэтому их меньше, но они все еще затратны.
  3. End-to-End (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) — Обеспечение качества продукта — изучение возможностей по изменению и улучшению процесса разработки, улучшению коммуникаций в команде, где тестирование является только одним из аспектов обеспечения качества. QA подключается к задачам с момента идеи. (ВАЛИДАЦИЯ и ВЕРИФИКАЦИЯ)

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

К задачам обеспечения качества относятся:

A
  1. проверка технических характеристик и требований к ПО;
    Применение: у нас есть требования к фиче (feature или новый функционал), которые сформировал аналитик. Мы проверяем Ожидаемые (требования и тестовая документация) с фактическими результатами. Так же бывают нефункциональные требования, которые в целом понятны, но были не учтены аналитиком или разрабом. FE: Кнопка Окей должна быть зеленая, а Cancel красная, но у нас в продукте наоборот.
  2. оценка рисков;
    Применение: Зачастую при планировании следующего спринта (дальше узнаете что это), на оценке задач, мы как QA подымаем вопрос о том, в чем могут возникнуть проблемы, что может быть задето + оценка времени, которое уйдет на тестирование.
  3. планирование задач для улучшения качества продукции;
    Применение: QA Engineer может предлагать улучшения при обсуждении новой фичи, как можно оптимизировать или улучшить уже придуманную аналитиком фичу.
  4. подготовка документации, тестового окружения и данных;
  5. тестирование;
    Применение: Само тестирование по составленной тестовой документации
  6. анализ результатов тестирования, а также составление отчетов и других документов.
    Применение: Когда мы совершаем прогон в нашей 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) — Контроль качества продукта — анализ результатов тестирования и качества новых версий выпускаемого продукта. QC engineer, как и тестировщик, подключается к проекту, когда разработка завершена. Он проверяет, что продукт получился таким, как хотел заказчик. (По факту только ВЕРИФИКАЦИЯ)

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

Верификация (verification)

A

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

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

Валидация (validation)

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

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

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

Требования - что это?

A

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

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

9 атрибутов требований

A
  1. Корректность — точное описание разрабатываемого функционала.
  2. Проверяемость
  3. Полнота
  4. Недвусмысленность -требование должно содержать однозначные формулировки.
  5. Непротиворечивость
  6. Приоритетность
  7. Атомарность
  8. Модифицируемость
  9. Прослеживаемость
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

SDLC

A

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

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

этапы SDLC

A
  1. Анализ и сбор требований: на этом этапе происходит определение и сбор требований к программному продукту. Проводится исследование, выявляются потребности пользователей и определяются функциональные и нефункциональные требования.
  2. Проектирование: на этом этапе разрабатывается архитектура и дизайн программного продукта. Определяются компоненты системы, их взаимосвязи и интерфейсы.
  3. Разработка: на этом этапе происходит непосредственная реализация программного продукта. Программисты пишут код, создают функциональность и выполняют тестирование единиц кода.
  4. Тестирование: на этом этапе проводится тестирование программного продукта с целью выявления ошибок, дефектов и проверки его соответствия требованиям. Включает в себя функциональное тестирование, интеграционное тестирование, системное тестирование и другие виды тестирования.
  5. Развёртывание: на этом этапе программный продукт готовится к выпуску и установке на целевой среде. Включает в себя подготовку документации, инсталляцию, настройку и обучение пользователей.
  6. Эксплуатация и поддержка: после развёртывания программного продукта происходит его эксплуатация, поддержка и обновление. Ведется мониторинг работы системы, исправление ошибок и добавление новой функциональности.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

STLC

A

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

20
Q

Основные этапы STLC включают:

A
  1. Планирование: на этом этапе определяются цели тестирования, разрабатывается план тестирования и определяются ресурсы, необходимые для выполнения тестов.
  2. Анализ требований и создание тестовой документации: на этом этапе изучаются требования к программному продукту и создается тестовая документация, включающая тестовые случаи, тестовые сценарии и другие артефакты.
  3. Дизайн тестов: на этом этапе разрабатывается стратегия тестирования и определяются методы, подходы и техники, которые будут использоваться для проведения тестов. Создаются тестовые случаи и сценарии на основе требований и анализа продукта.
  4. Подготовка к выполнению тестов: на этом этапе создается тестовая среда, включающая необходимые инструменты и данные для проведения тестов. Также выполняется подготовка тестовых сценариев и проверка настроек тестовой среды
  5. Выполнение тестов: на этом этапе проводятся тестирование по определенным тестовым случаям и сценариям. Результаты тестов регистрируются, ошибки и дефекты отслеживаются и отчеты о тестировании создаются.
  6. Анализ результатов тестирования: на этом этапе происходит анализ результатов тестирования, выявление и регистрация дефектов. Оценивается качество продукта и принимаются решения о его готовности к выпуску.
  7. Завершение: на этом этапе подводятся итоги тестирования, создается финальный отчет о выполненном тестировании, проводится оценка процесса тестирования и выявление возможных улучшений.
21
Q

Серьёзность (Severity)

A

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

22
Q

Градация Серьезности дефекта (Severity):

A
  1. Блокирующий
  2. Критический
    3.. Значительный
  3. Незначительный
  4. Тривиальный
23
Q

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

A

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

24
Q

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

A

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

25
Q

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

A

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

26
Q

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

A

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

27
Q

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

A

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

28
Q

Срочность

A

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

29
Q

Градация Приоритета дефекта (Priority):

A

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

30
Q

Пирамида тестирования определение

A

также часто говорят уровни тестирования, это группировка тестов по уровню детализации и их назначению.

31
Q

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

A

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

32
Q

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

A

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

33
Q

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

A

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

34
Q

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

A

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

35
Q

Приведи пример когда высокая серьезность, но низкий приоритет

A

В мобильном приложении условно, банка, когда клиент заходит в приложение, у него происходит краш (блокер). Если эта проблема у 1-2 юзеров из миллионов, и мы не поддерживаем данную ОС. Скорее всего такой баг мы вообще не возьмем в работу, так как стоимость разработки стоит больше, чем потерять этих клиентов.

36
Q

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

A

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

37
Q

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

A

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

38
Q

Чем отличается валидация от верификации

A

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

39
Q

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

A

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

40
Q

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

A

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

41
Q

Что означает тестирование демонстрирует наличие дефектов, а не их отсутствие

A

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

42
Q

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

A

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

43
Q

Что значит Раннее тестирование сохраняет время и деньги

A

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

44
Q

Почему unit тестирования в поддержке сложны

A

Частые изменения в коде.
Сложность модуляризации.
Избыточное использование заглушек и моков.
Тестирование приватных методов.
Проблемы с поддержанием тестовых данных.
Трудности с пониманием и воспроизведением ошибок.

45
Q

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

A

Функциональное тестирование, Нефункциональное
По уровню автоматизации: Ручное, автоматизированное
Smoke тестирование, Sanity тестирование, Регрессионное тестирование, Exploratory тестирование, Ad-hoc тестирование

46
Q

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

A

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

47
Q

Расскажи что такое Smoke тестирование

A

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