← Назад к вопросам

Как протестировать банкомат

1.6 Junior🔥 141 комментариев
#Техники тест-дизайна#Теория тестирования

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Стратегия тестирования банкомата

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

1. Функциональное тестирование

Проверка корректности выполнения основных операций согласно требованиям.

  • Сценарии операций:
    *   **Выдача наличных:** Корректный расчёт купюр, обновление баланса, обработка нехватки средств в счёте или в кассете.
    *   **Запрос баланса:** Отображение актуального остатка, маскировка номера карты.
    *   **Смена PIN-кода:** Валидация старого и нового PIN (длина, цифры), блокировка после нескольких неудачных попыток.
    *   **Мини-выписка:** Печать последних транзакций, чёткость и читаемость данных.
    *   **Переводы:** Корректность списания и зачисления, валидация номера счёта получателя.

  • Пример тест-кейса для выдачи наличных:

    Feature: Выдача наличных
      Scenario: Успешная выдача суммы, доступной на счёте и в кассетах
        Given Пользователь вставил валидную карту и ввёл корректный PIN
        And На счёте пользователя доступно 1000 USD
        And В кассетах банкомата достаточно купюр
        When Пользователь запрашивает 100 USD
        Then Банкомат выдаёт 100 USD купюрами согласно конфигурации (напр., 5x20)
        Then Баланс счёта уменьшается на 100 USD
        Then Печатается чек с деталями операции
        Then Карта возвращается пользователю
    

2. Нефункциональное тестирование

  • Нагрузочное тестирование: Оценка производительности при одновременном обращении нескольких карт или серии быстрых операций. Проверка времени отклика.
  • Тестирование удобства использования (Usability):
    *   Интуитивность интерфейса (экранных подсказок).
    *   Удобство расположения клавиатуры, кард-ридера, купюроприёмника.
    *   Доступность для людей с ограниченными возможностями.
  • Тестирование совместимости: Работа с разными типами карт (чип, магнитная полоса, бесконтактные), эмуляция сетевых протоколов с банком.
  • Тестирование восстановления: Реакция системы на сбои (обрыв связи с сервером, отключение питания в момент выдачи денег). Должна обеспечиваться идемпотентность операций (повторный запрос с тем же ID не должен приводить к списанию дважды).

3. Тестирование безопасности

Критически важный блок, направленный на защиту данных и средств.

  • Защита от скимминга: Проверка физической защищённости кард-ридера.
  • Безопасность PIN: PIN не должен отображаться на экране, передаваться или логироваться в открытом виде, должен шифроваться.
  • Устойчивость к атакам:
    *   **Brute-force:** Автоматическая блокировка карты после 3-5 неверных попыток ввода PIN.
    *   **Физические атаки:** Реакция на вскрытие корпуса, установку посторонних устройств.
  • Валидация сессий: Карта должна быть изъята или сессия завершена после таймаута бездействия.

4. Интеграционное и end-to-end тестирование

Проверка взаимодействия всех компонентов системы: ПО банкомата ←→ Хост-процессор банка (Host) ←→ Платёжная система (Visa/MC) ←→ ядро банка.

  • Эмуляция ответов хоста: Тестирование реакции банкомата на различные коды ответов от сервера (одобрено, отказано, недостаточно средств, связь прервана).
  • Сверка итоговых остатков (Settlement): В конце операционного дня сумма всех транзакций в журнале банкомата должна точно соответствовать данным в банковской системе.

5. Аппаратное тестирование и работа с периферией

  • Купюроприёмник и диспенсер: Тестирование распознавания и выдачи купюр разного номинала, степени изношенности, положения. Обработка замятия купюр.
  • Принтер: Качество печати, отсутствие смазывания, замятие бумаги, реакция на отсутствие чековой ленты.
  • Сенсорный экран/клавиатура: Чувствительность, износостойкость, защитная мембрана.
  • Условия окружающей среды: Работоспособность при экстремальных температурах, влажности, пыли (в рамках спецификаций).

Методологии и подходы

  • Комбинаторика и классы эквивалентности: Например, для суммы выдачи: допустимый диапазон (50-500$), меньше минимума, больше максимума, больше баланса, сумма, некратная шагу выдачи (например, 125$ при шаге 10$).
  • Автоматизация: Автоматизируется проверка API/ISO-сообщений между банкоматом и хостом, сценарии модульного и интеграционного уровня. Для физических действий (вставка карты, получение купюр) часто используется ручное или роботизированное тестирование.
  • Регрессионное тестирование: Особенно важно после обновления микропрограммы (firmware) устройства или протокола обмена с банком.

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

Как протестировать банкомат | PrepBro