Riot Games публикует статью об использовании автоматического тестирования для многопользовательской онлайн-игры RTS League of Legends (LoL).
По словам разработчиков, в коде игры и игровом балансе ежедневно происходит множество изменений. Они создали тестовую среду Python, которая по сути является более простым игровым клиентом, который отправляет команды на сервер Continuous Integration, на котором запущен экземпляр игрового сервера LoL. Затем сервер отправляет тестовой среде эффект команды, позволяя проверить ответ.
Каркас предоставляет очередь событий, в которой записываются события, данные и эффекты с определенного момента времени. В статье это называется «снимок».
В статье описан пример юнит-теста для заклинания:
Настройка
1. Дайте персонажу способность.
2. Создайте вражеского персонажа в средней полосе (местоположение на карте).
3. Появляются ползучие мидлэйны. (В контексте LoL крипы - это слабые неконтролируемые персонажи, которые являются частью армии каждой команды. Они являются в основном каноническим кормом и источником опыта и золота для вражеской команды. Но если их не остановить, они могут сокрушить противника команда)
4. Телепортируйте персонажа на мидлайн.
Выполнить
1. Сделайте снимок всех переменных (например, текущая жизнь игрока, врага и обычных персонажей).
2. Используйте заклинание.
3. Активируйте эффекты заклинания (например, есть некоторые заклинания, которые будут срабатывать при попадании) на вражеского персонажа.
4. Сбросьте время восстановления заклинания, чтобы оно могло быть немедленно снова разыграно.
5. Используйте заклинание.
6. Активируйте эффекты заклинания на крипа (в контексте LoL большинство заклинаний имеют разные вычисления при использовании на крипах).
7. Сделайте еще один снимок.
Проверка
Начиная с первого снимка, воспроизведите события и подтвердите, что ожидаемые результаты (с точки зрения разработчика игры) верны. Примеры событий, которые можно проверить: Урон находится в пределах диапазона урона от заклинания (LoL использует случайные числа, чтобы придать дисперсию атакам), Урону должным образом противостоят по сравнению с персонажем игрока и крипом, и заклинания разыгрываются в пределах его эффективный диапазон.
В статье показано, что видео теста можно извлечь при просмотре тестового сервера с обычного игрового клиента.