Что нужно знать
Игра запускается, кнопка нажимается, а механика всё ещё может нарушать правило. Проверяйте обещанное поведение в известных условиях, а затем отдельно проверяйте, как оно воспринимается игроком.
Принцип
Запишите начальное состояние, событие и ожидаемый наблюдаемый результат. Такая структура соответствует Given/When/Then из справочника Gherkin, но для ручной проверки не требуется устанавливать Cucumber.
Разделите чистое правило и его интеграцию. Расход заряда можно проверить на модели; столкновение с дверью, звук и восстановление после паузы требуют проверки в игре. Отладочные инструменты движка помогают увидеть причину, но отсутствие ошибок в консоли не означает правильность механики.
Практический пример
Рывок с одним зарядом
В учебном контракте рывок тратит один заряд и длится 0,2 секунды игрового времени. Пауза останавливает игровой таймер. Смерть отменяет движение рывка, но не возвращает заряд. Это выбранные правила примера, а не универсальные требования.
| Дано | Когда | Тогда |
|---|---|---|
| Персонаж жив, заряд 1 | Принят запрос рывка | Заряд 0, состояние рывка активно |
| Заряд 0 | Повторный запрос | Новый рывок не начинается |
| Идёт рывок | Игра поставлена на паузу | Длительность не расходуется во время паузы |
| Идёт рывок | Получено событие смерти | Движение отменено, заряд остаётся 0 |
Для одновременного запроса и смерти заранее задайте приоритет: в этой модели сначала обрабатывается смерть, рывок не начинается. На каждом прогоне восстанавливайте начальное состояние, иначе предыдущий тест исчерпает заряд следующего.
В модели с фиксированным шагом завершение проверяйте на первом тике, где накопленное игровое время достигло 0,2 секунды. Для ручного наблюдения укажите допустимую погрешность и используйте журнал, а не оценку на глаз.
Частые ошибки
- Проверять только успешный случай с полным запасом ресурсов.
- Считать скриншот доказательством правильной длительности.
- Требовать тот же номер кадра при разной частоте отрисовки.
- Выдавать автоматическую проверку правила за проверку удобства управления.
Проверка результата
- Выполните каждый сценарий из указанного состояния и сохраните результат.
- Повторите интеграционный проход при разных частотах отрисовки, сохраняя шаг симуляции.
- Проверьте паузу, перезапуск и одновременные события.
- Для сбоя запишите сборку, входные события, ожидаемое и фактическое поведение.
Задание для ИИ-агента
Реализуй контракт рывка и таблицу сценариев. Автоматизируй чистые переходы, остальные проверки опиши для целевого устройства. В отчёте раздели выполненное, не выполненное и найденные расхождения. Не выдумывай успешный запуск.
Сверьте переходы с уроком «Состояния и переходы» и призмой «Правила».