# Регрессионное тестирование

#### Что такое регрессионное тестирование? <a href="#regressionnoe-testirovanie" id="regressionnoe-testirovanie"></a>

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

#### Зачем нужно регрессионное тестирование? <a href="#zachem-nuzhno-regressionnoe-testirovanie" id="zachem-nuzhno-regressionnoe-testirovanie"></a>

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

#### Как проводить регрессионное тестирование <a href="#kak-provodit-regressionnoe-testirovanie" id="kak-provodit-regressionnoe-testirovanie"></a>

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

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

<figure><img src="https://qarocks.ru/wp-content/uploads/2023/08/regression-testing-types1.jpg" alt="Как проводить регрессионное тестирование" height="261" width="366"><figcaption></figcaption></figure>

#### Повторное тестирование всего продукта

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

#### Отбор регрессионных тест-кейсов

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

#### Отбор приоритетных тест-кейсов

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

#### Выбор тест-кейсов для регрессионного тестирования <a href="#primery-regressionnogo-testirovaniya" id="primery-regressionnogo-testirovaniya"></a>

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

* Тест-кейсы, в которых чаще всего встречаются дефекты<br>
* Функциональности, которые более заметны для пользователей<br>
* Тест-кейсы, которые проверяют основные функциональности продукта<br>
* Тест-кейсы функциональностей, которые претерпели большое количество изменений в недавнее время<br>
* Все интеграционные тест-кейсы<br>
* Все сложные тест-кейсы<br>
* Тест-кейсы граничных значений<br>
* Набор основных позитивных и негативных тест-кейсов

#### Регрессионное тестирование и управление конфигурацией <a href="#regressionnoe-testirovanie-i-upravlenie-konfiguraciej" id="regressionnoe-testirovanie-i-upravlenie-konfiguraciej"></a>

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

* Код, подвергаемый регрессионному тестированию, должен находиться под управлением инструментами управления конфигурацией.<br>
* Во время регрессионного тестирования в код не должны вноситься никакие изменения. Код регрессионного тестирования должен быть защищен от изменений разработчиком.<br>
* База данных, используемая для регрессионного тестирования, должна быть изолирована. Никакие изменения в базе данных не должны быть разрешены.

#### Разница между повторным тестированием и регрессионным тестированием <a href="#raznica-povtornogo-i-regressionnogo-testirovaniya" id="raznica-povtornogo-i-regressionnogo-testirovaniya"></a>

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

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://qabook.gitbook.io/start/teoriya-testirovaniya/osnovy-testirovaniya/vidy-testirovaniya/funkcionalnoe-testirovanie-i-ikh-vidy/regressionnoe-testirovanie.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
