Тестирование Игрового Движка Amazon Lumberyard Подходы И Инструмены Автор: Артём Несиоловский, SDET, Amazon Опыт

Тестирование Игрового Движка Amazon Lumberyard Подходы И Инструмены Автор: Артём Несиоловский, SDET, Amazon Опыт

Артём Несиоловский Тестирование игрового движка Amazon Lumberyard Подходы и инструмены Автор: Артём Несиоловский, SDET, Amazon Опыт • GeForce Experience • Lineage II • Cut the Rope • Yandex.Images • Amazon Lumberyard 2 SDET в Lumberyard QA 3 Доклад • Движок • Покрытие тестами • Автоматизация - ошибки • Примеры инструментов • Баги ;) 4 Амазон делает игры?! + + 5 С чего все начиналось • Crytek, FarCry, CryEngine 3 • ??? • Amazon Lumberyard! 6 Игровой Движок Двигатель (набор API Редактор (создавать уровни) для построения игры) 7 Amazon Lumberyard 8 Как тестировать движок? • Редактор и инструменты • Уровни и игры • Инфраструктура и совместимость 9 Особенности проекта Платформы – Максимально Продукт для PC, Mac, iOS, широкий спектр разработчиков Android, PS4, возможных и для геймеров Xbox One, VR игровых жанров 10 Очень много интерфейса 11 Взаимодействие компонентов 12 Множество условий 13 Недетерминированные системы 14 Анимация и физика 15 Как определить покрытие? • 12к+ тест кейсов. • Большинство критических багов находится во время Ad-hoc. • Как оценить покрытие системы тестами? Исходный код? Требования? Модель! 16 ACC моделирование ACC model – Attribute, Component, Capability • Components – существительные – viewport, window, game entity, texture, etc. • Capabilities – глаголы – renders, provides, calculates, moves, etc. • Attributes – прилагательные – fast, scalable, secure, etc. Кто? Что делает? Как? 17 Viewport демо 18 ACC модель Viewport 19 ACC модель движка в целом 20 Результаты и выводы • ACC моделирование выявило не покрытые области. • Значительно сократилось кол-во Blocker & Critical багов, находимых после Full Test Pass. • ACC модели становятся источником правды для фичей для всех участников команды. 21 Автоматизация 22 Автоматизация UI – GUI Joe Froglogic – Squish for QT 23 Проблемы • С - Стабильность • Отсутствие функционала • Скорость работы 24 Решение • Shiboken + PySide • Headless automation • Автоматизируем не только для тестирования 25 Lumberyard Platforms Engine PC Tools XboxOne Launchers S3 PS4 Quicksight Mobile Downloads Deploys Configures Runs tests LYTestTools Reports pytest Test Helpers Extends Custom test functionality 26 Взаимодействие с Lumberyard Взаимодействия фреймворка с движком происходит через: Subprocess args, IO. Logs. Remote console (through networking). Image capturing. Python APIs. 27 Vegetation Demo 29 Vegetation Level 30 Код теста launcher.deploy() launcher.launch() launcher.run(test_tools.launchers.phase.TimePhase(laun cher_stability_timeout, launcher_stability_timeout)) assert launcher.is_alive(), "Launcher crashed within the tested stability timeframe." launcher.stop() 31 Код параметризации test_platforms = [ pytest.param("win_x64_vs2017", "profile", "LargeWorldsTest", "all", "LY-96757-MergedMeshStreamOverflow", pytest.param("darwin_x64", "profile", "LargeWorldsTest", "all", "LY-96757-MergedMeshStreamOverflow", ] @pytest.mark.parametrize("platform, configuration, project, spec, level", test_platforms) class TestMergedMesh(object): 32 Запускаем тест 33 Более сложный вариант editor.deploy() editor.launch(['--runpython', os.path.join(os.path.dirname(__file__), ‘EditorScripts', 'ly98058.py'), '--runpythonargs', level]) editor.run( test_tools.launchers.phase.WaitForLauncherToQuit(editor, 120)) 34 Тестовый уровень 35 Python-скрипт для редактора terrain.set_layer_brush_color("Cobblestones", 1.0, 0.0, 0.0) terrain.set_layer_painter_brush_mask_layer_name("Co bblestones") terrain.paint_layer("Cobblestones", 0.0, 0.0, 0.0, True) 36 Продолжение terrain.set_layer_painter_brush_radius(26.0) terrain.set_layer_painter_brush_detail_intensity(0.0) terrain.set_layer_painter_brush_mask_layer_name("") terrain.set_layer_brush_color("Default", 0.0, 0.0, 1.0) for x in range (40, 43): for y in range (40, 43): terrain.paint_layer("Default", x, y, 0.0, False) 37 Запускаем скрипт 38 Скриншоты 39 Графика 40 Rin здорового человека 41 Rin курильщика 42 Сравниваем скриншоты 43 Сравниваем скриншоты 44 Diff Quaternion structural similarity: a new quality index for color images. By Kolaman A1, Yadid- Pecht O, 2011 45 Графика 46 Бой с тенью 47 Ассеты 48 Черные деревья 49 Не все можно поймать 50 Интерфейс 51 Игровые компоненты 52 Игровые компоненты 53 100500 скриншотов Как тестировать графику без звисимости от платформ? • WARP - Windows Advanced Rasterization Platform. • Не зависим от различий в драйверах. • Не зависим от различий в железках. 54 Производительность GPU CPU PIX Memory RADTelemetry Visual Studio 55 Input Lag 56 RADTelemetry 57 И где здесь AWS? Используется в тестировании: Тестируем интеграцию: • EC2 • CloudCanvas • Device Farm • Amazon GameLift • S3 • Twitch • Quicksight • CloudWatch 58 Резюме по автоматизации • There is no silver bullet • Plug-and-play framework • Скриншоты, vegetation • Software Renderer, RADTelemetry 59 Заключение https://aws.amazon.com/lumberyard - скачать движок бесплатно и без смс https://doc.qt.io/qtforpython/shiboken2/index.html - Shiboken the Binding Generator (C++ Qt to Python) https://docs.microsoft.com/en-us/windows/win32/direct3darticles/directx- warp - Windows Software Renderer http://www.radgametools.com/telemetry.htm – RAD Telemetry, CPU Performance Profiling https://aws.amazon.com/gametech - AWS Game Tech 60 Приходите к нам! https://www.amazon.jobs/en/teams /amazon-game-studios 61 Вопросы и ответы 62 Спасибо! https://www.linkedin.com/in/yinmute/.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    63 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us