Как запустить функциональные тесты для моей игры Unity3D?

25

контекст

Я продолжаю некоторый унаследованный код для игры в Unity3d и хочу написать несколько функциональных тестов, предназначенных для регрессии, чтобы гарантировать, что я не сломаю вещи при реализации новых вещей или при рефакторинге.

Я уже знаю, что для Unity3d доступен набор «Unit Test Tools». Я использовал его как набор юнит-тестов, поэтому я тестирую свои модели (классы).

Пример того, о каком тесте я думаю

Под «функциональным тестом» я имею в виду такие вещи:

  • Запустите программу
  • Когда в меню сцены утверждают, есть кнопка с надписью «Пуск»
  • Нажмите его
  • Тогда утверждаю, что новая сцена загружена
  • Пиксель утверждения XXX красный
  • Нажмите в координате XXX
  • Утвердите теперь, что пиксель изменился на зеленый
  • и т.п.

Вопросов

В1: Как мне написать и запустить функциональные тесты для моей игры? Это также обычно делается в UnityTestTools (UTT)?

Q2: Если UTT больше подходит для модульного тестирования, то есть ли отдельный набор для функционального тестирования? Который из?

Заметки:

Я нацеливаюсь на Android и работаю Unity5.3.1f1

Хави Монтеро
источник
Насколько я могу сказать, встроенный UTT только для модульного тестирования. В хранилище активов может быть инструмент тестирования, который соответствует вашим потребностям
user3797758
3
Вообще-то, нет. Unity Test Tools содержат набор инструментов для тестирования интеграции и множество утверждений, начиная с самой первой версии. Если вы не видите ничего подобного во встроенном UTT, загрузите полное UTT из Asset Store.
Максим Камалов
Взгляните на документацию «Выполнение теста», документация Unity Test Runner. Она позволяет выполнять тесты как в режиме воспроизведения, так и в режиме редактирования.
Racksay

Ответы:

1

Насколько я понимаю, вы хотите понять автоматизацию тестирования в Unity.

Инструменты тестирования единства

Это должен быть ваш метод goto, но прежде чем копаться в том, как, я рассмотрю причину.

Предпочтительный способ выполнить любую форму автоматического тестирования - это сделать это в среде, максимально приближенной к производственной. Использование чего-то вроде инструментов тестирования Unity (живущих в редакторе Unity) звучит как плохая идея для тех, кто писал обычные интеграционные тесты.

Зачем? Потому что при любом интеграционном тестировании вам нужно наименьшее количество лишних вещей, затопляющих ваше приложение, которых нет, когда пользователь открывает его. Unity Editor может иметь другую производительность или поведение по сравнению с версией iOS (например).

Итак, зачем тогда использовать Unity Test Tools (UTT)?

Основная причина - удобство. И Unity Editor, и UTT построены на простоте и наглядности в использовании. Вам будет легко писать тесты, связывать их со своей конкретной игрой и понимать, когда они терпят неудачу.

Как насчет различий в поведении между Unity Editor и производством?

В конце концов, Unity Editor - это оболочка для вашего приложения. Это означает, что между редактором и производством будут некоторые различия. Но, если оставить в стороне интеграционное тестирование, редактор Unity уже давно является оберткой. Это зрелая платформа, на которой построены тысячи игр. Результаты, полученные при выполнении интеграционных тестов в редакторе, будут очень точными.

В приведенном вами примере сценария все, кроме первого элемента, может быть легко подтверждено с помощью Unity Test Tools. Вы можете открывать сцены и проверять поведение, как и любые другие интеграционные тесты.

Я предлагаю написать большинство (если не все) ваших тестов с использованием UTT. Чтобы добавить совместимость с инструментами непрерывной интеграции (например, Jenkins), вы можете запустить их из консоли, используя аргументы командной строки .

Запуск приложения и ручное тестирование

Запуская приложение, вы не можете точно контролировать его в редакторе Unity. Чтобы проверить этот аспект вашей игры и многое другое, вы можете использовать некоторые базовые ручные тесты.

Вот как это сделать:

  1. Убедитесь, что ваша игра излучает какой-то сигнал, когда достигает определенных этапов, которые вас волнуют (или могут волновать). Регистрация в файл является наиболее распространенным подходом (с использованием автоматической встроенной регистрации или сторонней версии ).
  2. Периодически читайте и анализируйте журналы. Это может происходить вручную или быть написано с использованием вашего второго любимого языка сценариев.

альтернативы

Неудивительно, что, поскольку все, что связано с Unity, у нас есть более чем несколько альтернатив. Вот некоторые из них, которые вы можете рассмотреть:

В зависимости от масштаба и масштаба вашего проекта вы можете использовать один или несколько вариантов, которые я описал выше.

Джордан Георгиев
источник