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

На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Примеры автоматизированного тестирования игр в Unity абсолютно бесплатно. Урок-презентация на эту тему содержит всего 44 слайда. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » Примеры автоматизированного тестирования игр в Unity



Оцените!
Оцените презентацию от 1 до 5 баллов!
  • Тип файла:
    ppt / pptx (powerpoint)
  • Всего слайдов:
    44 слайда
  • Для класса:
    1,2,3,4,5,6,7,8,9,10,11
  • Размер файла:
    5.95 MB
  • Просмотров:
    109
  • Скачиваний:
    1
  • Автор:
    неизвестен



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

№1 слайд
Содержание слайда:

№2 слайд
Содержание слайда:

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

№4 слайд
Содержание слайда:

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

№6 слайд
КАК?
Содержание слайда: КАК?

№7 слайд
ПО КУСОЧКАМ! ПО КУСОЧКАМ!
Содержание слайда: ПО КУСОЧКАМ! ПО КУСОЧКАМ!

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

№9 слайд
ЭТАП Непрерывная интеграция
Содержание слайда: ЭТАП 1 Непрерывная интеграция

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

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

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

№13 слайд
ЭТАП Интеграционное
Содержание слайда: ЭТАП 2 Интеграционное тестирование

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

№15 слайд
Unity Test Runner
Содержание слайда: Unity Test Runner

№16 слайд
Тест-кейс. Игра BFG.
Содержание слайда: Тест-кейс. Игра BFG.

№17 слайд
Пример теста UnityTest public
Содержание слайда: Пример теста [ 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
Содержание слайда: Запуск сцены [ 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 - помечаем поля
Содержание слайда: 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
Содержание слайда: Нажимаем на кнопку [ 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 операционной системы Работает не только на кнопки, но и на все приложение Для каждой платформы нужно писать реализацию Внутренний - вызываем событие onClick Работает только для кнопок Unity UI Работает на всех платформах Прокликивание сквозь другие UI элементы Внутренний - переопределение BaseInput Работает для всех элементов Unity UI Работает для любой платформы Эмулируем курсор и касания из кода

№22 слайд
Эмуляция курсора в Unity UI
Содержание слайда: Эмуляция курсора в Unity UI

№23 слайд
Assert yield return
Содержание слайда: 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 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. Интеграционное тестирование Запускаемость игры Основной игровой луп Дополнительная логика Можно определить состояние билда просто посмотрев на скриншоты

№26 слайд
ЭТАП Тестирование скриншотами
Содержание слайда: ЭТАП 3 Тестирование скриншотами

№27 слайд
Сравнение скриншотов
Содержание слайда: Сравнение скриншотов 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 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. Тестирование скриншотами Из кода сложно понять, что игра выглядит неправильно Человек справляется лучше со сравниванием скриншотов, если он знает куда смотреть Компьютер может сравнить скриншоты и принять по этому поводу решение, либо просто показать разницу человеку, который будет принимать решение

№34 слайд
ЭТАП Performance-тестирование
Содержание слайда: ЭТАП 4 Performance-тестирование

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

№36 слайд
Скриншот
Содержание слайда: Скриншот Performance-тестирования

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

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

№39 слайд
Полезные ссылки https
Содержание слайда: Полезные ссылки https://www.gdcvault.com/play/1025013/Tools-Tutorial-Day-Tools-to (GDC, Amy Phillips, Tools to Reduce Open Bug Count at Media Molecule) http://gdcvault.com/play/1022784/Fast-Iteration-Tools-in-the (GDC, Alen Ladavac, Fast Iteration Tools in the Production of the Talos Principle) https://www.youtube.com/watch?v=ff5LNHGBGoM (DataArt, Валентин Анопренко, Интеграционные автотесты бизнес-логики) https://simonschreibt.de/wft/watchdog/ (Simon Schreibt, Using screenshot comparing techniques) https://www.youtube.com/watch?v=ULwdj_Vr_WA (HolyJS, Роман Дворнов, Unit-тестирование скриншотами: преодолеваем звуковой барьер) https://www.youtube.com/watch?v=LEy3_2ZzWpk (DotNext, Андрей Акиньшин, Поговорим про Performance-тестирование)

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

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

№42 слайд
Бонус . Альтернативы. SikuliX
Содержание слайда: Бонус 3. Альтернативы. SikuliX

№43 слайд
Бонус . Альтернативы. Unium
Содержание слайда: Бонус 4. Альтернативы. Unium

№44 слайд
Вопросы
Содержание слайда: Вопросы

Скачать все slide презентации Примеры автоматизированного тестирования игр в Unity одним архивом: