Як запустити функціональні тести на мою гру Unity3D?


25

Контекст

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

Я вже знаю, що для Unity3d в якості ресурсу доступний набір "Інструменти тестових підрозділів". Я використовував його як набір одиничних тестів, тому я тестую свої моделі (класи).

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

Під "функціональним тестом" я маю на увазі такі речі:

  • Запустіть програму
  • Перебуваючи в сцені меню, запевняйте, є кнопка з написом "запустити"
  • Клацніть по ньому
  • Потім стверджується, що нова сцена завантажується
  • Піксель XXX утверджується червоним кольором
  • Клацніть по координаті XXX
  • Запевніть зараз, що піксель змінився на зелений
  • тощо.

Запитання

Q1: Як написати та запустити функціональні тести для своєї гри? Це також зазвичай робиться в UnityTestTools (UTT)?

Q2: Якщо UTT більше для Unit-Testing, то чи існує окремий набір для функціонального тестування? Який?

Примітки:

Я націлююсь на Android і працюю Unity5.3.1f1


Наскільки я можу сказати, вбудований UTT призначений для тестування одиниць. У магазині активів може бути інструмент тестування, який відповідає вашим потребам
user3797758

3
Власне, ні. Інструменти тестування Unity містять набір інструментів для інтеграційного тестування та безліч тверджень із першої версії. Якщо ви нічого подібного не бачите у вбудованому UTT, завантажте повний UTT з магазину активів.
Максим Камалов

Ознайомтеся з документацією про тестовий запуск, Unity Test Runner Doc. Це дозволяє як режим відтворення, так і тести в режимі редагування.
Racksay

Відповіді:


1

Як я це розумію, ви хочете зрозуміти тестування автоматизації в Unity.

Інструменти тестування єдності

Це має бути вашим методом goto, але перед тим, як розібратися в тому, як, я вивчу причину.

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

Чому? Тому що при будь-якому тестуванні на інтеграцію ви хочете, щоб найменша кількість зайвих матеріалів заповнювала вашу програму, якої немає, коли користувач її відкриває. Редактор Unity може мати різну продуктивність або поведінку порівняно з версією iOS (наприклад).

Отже, навіщо тоді використовувати інструменти тестування Unity (UTT)?

Основна причина - зручність. Як редактор Unity, так і UTT побудовані на основі того, щоб бути простим та наочним у використанні. Вам легко буде писати тести, підключаючи їх до вашої конкретної гри та розуміючи, коли вони не вдається.

Як щодо різниці в поведінці між редактором Unity та виробництвом?

Зрештою, редактор Unity - це обгортка навколо вашої програми. Це означає, що між редактором та виробництвом будуть деякі відмінності. Але, відмовляючись від інтеграційного тестування, редактор Unity вже давно є обгорткою. Це зріла платформа, на якій побудовано тисячі гри. Результати, отримані від запуску тестів на інтеграцію всередині редактора, будуть дуже точними.

У наведеному вами прикладі сценарію все, окрім першого пункту, можна легко підтвердити за допомогою інструментів тестування Unity. Ви можете відкривати сцени та перевіряти поведінку, як і будь-які інші тести на інтеграцію.

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

Запуск програми та тестування вручну

Запуск програми - це не те, що ви маєте точний контроль, перебуваючи в редакторі Unity. Щоб перевірити цей аспект вашої гри та багато іншого, ви можете використовувати основні тести вручну.

Ось як підійти до цього:

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

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

Не дивно, що як все, що пов'язане з Єдністю, у нас є більше ніж кілька альтернатив. Ось декілька, які ви можете поглянути:

Залежно від масштабу та обсягу вашого проекту, ви можете скористатися одним із багатьох варіантів, які я описав вище.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.