🗊 Презентация Примеры автоматизированного тестирования игр в Unity

Нажмите для полного просмотра!
Примеры автоматизированного тестирования игр в Unity, слайд №1 Примеры автоматизированного тестирования игр в Unity, слайд №2 Примеры автоматизированного тестирования игр в Unity, слайд №3 Примеры автоматизированного тестирования игр в Unity, слайд №4 Примеры автоматизированного тестирования игр в Unity, слайд №5 Примеры автоматизированного тестирования игр в Unity, слайд №6 Примеры автоматизированного тестирования игр в Unity, слайд №7 Примеры автоматизированного тестирования игр в Unity, слайд №8 Примеры автоматизированного тестирования игр в Unity, слайд №9 Примеры автоматизированного тестирования игр в Unity, слайд №10 Примеры автоматизированного тестирования игр в Unity, слайд №11 Примеры автоматизированного тестирования игр в Unity, слайд №12 Примеры автоматизированного тестирования игр в Unity, слайд №13 Примеры автоматизированного тестирования игр в Unity, слайд №14 Примеры автоматизированного тестирования игр в Unity, слайд №15 Примеры автоматизированного тестирования игр в Unity, слайд №16 Примеры автоматизированного тестирования игр в Unity, слайд №17 Примеры автоматизированного тестирования игр в Unity, слайд №18 Примеры автоматизированного тестирования игр в Unity, слайд №19 Примеры автоматизированного тестирования игр в Unity, слайд №20 Примеры автоматизированного тестирования игр в Unity, слайд №21 Примеры автоматизированного тестирования игр в Unity, слайд №22 Примеры автоматизированного тестирования игр в Unity, слайд №23 Примеры автоматизированного тестирования игр в Unity, слайд №24 Примеры автоматизированного тестирования игр в Unity, слайд №25 Примеры автоматизированного тестирования игр в Unity, слайд №26 Примеры автоматизированного тестирования игр в Unity, слайд №27 Примеры автоматизированного тестирования игр в Unity, слайд №28 Примеры автоматизированного тестирования игр в Unity, слайд №29 Примеры автоматизированного тестирования игр в Unity, слайд №30 Примеры автоматизированного тестирования игр в Unity, слайд №31 Примеры автоматизированного тестирования игр в Unity, слайд №32 Примеры автоматизированного тестирования игр в Unity, слайд №33 Примеры автоматизированного тестирования игр в Unity, слайд №34 Примеры автоматизированного тестирования игр в Unity, слайд №35 Примеры автоматизированного тестирования игр в Unity, слайд №36 Примеры автоматизированного тестирования игр в Unity, слайд №37 Примеры автоматизированного тестирования игр в Unity, слайд №38 Примеры автоматизированного тестирования игр в Unity, слайд №39 Примеры автоматизированного тестирования игр в Unity, слайд №40 Примеры автоматизированного тестирования игр в Unity, слайд №41 Примеры автоматизированного тестирования игр в Unity, слайд №42 Примеры автоматизированного тестирования игр в Unity, слайд №43 Примеры автоматизированного тестирования игр в Unity, слайд №44

Содержание

Вы можете ознакомиться и скачать презентацию на тему Примеры автоматизированного тестирования игр в Unity. Доклад-сообщение содержит 44 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


Примеры автоматизированного тестирования игр в Unity, слайд №1
Описание слайда:

Слайд 2


Примеры автоматизированного тестирования игр в Unity, слайд №2
Описание слайда:

Слайд 3


Ситуации Новый функционал ломает старый или старый функционал бесследно исчезает QA перегружен или QA отсутствует “Всё сломалось! *** ***!” в мягкой...
Описание слайда:
Ситуации Новый функционал ломает старый или старый функционал бесследно исчезает QA перегружен или QA отсутствует “Всё сломалось! *** ***!” в мягкой форме: “Я уже заказал вам пиццу” "Это всегда так работало!" если разобраться: "Это сломалось два месяца назад. Я написал в чатик, но мне никто не ответил" Команда встала, потому что основная ветка разработки разломана а виновник уехал на Бали Неожиданно перед релизом все узнали что билд вылез за 100 мб за 100 мб он вылез три месяца назад и сейчас весит 150 мб маркетинг уже закупил трафик

Слайд 4


Примеры автоматизированного тестирования игр в Unity, слайд №4
Описание слайда:

Слайд 5


Ситуации Новый функционал ломает старый или старый функционал бесследно исчезает QA перегружен или QA отсутствует “Всё сломалось! *** ***!” в мягкой...
Описание слайда:
Ситуации Новый функционал ломает старый или старый функционал бесследно исчезает QA перегружен или QA отсутствует “Всё сломалось! *** ***!” в мягкой форме: “Я уже заказал вам пиццу” "Это всегда так работало!" если разобраться: "Это сломалось два месяца назад. Я написал в чатик, но мне никто не ответил" Команда встала, потому что основная ветка разработки разломана а виновник уехал на Бали Неожиданно перед релизом все узнали что билд вылез за 100 мб за 100 мб он вылез три месяца назад и сейчас весит 150 мб

Слайд 6


КАК?
Описание слайда:
КАК?

Слайд 7


ПО КУСОЧКАМ! ПО КУСОЧКАМ!
Описание слайда:
ПО КУСОЧКАМ! ПО КУСОЧКАМ!

Слайд 8


Четыре кусочка Этап 1. Непрерывная интеграция Этап 2. Интеграционное тестирование Этап 3. Тестирование скриншотами Этап 4. Performance-тестирование
Описание слайда:
Четыре кусочка Этап 1. Непрерывная интеграция Этап 2. Интеграционное тестирование Этап 3. Тестирование скриншотами Этап 4. Performance-тестирование

Слайд 9


ЭТАП 1 Непрерывная интеграция
Описание слайда:
ЭТАП 1 Непрерывная интеграция

Слайд 10


Непрерывная интеграция. Continuous Integration Сделать что-то по расписанию или по какому-либо событию Собрать ночную сборку и залить в HockeyApp...
Описание слайда:
Непрерывная интеграция. Continuous Integration Сделать что-то по расписанию или по какому-либо событию Собрать ночную сборку и залить в HockeyApp Прогнать тесты на каждый коммит в репозиторий Хранит билды, результаты тестов и метрики Множество готовых решений

Слайд 11


Процесс Коммит в репозиторий Continuous Integration Unity Test Runner Edit Mode тесты (Unit-тесты) Unity Test Runner Play Mode тесты (Интеграционные...
Описание слайда:
Процесс Коммит в репозиторий Continuous Integration Unity Test Runner Edit Mode тесты (Unit-тесты) Unity Test Runner Play Mode тесты (Интеграционные тесты в редакторе) Сборка билда для каждой платформы (WebGL, Android, iOS) Unity Test Runner Play Mode тесты (Интеграционные на устройстве) Деплой (по требованию)

Слайд 12


Результаты первого этапа. Непрерывная интеграция Основная ветка всегда в рабочем состоянии Нет ошибок в редакторе Билд для каждой платформы Знаем...
Описание слайда:
Результаты первого этапа. Непрерывная интеграция Основная ветка всегда в рабочем состоянии Нет ошибок в редакторе Билд для каждой платформы Знаем когда билд вышел за пределы необходимых размеров История из собранных билдов позволяет быстро сравнить различные билды между собой

Слайд 13


ЭТАП 2 Интеграционное тестирование
Описание слайда:
ЭТАП 2 Интеграционное тестирование

Слайд 14


Интеграционное тестирование Взаимодействие модулей Бизнес-логика Можно проводить на реальных устройствах Дополнение к ручному тестированию и...
Описание слайда:
Интеграционное тестирование Взаимодействие модулей Бизнес-логика Можно проводить на реальных устройствах Дополнение к ручному тестированию и unit-тестам

Слайд 15


Unity Test Runner
Описание слайда:
Unity Test Runner

Слайд 16


Тест-кейс. Игра BFG.
Описание слайда:
Тест-кейс. Игра BFG.

Слайд 17


Пример теста [ UnityTest ] public IEnumerator ShopWindowTest() { // -> .. создание gameProvider, viewProvider yield return...
Описание слайда:
Пример теста [ UnityTest ] public IEnumerator ShopWindowTest() { // -> .. создание gameProvider, viewProvider yield return gameProvider.StartWithCustomScene( "TestFrameworkExample" ); yield return viewProvider.ClickButton< ViewMainMenuExample >( "Shop" ); yield return viewProvider.WaitView< ViewShopExample >(); yield return viewProvider.ClickButton< ViewShopExample >( "Close" ); yield return gameProvider.CleanUpGame(); }

Слайд 18


Запуск сцены [ UnityTest ] public IEnumerator ShopWindowTest() { // -> .. создание gameProvider, viewProvider yield return...
Описание слайда:
Запуск сцены [ UnityTest ] public IEnumerator ShopWindowTest() { // -> .. создание gameProvider, viewProvider yield return gameProvider.StartWithCustomScene( "TestFrameworkExample" ); yield return viewProvider.ClickButton< ViewMainMenuExample >( "Shop" ); yield return viewProvider.WaitView< ViewShopExample >(); yield return viewProvider.ClickButton< ViewShopExample >( "Close" ); yield return gameProvider.CleanUpGame(); }

Слайд 19


TestElement - помечаем поля public class ViewShopExample : MonoBehaviour { [ SerializeField ] [ TestElement( "Close" ) ] private Button...
Описание слайда:
TestElement - помечаем поля public class ViewShopExample : MonoBehaviour { [ SerializeField ] [ TestElement( "Close" ) ] private Button _closeButton; [ TestElement( "OffersCount" ) ] private int _offersCount; } // использование viewProvider.ClickButton< ViewShopExample >( "Close" ) viewProvider.GetElementFromView< ViewShopExample, int >( "OffersCount" ) viewProvider.GetElementByName< ViewShopExample, int >( "_offersCount" )

Слайд 20


Нажимаем на кнопку [ UnityTest ] public IEnumerator ShopWindowTest() { // -> .. создание gameProvider, viewProvider yield return...
Описание слайда:
Нажимаем на кнопку [ UnityTest ] public IEnumerator ShopWindowTest() { // -> .. создание gameProvider, viewProvider yield return gameProvider.StartWithCustomScene( "TestFrameworkExample" ); yield return viewProvider.ClickButton< ViewMainMenuExample >( "Shop" ); yield return viewProvider.WaitView< ViewShopExample >(); yield return viewProvider.ClickButton< ViewShopExample >( "Close" ); yield return gameProvider.CleanUpGame(); }

Слайд 21


Способы нажать на кнопку в Unity UI Внешний - API операционной системы Работает не только на кнопки, но и на все приложение Для каждой платформы...
Описание слайда:
Способы нажать на кнопку в Unity UI Внешний - API операционной системы Работает не только на кнопки, но и на все приложение Для каждой платформы нужно писать реализацию Внутренний - вызываем событие onClick Работает только для кнопок Unity UI Работает на всех платформах Прокликивание сквозь другие UI элементы Внутренний - переопределение BaseInput Работает для всех элементов Unity UI Работает для любой платформы Эмулируем курсор и касания из кода

Слайд 22


Эмуляция курсора в Unity UI
Описание слайда:
Эмуляция курсора в Unity UI

Слайд 23


Assert yield return gameProvider.StartWithCustomScene( "TestFrameworkExample" ); yield return viewProvider.ClickButton< ViewMainMenuExample...
Описание слайда:
Assert yield return gameProvider.StartWithCustomScene( "TestFrameworkExample" ); yield return viewProvider.ClickButton< ViewMainMenuExample >( "Shop" ); yield return viewProvider.WaitView< ViewShopExample >(); Assert.AreEqual( 100500, viewProvider.GetElementFromView< ViewShopExample, int >( "OffersCount" ) ); yield return viewProvider.ClickButton< ViewShopExample >( "Close" ); yield return gameProvider.CleanUpGame();

Слайд 24


Делаем скриншоты GameViewUtils.SetResolution( 800, 600 ); yield return gameProvider.StartWithCustomScene( "TestFrameworkExample" ); yield...
Описание слайда:
Делаем скриншоты GameViewUtils.SetResolution( 800, 600 ); yield return gameProvider.StartWithCustomScene( "TestFrameworkExample" ); yield return viewProvider.ClickButton< ViewMainMenuExample >( "Shop" ); yield return viewProvider.WaitView< ViewShopExample >(); Assert.AreEqual( 100500, viewProvider.GetElementFromView< ViewShopExample, int >( "OffersCount" ) ); yield return screenshotHelper.CreateScreenshot( "Shop" ); yield return viewProvider.ClickButton< ViewShopExample >( "Close" ); yield return gameProvider.CleanUpGame();

Слайд 25


Результаты этапа 2. Интеграционное тестирование Запускаемость игры Основной игровой луп Дополнительная логика Можно определить состояние билда просто...
Описание слайда:
Результаты этапа 2. Интеграционное тестирование Запускаемость игры Основной игровой луп Дополнительная логика Можно определить состояние билда просто посмотрев на скриншоты

Слайд 26


ЭТАП 3 Тестирование скриншотами
Описание слайда:
ЭТАП 3 Тестирование скриншотами

Слайд 27


Сравнение скриншотов GameViewUtils.SetResolution( 800, 600 ); yield return gameProvider.StartWithCustomScene( "TestFrameworkExample" ); var...
Описание слайда:
Сравнение скриншотов GameViewUtils.SetResolution( 800, 600 ); yield return gameProvider.StartWithCustomScene( "TestFrameworkExample" ); var beforeShop = screenshotHelper.CreateScreenshot( "MainMenu" ); yield return beforeShop; yield return viewProvider.ClickButton< ViewMainMenuExample >( "Shop" ); yield return viewProvider.WaitView< ViewShopExample >(); Assert.AreEqual( 100500, viewProvider.GetElementFromView< ViewShopExample, int >( "OffersCount" ) ); yield return screenshotHelper.CreateScreenshot( "Shop" ); yield return viewProvider.ClickButton< ViewShopExample >( "Close" ); var afterShop = screenshotHelper.CreateScreenshot( "MainMenu" ); yield return afterShop; var diffImagePath = screenshotHelper.GetPath( "MainMenuDiffAfterShopOpened" ); var pixelsChanged = ImageComparer.Compare( beforeShop.Path, afterShop.Path, diffImagePath ); Assert.AreEqual( 0, pixelsChanged ); yield return gameProvider.CleanUpGame();

Слайд 28


Сравнение скриншотов. Результат.
Описание слайда:
Сравнение скриншотов. Результат.

Слайд 29


Итоговый результат GameViewUtils.SetResolution( 800, 600 ); yield return gameProvider.StartWithCustomScene( "TestFrameworkExample" ); var...
Описание слайда:
Итоговый результат GameViewUtils.SetResolution( 800, 600 ); yield return gameProvider.StartWithCustomScene( "TestFrameworkExample" ); var beforeShop = screenshotHelper.CreateScreenshot( "MainMenu" ); yield return beforeShop; yield return viewProvider.ClickButton< ViewMainMenuExample >( "Shop" ); yield return viewProvider.WaitView< ViewShopExample >(); yield return screenshotHelper.CreateScreenshot( "Shop" ); yield return viewProvider.ClickButton< ViewShopExample >( "Close" ); var afterShop = screenshotHelper.CreateScreenshot( "MainMenu" ); yield return afterShop; Assert.AreEqual( 100500, viewProvider.GetElementFromView< ViewShopExample, int >( "OffersCount" ) ); var diffImagePath = screenshotHelper.GetPath( "MainMenuDiffAfterShopOpened" ); var pixelsChanged = ImageComparer.Compare( beforeShop.Path, afterShop.Path, diffImagePath ); Assert.AreEqual( 0, pixelsChanged ); yield return gameProvider.CleanUpGame();

Слайд 30


Тестирование скриншотами. Шейдеры
Описание слайда:
Тестирование скриншотами. Шейдеры

Слайд 31


Тестирование скриншотами. Алгоритмы
Описание слайда:
Тестирование скриншотами. Алгоритмы

Слайд 32


Тестирование скриншотами. Сравнение с оригиналом Храним оригинал скриншота в репозитории Сравниваем новые скриншоты против оригинала Если есть...
Описание слайда:
Тестирование скриншотами. Сравнение с оригиналом Храним оригинал скриншота в репозитории Сравниваем новые скриншоты против оригинала Если есть изменения между новыми скриншотами и старыми Решение 1 - новые скриншоты это и есть новый оригинал Решение 2 - открываем баг

Слайд 33


Результаты этапа 3. Тестирование скриншотами Из кода сложно понять, что игра выглядит неправильно Человек справляется лучше со сравниванием...
Описание слайда:
Результаты этапа 3. Тестирование скриншотами Из кода сложно понять, что игра выглядит неправильно Человек справляется лучше со сравниванием скриншотов, если он знает куда смотреть Компьютер может сравнить скриншоты и принять по этому поводу решение, либо просто показать разницу человеку, который будет принимать решение

Слайд 34


ЭТАП 4 Performance-тестирование
Описание слайда:
ЭТАП 4 Performance-тестирование

Слайд 35


Performance-тестирование Собираем метрики во время тестов Память Производительность Скорость загрузки Миллион других параметров Строим график по этим...
Описание слайда:
Performance-тестирование Собираем метрики во время тестов Память Производительность Скорость загрузки Миллион других параметров Строим график по этим метрикам

Слайд 36


Скриншот Performance-тестирования
Описание слайда:
Скриншот Performance-тестирования

Слайд 37


Результаты этапа 4. Performance-тестирование Известные метрики об игре Известен момент когда что-то пошло не так Проще принять решение готов билд к...
Описание слайда:
Результаты этапа 4. Performance-тестирование Известные метрики об игре Известен момент когда что-то пошло не так Проще принять решение готов билд к релизу или нет

Слайд 38


Выводы Поэтапно вводим интеграционное тестирование Этап 1. Непрерывная интеграция Этап 2. Интеграционное тестирование Этап 3. Тестирование...
Описание слайда:
Выводы Поэтапно вводим интеграционное тестирование Этап 1. Непрерывная интеграция Этап 2. Интеграционное тестирование Этап 3. Тестирование скриншотами Этап 4. Performance-тестирование Автоматизируем процесс тестирования Быстрое время реагирования, если что-то идет не так Экономим деньги (баг найденный раньше стоит намного дешевле) Увеличиваем количество Smoke-тестов (кардинально) Меньше неожиданностей Команда знает о состоянии билда У программиста есть страховочная сеть Можно осуществить на любой стадии проекта

Слайд 39


Полезные ссылки (GDC, Amy Phillips, Tools to Reduce Open Bug Count at Media Molecule) (GDC, Alen Ladavac, Fast Iteration Tools in the Production of...
Описание слайда:
Полезные ссылки (GDC, Amy Phillips, Tools to Reduce Open Bug Count at Media Molecule) (GDC, Alen Ladavac, Fast Iteration Tools in the Production of the Talos Principle) (DataArt, Валентин Анопренко, Интеграционные автотесты бизнес-логики) (Simon Schreibt, Using screenshot comparing techniques) (HolyJS, Роман Дворнов, Unit-тестирование скриншотами: преодолеваем звуковой барьер) (DotNext, Андрей Акиньшин, Поговорим про Performance-тестирование)

Слайд 40


Бонус 1. Улучшаем плей-тесты Увеличиваем Time.timeScale (не применимо для всех тестов/приложений) Не должны зависеть от рандома Узкая...
Описание слайда:
Бонус 1. Улучшаем плей-тесты Увеличиваем Time.timeScale (не применимо для всех тестов/приложений) Не должны зависеть от рандома Узкая функциональность Нам не важна производительность кода теста (поэтому мы активно используем рефлексию в тестах) Monkey Runner Использовать функционал ботов и/или реплеев

Слайд 41


Бонус 2. Что хотелось бы видеть в Unity Возможность экспортировать результаты тестов с устройства Возможность фильтровать тесты при запуске из...
Описание слайда:
Бонус 2. Что хотелось бы видеть в Unity Возможность экспортировать результаты тестов с устройства Возможность фильтровать тесты при запуске из консоли Возможность фильтровать тесты при запуске на устройстве Play-тесты в Unity Cloud Build Code Coverage

Слайд 42


Бонус 3. Альтернативы. SikuliX
Описание слайда:
Бонус 3. Альтернативы. SikuliX

Слайд 43


Бонус 4. Альтернативы. Unium
Описание слайда:
Бонус 4. Альтернативы. Unium

Слайд 44


Вопросы
Описание слайда:
Вопросы



Похожие презентации
Mypresentation.ru
Загрузить презентацию