12. Тестирование игр. Теория. Автоматизация UE.

#unrealengine #tests #gamedev #devops #ue4 #unittests #unrealengine5 #ue5
Мой курс «Unreal Engine - полное руководство по разработке на С++»
www.udemy.com/course/unrealen...
0:00:00 - Введение
0:01:00 - Аксиома ошибки
0:02:20 - Наши цели
0:03:05 - Методы «защиты»
0:08:29 - Определение тестирования
0:09:20 - Единица тестирования - тест, примеры
0:12:05 - Уровни тестирования
0:13:43 - Классификация тестирования
0:21:41 - Зачем нужны тесты?
0:25:06 - Когда создавать тесты?
0:27:38 - Зачем автоматизировать процесс тестирования?
0:28:40 - Пример пайплайна
0:29:54 - Проблемы тестирования
0:33:14 - Глоссарий
0:34:13 - Заключение
Ссылки из видео:
CPP Check - github.com/danmar/cppcheck
Статический анализ исходного кода UE от PVS-Studio - pvs-studio.com/ru/blog/posts/...
Google C++ Style Guide - google.github.io/styleguide/c...
KZread курс посвящен автоматизации разработки в Unreal Engine.
Wiki - lifeexe-art.gitbook.io/unreal...
GitHub репозиторий - github.com/life-exe/UnrealTPS...
План курса:
-------------------------------------------------------------
✔ Cборка движка из исходного кода
✔ Cборка проекта blueprint игры
✔ Cборка проекта C++ игры
✔ .clang-format, pre-commit .git hook
✔ Сборка UE5 из исходного кода
✔ Unreal version selector / unreal build tool (UBT)
✔ Unreal version selector bug fixes
✔ Сборка бинарной версии из исходников (Installed Build)
✔ Сборка dedicated/listen сервера, подключение клиентов
✔ Тестирование в Unreal Engine. Обзор модуля
➨ Введение в тестирование. Теоретическая часть. Основные понятия
∎ Знакомство с Unreal Testing Automation Frontend. Простейшие unit тесты
∎ Продолжаем знакомство с тестированием в UE. Последовательность Фибоначчи
∎ Тестирование простейшего C++ класса
∎ Создаем C++ инвентарь для тестирования
∎ Тестирование классов UObject
∎ Test Driven Development (TDD). Тестирование AActor. Latent automation command
∎ Интеграционное тестирование. Симуляция ввода Input Component
∎ Functional screenshot test
∎ Публикация отчета по тестам. Test Report
∎ Метрики тестирования. Тестовое покрытие. OpenCppCoverage
∎ Создание работы в Jenkins для автоматического запуска тестов с публикацией отчетов
∎ Slack. Email notifications
∎ Jenkins pipelines
-------------------------------------------------------------
Ресурсы:
🔴Телеграм канал: t.me/LifeExeCode
🔴LifeEXE School: life-exe.teachable.com
🔴Группа ВКонтакте: lifeexecode
🔴Twitter: / lifeexecode
🔴GitHub: github.com/life-exe
🔴Medium: / lifeexe
Поддержать канал:
🔴Patreon: / lifeexecode
🔴PayPal Donate: bit.ly/LifeExePayPalDonate
🔴Boosty: boosty.to/life-exe

Пікірлер: 38

  • @k0c0u
    @k0c0u2 жыл бұрын

    Очень редкая тема в контексте Unreal engine 4! Спасибо большое!!!

  • @LifeEXECode

    @LifeEXECode

    2 жыл бұрын

    Пожалуйста! В следующем видео начнем писать тесты.

  • @martem000
    @martem000Күн бұрын

    Спасибо! Очень полезно!

  • @MegaAtlus
    @MegaAtlus2 жыл бұрын

    Ещё одно отличное видео по тестированию в Unreal. Спасибо!

  • @LifeEXECode

    @LifeEXECode

    2 жыл бұрын

    Пожалуйста!

  • @Pol.batona
    @Pol.batona Жыл бұрын

    Отличная теоретическая основа, лучше чем у нас в универе рассказывали)

  • @Prototiphrom
    @PrototiphromАй бұрын

    Даже философскую часть добавил, как же это правильно.

  • @monolag4319
    @monolag4319 Жыл бұрын

    Спасибо Вам большое за такие шикарные лекции!

  • @VitaliySunny
    @VitaliySunny Жыл бұрын

    Спасибо, очень круто что вы так подробно рассказываете!

  • @user-gp7cw9cl8x
    @user-gp7cw9cl8x2 жыл бұрын

    Очень интересное видео, ждем продолжение!

  • @lolameow2061
    @lolameow20612 жыл бұрын

    Отличное видео, ждала выхода данного блока)

  • @kkorsakov
    @kkorsakov2 жыл бұрын

    Молодцы, даёте достаточно сильную базу понятным языком.

  • @Tobi-vq4ni
    @Tobi-vq4ni11 ай бұрын

    "Или брат Павла Дурова" - тонко подмечено)

  • @mikesyvovol2042
    @mikesyvovol20422 жыл бұрын

    Боже, какой же ты крутой тип. Хочу чтобы ты был моим лучшим другом и мы работали в одной команде!!! ❤‍🔥🤜🤛🙌 А есть где-то уже материалы этого курса, например на udemy, по темам: ∎ Интеграционное тестирование. Симуляция ввода Input Component ∎ Functional screenshot test ∎ Публикация отчета по тестам. Test Report ∎ Метрики тестирования. Тестовое покрытие. OpenCppCoverage ∎ Создание работы в Jenkins для автоматического запуска тестов с публикацией отчетов ∎ Slack. Email notifications ∎ Jenkins pipelines мне как раз вот это сейчас максимально актуально, а на какале его пока что нет👻

  • @LifeEXECode

    @LifeEXECode

    2 жыл бұрын

    Хах, спасибо) Это грядущие лекции, они еще не записаны. Легенда: ✔- видео на канале ➡ - текущее видео ⬜ - невыпущенная лекция

  • @mikesyvovol2042

    @mikesyvovol2042

    2 жыл бұрын

    @@LifeEXECode спасибо, да я понимаю, думал может ты их уже где-то за денюжку выложил 🤷🏻‍♂️ Ну, тогда надеюсь что будет что по существу добавить, к моменту выхода. 🔥

  • @user-zw5lf6hx2n
    @user-zw5lf6hx2n2 жыл бұрын

    Очень интересную тему вы начали. Спасибо!

  • @LifeEXECode

    @LifeEXECode

    2 жыл бұрын

    Пожалуйста! Рад, что вам нравится (=

  • @ps5games821
    @ps5games8212 жыл бұрын

    спасибо за шикарное видео

  • @LifeEXECode

    @LifeEXECode

    2 жыл бұрын

    Пожалуйста!

  • @farkasvilkas5839
    @farkasvilkas5839 Жыл бұрын

    наконец то кто-то пояснил для чего const с переменными

  • @dodgeag
    @dodgeag Жыл бұрын

    Юрий, доброе утро! У вас есть опыт автоматизации тестирования сетевого кода?

  • @abrampetrenko7767
    @abrampetrenko77672 жыл бұрын

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

  • @LifeEXECode

    @LifeEXECode

    2 жыл бұрын

    "Интеграционные тесты проверяют взаимодействие двух бизнес компонентов, а не технических(классы)." - Не согласен со второй частью про классы. Абсолютно обычная ситуация, что у вас есть две подсистемы в игровом проекте и нужно протестировать их взаимодействие. Примеры: 1. Компоненты: система модификации оружия; система пикапов различных частей оружия; AI патрулирования и нахождения пикапов. Все системы покрыты unit тестами, которые корректно выполняются и разработаны отдельными командами. Вполне себе можно создать интеграционный изолированный тест на карте с разбросанными частями оружия, которые должны быть подобраны NPC для получения детерминированной модификации боекомплекта и наловить багов на этом. 2. Компоненты: система дверей, лифтов и прочее, которые может открыть персонаж; модельная логика квеста. Интеграционный тест: в зависимости от прогресса по квесту, определённые двери, лифты становятся доступны для персонажа. + все это естественно можно оттестировать белым ящиком. "Ещё тестирование стабильности, стресс тестинг, нагрузочное тестирование это всё подразделы тестирования производительности." - Я бы не стал так однозначно утверждать. В видео говорил, что это вопрос терминологии, как вы будете классифицировать типы тестирования. Зависит от проекта, платформы, фреймворка и т.п. Простейший пример: система корректно работает, но везде используются жадные алгоритмы. Соответственно система стабильна, но производительность слабая.

  • @abrampetrenko7767

    @abrampetrenko7767

    2 жыл бұрын

    @@LifeEXECode Про интеграционные тесты - конечно в случае когда класс настолько высокоуровневый что торчит наружу и его можно проверить белым ящиком то согласен, но это должен быть класс чуть ли не уровня страницы. Если нет и для проверки нужно лезть в код то это уже не подпадает под интеграционное тестирование. Тут можно привести стандартный пример: логин форма. Чтобы залогиниться нужно провзаимодействовать с кучей классов: ввести логин, пароль, нажать кнопку логина, при этом мы можем проверять что например встроенная подсказка работает и т.д. и это всё ещё будет компонентная проверка, а не интеграционная. А вот когда мы нажали логин и проверяем что открылась домашняя страница то это уже самый простой интеграционный тест, то есть произошло взаимодействие компонентов именно с точки зрения пользователя, а не разработчика. И ещё не забываем что интеграционные тесты ведь также могут использовать заглушки, совсем как юниты, и это нормально, но это просто к слову. Насчёт терминологии в перфоманс тестинге она как раз уже вполне устоявшаяся, в отличие от скажем функционального тестирования где действительно по три термина обозначают одно и то же. Это происходит из-за того что в функциональное тестирование автоматизация пришла относительно недавно и она тут ещё не устоялась. А вот перфоманс тестирование изначально было сильно автоматизируемым процессом поэтому там всё давно стабильно. Насчёт последнего примера: если система удовлетворяет требуемой производительности (нагрузочное, стресс и и.д.) то абсолютно всё равно насколько жадные там используются алгоритмы, тестирование такими категориями не руководствуется. В вашем случае если производительность системы будет удовлетворять требованиям то и хорошо, если нет, то это будет отловлено тестированием производительности, например стресс тестом который покажет что двух юзеров система уже не тянет, а нужно тянуть хотя бы трёх.