---
title: Основные концепции тестирования
seo:
  title: Основные концепции тестирования — QA
  description: Тема «Основные концепции тестирования» для собеседования QA. Что такое тестирование? Зачем тестировать ПО?
---

[Все темы QA](/qa)

## <strong>Что такое тестирование?</strong> [#q-14bee738d69b81eba8a7d3766478bf01]

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

:::note[Ссылки для изучения]

1. [Тестирование и 7 основных этапов проведения](https://neiros.ru/blog/code/testirovanie-i-7-osnovnykh-etapov-ego-provedeniya/)
   :::

---

## <strong>Зачем тестировать ПО?</strong> [#q-14bee738d69b818781a4c3584d3ee965]

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

:::note[Ссылки для изучения]

1. [Тестирование и 7 основных этапов проведения](https://neiros.ru/blog/code/testirovanie-i-7-osnovnykh-etapov-ego-provedeniya/)
   :::

---

## <strong>Какие существуют этапы тестирования?</strong> [#q-14bee738d69b81ea84e1de20a916842e]

Этапы тестирования ПО обычно включают&#58;

1. <strong>Планирование тестирования&#58;</strong> определение целей, стратегии
   и методов тестирования.

1. <strong>Дизайн тестов&#58;</strong> разработка тестовых случаев и сценариев
   на основе требований.

1. <strong>Исполнение тестов&#58;</strong> запуск тестовых случаев и сбор
   результатов.

1. <strong>Анализ результатов&#58;</strong> оценка и сопоставление полученных
   данных с ожидаемыми результатами.

1. <strong>Отчетность&#58;</strong> документирование результатов тестирования и
   выявленных ошибок.

Каждый этап имеет свои специфические задачи и методы работы, направленные на обеспечение качества разрабатываемого программного продукта.

:::note[Ссылки для изучения]

1. [Какие бывают виды тестирования](https://ru.hexlet.io/blog/posts/vidy-testirovaniya)
   :::

---

## <strong>Какие типы тестирования можете назвать?</strong> [#q-14bee738d69b81d1a1e5ee99210fdf05]

Различают следующие основные типы тестирования программного обеспечения&#58;

1. <strong>Модульное тестирование (</strong>
   <code>Unit testing</code>
   <strong>)&#58;</strong> Проверка отдельных модулей или компонентов программы
   на корректность их работы.

1. <strong>Интеграционное тестирование (</strong>
   <code>Integration testing</code>
   <strong>)&#58;</strong> Проверка взаимодействия между различными модулями или
   компонентами программы.

1. <strong>Системное тестирование (</strong>
   <code>System testing</code>
   <strong>)&#58;</strong> Проверка всей системы как единого целого для
   подтверждения соответствия требованиям.

1. <strong>Приемочное тестирование (</strong>
   <code>Acceptance testing</code>
   <strong>)&#58;</strong> Проверка программы на соответствие требованиям
   заказчика перед ее принятием.

1. <strong>Регрессионное тестирование (</strong>
   <code>Regression testing</code>
   <strong>)&#58;</strong> Повторное выполнение тестов для обнаружения новых
   ошибок после внесения изменений в программное обеспечение.

1. <strong>Нагрузочное тестирование (</strong>
   <code>Load testing</code>
   <strong>)&#58;</strong> Оценка производительности программы при определенной
   нагрузке.

1. <strong>Стресс-тестирование (</strong>
   <code>Stress testing</code>
   <strong>)&#58;</strong> Оценка стабильности программы при высоких нагрузках
   или необычных условиях.

1. <strong>Смоук-тестирование (</strong>
   <code>Smoke testing</code>
   <strong>)&#58;</strong> Первичное быстрое тестирование для проверки базовой
   функциональности после внесения изменений.

:::note[Ссылки для изучения]

1. [Виды и типы тестирования](https://testengineer.ru/vidy-tipy-testirovaniya/)
   :::

---

## <strong>Какие уровни тестирования знаете?</strong> [#q-14bee738d69b81afb68de1c64e3344d8]

Уровни тестирования программного обеспечения включают&#58;

1. <strong>Модульное тестирование&#58;</strong> Проверка отдельных модулей или
   функций программы.

1. <strong>Интеграционное тестирование&#58;</strong> Проверка взаимодействия
   между модулями или компонентами.

1. <strong>Системное тестирование&#58;</strong> Проверка работы всей системы как
   единого целого.

1. <strong>Приемочное тестирование&#58;</strong> Проверка соответствия программы
   требованиям заказчика перед ее принятием.

:::note[Ссылки для изучения]

1. [Основы и виды тестирования](https://sedtest-school.ru/types-of-testing/osnovy-testirovaniya-vidy-testirovaniya-po-kriteriyu-urovnya/)
   :::

---

## <strong>Какие техники тест-дизайна знаете?</strong> [#q-14bee738d69b8190b99cf9d1c2d9a829]

Некоторые техники тест-дизайна включают&#58;

1. <strong>Эквивалентное разбиение&#58;</strong> Разделение данных на классы
   эквивалентности для тестирования.

1. <strong>Граничное значение&#58;</strong> Тестирование значений вблизи границ
   допустимых диапазонов.

1. <strong>Парное тестирование (</strong>
   <code>Pairwise Testing</code>
   <strong>)&#58;</strong> Создание комбинаций параметров для проверки
   взаимодействия между ними.

1. <strong>Тестирование состояний&#58;</strong> Проверка изменения состояний
   системы в ответ на действия.

1. <strong>Тестирование пути (</strong>
   <code>Path Testing</code>
   <strong>)&#58;</strong> Тестирование различных путей выполнения программы.

1. <strong>Тестирование интерфейсов&#58;</strong> Проверка взаимодействия между
   компонентами программного обеспечения.

:::note[Ссылки для изучения]

1. [Изучаем методы тест-дизайна](https://testirovshik.com/metod-test-dizajn/)
   :::

---

## <strong>Что такое техника анализа классов эквивалентности?</strong> [#q-14bee738d69b813283f6e401dd2c6222]

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

:::note[Ссылки для изучения]

1. [Техника анализа классов эквивалентности](https://testirovanieprob.blogspot.com/p/22.html#:~:text=%D0%A2%D0%B5%D1%85%D0%BD%D0%B8%D0%BA%D0%B0%20%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%20%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%BE%D0%B2%20%D1%8D%D0%BA%D0%B2%D0%B8%D0%B2%D0%B0%D0%BB%D0%B5%D0%BD%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8%20-,%D1%82%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE%20%D0%BE%D0%B4%D0%B8%D0%BD%20%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%20%D1%8D%D1%82%D0%BE%D0%B9%20%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D1%8B)
   :::

---

## <strong>Что такое техника анализа предельных значений? В чем ценность этой техники?</strong> [#q-14bee738d69b8118b794fd5da1b7c0f3]

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

:::note[Ссылки для изучения]

1. [Техника анализа граничных значений](https://qaevolution.ru/testovaya-dokumentaciya/test-dizajn/texnika-analiza-granichnyx-znachenij/)
   :::

---

## <strong>Что такое</strong> <code>Regression</code> <strong>и</strong> <code>Confirmation</code> <strong>тестирование, какая между ними разница?</strong> [#q-14bee738d69b817e9847e35597c07256]

<code>Regression testing</code> и <code>Confirmation testing</code> являются
видами тестирования программного обеспечения, которые выполняются в различных
контекстах и имеют разные цели&#58;

{/* prettier-ignore */}
1. <code>Regression testing</code> <strong>(регрессионное тестирование)</strong>&#58;

    - <strong>Цель</strong>&#58; Проверка того, не повлияли ли внесенные изменения в программу на уже существующий функционал. Это необходимо для обеспечения того, что новые функции или исправления ошибок не привели к появлению новых ошибок в старом коде.

    - <strong>Процесс</strong>&#58; Запуск тестов, которые проверяют работу существующих функций и аспектов системы после внесенных изменений.

1. <code>Confirmation testing</code> <strong>(конфирмационное тестирование)</strong>&#58;

    - Цель&#58; подтвердить, что конкретный ранее обнаруженный дефект исправлен.

    - <strong>Процесс</strong>&#58; Запуск тестов, направленных на проверку только тех частей системы, которые были затронуты в процессе исправления конкретного бага или изменения.

<strong>Разница</strong>&#58;

- Основное различие между ними заключается в целях и областях применения&#58;
  - <strong>Регрессионное тестирование</strong> фокусируется на общей проверке
    старого и нового кода после внесенных изменений.

  - <strong>Конфирмационное тестирование</strong> сосредотачивается на проверке
    конкретного исправления или функции после его внесения.

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

:::note[Ссылки для изучения]

1. [Regression и Confirmation тестирование](https://blog.qatestlab.com/2011/11/08/regression-and-confirmation-testing-what-is-the-difference/)
   :::
