Автоматическое тестирование в Unreal Engine

Ретроспектива

После этого случился вынужденный перерыв. Сейчас лекции возобновлены и уже разобраны следующие темы:

  • Cборка движка из исходного кода
  • Cборка проекта blueprint игры
  • Cборка проекта C++ игры
  • .clang-format, pre-commit. git hook
  • Сборка Unreal Engine 5 (early access) из исходного кода
  • Unreal version selector / unreal build tool (UBT)
  • Unreal version selector bug fixes
  • Сборка бинарной версии из исходников (Installed Build)
  • Сборка dedicated/listen сервера, подключение клиентов

Тестирование

Со следующей недели начинаем блок по тестированию. Он получается достаточно объемный. Все материалы подготовлены. Запись лекций в процессе. Видео обзор топиков:

Темы, которые будут точно разобраны:

  • Введение в тестирование. Теоретическая часть. Основные понятия.
  • Знакомство с Unreal Testing Automation Frontend. Простейшие unit тесты: 1+1, тестирование собственных алгоритмов и чистых C++ классов без рефлексии движка.
Автоматическое тестирование в Unreal Engine
  • Тестирование классов UObject и компонентов.
  • Разбор Test Driven Development (TDD) подхода на примере тестирования жизней персонажа. Тестирование классов AActor
... TestEqual("Health is full", Character->GetHealth(), MaxHealth); TestTrue("Character is alive", Character->IsAlive()); Character->TakeDamage(DamageAmount, FDamageEvent(), nullptr, nullptr); TestEqual("Health was changed", Character->GetHealth(), MaxHealth - DamageAmount); TestTrue("Character is alive", Character->IsAlive());
  • Интеграционное тестирование. Симуляция ввода Input Component. Latent automation command
... ADD_LATENT_AUTOMATION_COMMAND(FMoveForwardTillLocationLatentCommand(TestInputComponent, Character, Spot3->GetActorLocation(), -1.0f)); ADD_LATENT_AUTOMATION_COMMAND(FEngineWaitLatentCommand(1.0f)); ADD_LATENT_AUTOMATION_COMMAND(FJumpLatentCommand(TestInputComponent, 0.0f)); ADD_LATENT_AUTOMATION_COMMAND(FEngineWaitLatentCommand(3.0f)); ADD_LATENT_AUTOMATION_COMMAND(FExitGameCommand);
  • Functional screenshot tests
Автоматическое тестирование в Unreal Engine
  • Публикация отчета по тестам. Test Report
Автоматическое тестирование в Unreal Engine
Автоматическое тестирование в Unreal Engine
  • Метрики тестирования. Тестовое покрытие. OpenCppCoverage
Автоматическое тестирование в Unreal Engine
Автоматическое тестирование в Unreal Engine
  • Создание работы в Jenkins для автоматического запуска тестов с публикацией отчетов
Автоматическое тестирование в Unreal Engine

Wiki

В поддержку ко всем лекциям созданы вики с открытым доступом (обновляются с выходом новых роликов):

Résumer

Буду рад всех видеть на канале. Присоединяйтесь, кому интересны данные темы. Всегда открыт к обсуждению и обмену знаниями (=

25
Начать дискуссию