# Протестовать функционал банкомата с помощью техники State Transition Diagram.

Техника State Transition Diagram (диаграмма переходов состояний) предоставляет хороший инструмент для моделирования и тестирования систем с различными состояниями и переходами между ними.

#### State Transition Diagram для банкомата:

1. **Состояния:**
   * **Начальное состояние (Idle):** Банкомат в ожидании пользователя.
   * **Состояние ввода PIN (Enter PIN):** Пользователь вводит PIN.
   * **Состояние выбора операции (Select Transaction):** Пользователь выбирает операцию (баланс, снятие наличных, перевод и т.д.).
   * **Состояние выполнения операции (Perform Transaction):** Выполнение выбранной операции.
   * **Состояние завершения транзакции (Transaction Complete):** Транзакция завершена успешно.
   * **Состояние ошибки (Error):** Произошла ошибка в процессе транзакции.
2. **Переходы:**
   * **Idle -> Enter PIN:** Пользователь вставляет карту, переход в состояние ввода PIN.
   * **Enter PIN -> Select Transaction:** Ввод PIN успешен, переход к выбору операции.
   * **Select Transaction -> Perform Transaction:** Пользователь выбирает операцию, переход к выполнению.
   * **Perform Transaction -> Transaction Complete:** Успешное выполнение операции, переход к завершению транзакции.
   * **Perform Transaction -> Error:** Произошла ошибка во время выполнения операции.
   * **Transaction Complete -> Idle:** Возврат в начальное состояние для следующей транзакции.
   * **Error -> Idle:** После возникновения ошибки возврат в начальное состояние.
3. **Дополнительные детали:**
   * В каждом состоянии могут быть определены дополнительные переходы или подсостояния в зависимости от требований банкомата (например, ввод суммы для снятия наличных).
   * Может быть введено ограничение на количество попыток ввода PIN до блокировки карты.

#### Тест-кейсы на основе STD:

1. **Позитивные сценарии:**
   * Успешный ввод PIN и выбор операции.
   * Успешное снятие наличных.
   * Успешный перевод средств.
2. **Тесты на обработку ошибок:**
   * Неверный ввод PIN, проверка блокировки карты.
   * Ошибка при снятии наличных (недостаточно средств, лимит превышен).
   * Ошибка при переводе средств (неверные данные получателя и т.д.).
3. **Тесты безопасности:**
   * Попытка использования банкомата без вставленной карты.
   * Попытка использования чужой карты.
   * Попытка взлома путем ввода неверного PIN многократно.
4. **Тестирование лимитов:**
   * Проверка максимальной суммы, которую можно снять.
   * Проверка лимитов на количество операций в день.
5. **Тесты на восстановление:**
   * После блокировки карты проверка разблокировки после определенного времени.
   * После ошибочной транзакции проверка возврата в начальное состояние для новой транзакции.
