# Таблица принятия решений

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

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

#### Таблица решений, как правило, имеет 4 составляющие:

1. Условия – список возможных условий.
2. Варианты выполнения действий – это комбинация из списка исполненных или невыполненных условий.
3. Действия – это список всевозможных действий.
4. Необходимость действий – указание нужно или не нужно выполнять соответствующее действие для каждой из комбинаций условий.

#### &#x20;Пример применения таблиц решений.

Условие очень простое: если пользователь вводит правильное имя пользователя и пароль, он будет авторизован и перенаправлен на домашнюю страницу. Если какие-либо вводимые данные являются неправильными, то появится сообщение об ошибке.

| Условие                     | 1 | 2 | 3 | 4 |
| --------------------------- | - | - | - | - |
| Имя пользователя **( T/F)** | F | T | F | T |
| Пароль **(T/F)**            | F | F | T | T |
| Результат **( E/H)**        | E | E | E | H |

Условные обозначения:

T – Правильное имя пользователя/пароль.

F – Неправильное имя пользователя/пароль

E – отображается сообщение об ошибке.

H – Пользователь авторизован/Отображается домашняя страница.<br>

Рассмотрим отдельно каждый из столбиков:

Столбец 1. Имя пользователя и пароль были неверны. Отображается сообщение об ошибке.

Столбец 2. Имя пользователя было верным, но пароль был неправильным. Отображается сообщение об ошибке.

Столбец 3. Неверное имя пользователя, но правильный пароль. Отображается сообщение об ошибке.

Столбец 4. Имя пользователя и пароль были правильными, авторизация прошла успешно, отображается домашняя страница.

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

Тест-кейс 1. Введите валидные имя пользователя и пароль, нажмите кнопку «Войти».

*Ожидаемый результат* : пользователь авторизован и перенаправлен на домашнюю страницу.

Тест-кейс 2. Ввести валидное имя пользователя и невалидный пароль, нажать кнопку входа.

*Ожидаемый результат* : отображается сообщение об ошибке.

Тест-кейс 3. Ввести невалидное имя и пароль, нажать кнопку «Войти».

*Ожидаемый результат* : отображается сообщение об ошибке.

Тест-кейс 4. Ввести невалидное имя пользователя и пароль, нажать кнопку входа.

*Ожидаемый результат* : отображается сообщение об ошибке.

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

Еще один пример применения решений на примере работоспособности принтера

<table data-header-hidden><thead><tr><th width="234"></th><th width="111"></th><th width="43"></th><th width="45"></th><th width="41"></th><th width="40"></th><th width="40"></th><th width="40"></th><th width="45"></th><th></th></tr></thead><tbody><tr><td>Условия</td><td>Принтер не печатает</td><td>Y</td><td>Y</td><td>Y</td><td>Y</td><td>N</td><td>N</td><td>N</td><td>N</td></tr><tr><td>Мигает красный индикатор</td><td>Y</td><td>Y</td><td>N</td><td>N</td><td>Y</td><td>Y</td><td>N</td><td>N</td><td></td></tr><tr><td>Принтер не распознается</td><td>Y</td><td>N</td><td>Y</td><td>N</td><td>Y</td><td>N</td><td>Y</td><td>N</td><td></td></tr><tr><td>Действия</td><td>Проверьте провод питания</td><td></td><td></td><td>X</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Проверьте провод принтера</td><td>X</td><td></td><td>X</td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Убедитесь, что программное обеспечение принтера установлено</td><td>X</td><td></td><td>X</td><td></td><td>X</td><td></td><td>X</td><td></td><td></td></tr><tr><td>Проверить/заменить чернила</td><td>X</td><td>X</td><td></td><td></td><td>X</td><td>X</td><td></td><td></td><td></td></tr><tr><td>Проверьте, не застряла ли бумага в лотке.</td><td></td><td>X</td><td></td><td>X</td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table>

Условные обозначения: Y – да; N – нет.

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

#### Преимущества использования таблицы решений при тестировании ПО:

1. Даже самая сложная бизнес-логика, используя этот метод, может быть легко превращена в тестовые сценарии и случаи.
2. Итеративность работы. Таблица, созданная на первом этапе, используется в качестве входной таблицы для всех последующих. Итерация выполняется только в том случае, если исходные данные не удовлетворительны.
3. Простая и понятная техника. Каждый может использовать этот метод для разработки тестовых сценариев и случаев.
4. Обеспечение полного охвата тестовых случаев, что существенно помогает сократить объем работы.
5. Гарантия рассмотрения всех возможных комбинаций условий и значений.
6. Предоставление более компактной документации.
7. Легкое изменение данных.

#### Недостатки таблиц решений при тестировании ПО:

1. Затруднения в масштабировании. Нужно «разделять» большие таблицы на более мелкие, чтобы предотвратить излишества.
2. Увеличение количества входящих данных делает таблицу более сложной.


---

# 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/test-dizain/tablica-prinyatiya-reshenii.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.
