Прибыль:
- Способность понимать функциональные, регрессионные, крайние случаи и слои краш-тестов, а также создавать тестовые сценарии и списки крайних случаев с помощью искусственного интеллекта.
- Возможность ускорить отладку за счет написания автоматического тестового кода с использованием искусственного интеллекта и извлечения шаблонов из журналов и анализа сбоев.
- Чтобы понять, что диагностика ошибок искусственного интеллекта является не доказательством, а гипотезой, причина должна быть доказана с помощью журналов и воспроизведения, а также важно, чтобы отчет об ошибках был воспроизводимым.
Когда игра выпускается, игроки играют в нее так, как разработчик даже не мог себе представить: застревать в стенах, использовать инвентарь, достигать невозможных мест, вызывать сбои. Обеспечение качества (QA — обеспечение качества); Это процесс систематического тестирования игры перед выпуском, а также поиска и исправления ошибок (ошибок), сбоев, нестабильности и неудачных опытов. Это одно из самых трудоемких, но критически важных звеньев в производстве игр. ИИ ускоряет контроль качества во многих моментах: создание тестовых наборов, анализ отчетов об ошибках, просмотр журналов, автоматическое написание тестового кода, отладка и уточнение этапов производства. Но ИИ не заменяет интуицию тестировщика-человека и оценку ощущений от игры.
В этом модуле вы узнаете, как использовать ИИ для контроля качества и отладки; Вы изучите разработку сценариев тестирования, анализ журналов, автоматическое написание тестов и дисциплину отчетности об ошибках.
Уровни контроля качества и место ИИ
Контроль качества является многоуровневым. Функциональное тестирование: работает ли функция (открывается ли дверь, загружается ли запись). Регрессионное тестирование: нарушило ли новое изменение то, что работало раньше? Тестирование на крайних случаях: необычные входные данные (сброс инвентаря, два ключа одновременно, пограничные значения). Тестирование производительности/краш: стабильна ли игра. Тест игрового процесса/опыта: веселый, интуитивно понятный. ИИ силен в первых четырех аспектах: создание сценариев, составление списка крайних случаев, написание тестового кода, анализ журналов. Последнее — опыт — принадлежит человеку.
Последовательность действий по обеспечению качества:
- Создавайте тестовые примеры (список функциональных и крайних случаев с помощью ИИ).
- Напишите автоматическое тестирование (код для повторных проверок).
- Запускать и собирать (журнал ошибок, логов, сбоев).
- Анализируйте (изучите журнал и структуру ошибок с помощью ИИ).
- Сообщайте и проверяйте (четкий, воспроизводимый отчет об ошибке; тестовое исправление).
Подсказка: трудно найти крайние случаи, потому что дизайнер играет в свою игру «правильно». Спросите ИИ: «Что бы попробовал игрок, если бы захотел сломать эту систему?» Перечислите эксплойты и крайние случаи.
Автоматическое тестирование: оставьте повторение машине
Ручное тестирование одних и тех же вещей в каждом выпуске утомительно и чревато ошибками. Автоматизированное тестирование помещает эти проверки в код: возвращает ли функция правильный результат при каждом вызове, находится ли система в ожидаемом состоянии. Unity и Unreal предлагают среды тестирования; ИИ быстро пишет эти тесты. Это особенно ценно для регрессии: если изменение нарушает что-то, что работало раньше, тест становится красным. Просмотрите тесты, которые проводит ИИ, и убедитесь, что они проверяют действительно значимые результаты: пустой тест хуже, чем отсутствие теста.
Внимание: при отладке ИИ иногда выдает вымышленное объяснение в качестве «вероятной причины» (галлюцинации). Не принимайте причину ошибки только потому, что вам так сказал ИИ; Докажите причину путем регистрации, воспроизведения и тестирования. Неправильный диагноз задерживает поиск правильного.
Воспроизведение: сердце отладки
Первое требование для исправления ошибки — ее надежное воспроизведение. Ошибку, описанную как «иногда случается», невозможно исправить, поскольку вы не можете проверить, сработало ли исправление. Таким образом, наиболее ценная работа по отладке — это определение точных условий, при которых возникает ошибка (на каких этапах, в какой ситуации, в какое время). ИИ помогает сузить круг вопросов: вы можете указать симптомы и этапы частичного воспроизводства и сказать: «Предложите условия и стратегию сужения, которые могут вызвать такое поведение». Но на самом деле вы выполняете сужение, запуская игру; ИИ генерирует гипотезы, вы их устраняете.
Особенно коварны ошибки, связанные с синхронизацией (состояние гонки) и состоянием памяти; они происходят только в определенной последовательности или нагрузке. Для таких ошибок очень важно добавить в журнал временную метку и информацию о состоянии; ИИ может проанализировать этот богатый журнал и увидеть закономерность («ошибка всегда возникает, когда эти два события происходят недавно»). Помните золотое правило отладки: сначала пойми, потом исправь. Исправление без понимания скрывает ошибку, но не решает ее и часто создает новую ошибку где-то еще.
три мини-кейса
Случай 1. Поиск крайних случаев. В ролевой игре команда протестировала систему инвентаря в «обычном» игровом процессе и сочла ее надежной. Они попросили ИИ сказать «попробуй взломать этот инвентарь» и сгенерировали 30 крайних сценариев; 4 из них были истинными ошибками (разделение весовых позиций 0, одновременная одноразовая обработка). Исправлено перед публикацией.
Случай 2. Анализ журнала позволил устранить сбой. Игра случайно вылетала; журналы сбоев состояли из сотен строк. Когда ИИ предоставили логи и запросили шаблон, выяснилось, что сбой всегда происходил при переходе конкретной сцены и нехватке памяти. Благодаря этой подсказке программист обнаружил утечку памяти; Число аварий упало до нуля.
Случай 3 — Возврат из-за неправильного диагноза. Программист поверил объяснению ИИ о том, что «эта ошибка вызвана этой функцией», и возился с ней полдня; никаких результатов не последовало. Когда он еще раз уточнил и записал этапы производства, ошибка была совсем в другом месте. Урок: Диагностика ИИ — это гипотезы, а не доказательства.
Четыре копируемых шаблона
1) Генерация крайних случаев/сценариев эксплуатации:
Ваша роль: вредоносный тестировщик QA. Я описываю следующую систему: [система, правила]. Задача: перечислить 20 крайних сценариев, которые попытаются взломать, использовать или привести эту систему в неожиданное состояние. Для каждого: что попробовать, ожидаемый результат, возможная ошибка.
2) Написание автоматизированного теста:
Движок: [Unity 2022.3/Unreal 5.3]. Структура тестирования: [укажите]. Напишите автоматические тесты для следующей функции/системы: [описание/код]. Включите нормальный случай, предельный случай и ошибочные входные данные. Убедитесь, что каждый тест проверяет что-то действительно значимое; Написание пустых/бессмысленных тестов.
3) Анализ журналов/сбоев:
Ниже приведены журналы сбоев/ошибок игры: [журнал]. Задача: отметить повторяющиеся шаблоны, общие условия (сцена, память, время) и возможные основные причины. Представьте каждую причину как «гипотезу, которую необходимо доказать»; говорить ясно. Еще подскажите как проверить.
4) Уточнение отчета об ошибке:
Сделайте следующий расплывчатый отчет об ошибке ясным и воспроизводимым: [необработанный отчет]. Выходные данные: название, пошаговое воспроизведение, ожидаемый результат, фактический результат, периодичность, окружение. Если информация отсутствует, укажите, какая информация необходима.
Слабая подсказка / Сильная подсказка
Слабая подсказка:
В моей игре ошибка, исправьте ее.
Никакого контекста, никакого журнала, никакого воспроизведения; ИИ предсказательный, и риск галлюцинаций высок.
Мощная подсказка:
В моей игре на Unity 2022.3 есть ошибка: инвентарь иногда удваивается, когда игрок выполняет быстрое сохранение-загрузку. Воспроизведение: [шаги]. Связанный код: [вставить]. Журнал: [вставить]. Задача: перечислить возможные первопричины в качестве гипотез, которые необходимо доказать, указать, как проверить и возможно исправить каждую из них. Придумать несуществующую причину; Если вы не уверены, дайте мне знать.
Воспроизведение, кодирование, журнал и запрос «представить как гипотезу» делают диагноз надежным.
Таблица слоев контроля качества
слой
Что он тестирует?
Вклад ИИ
человеческая доля
функциональный
Функция работает?
Скрипт, тестовый код
Решение о приеме
регресс
Старая вещь сломалась?
автоматический тест
Решение по объему
крайний случай
необычный ввод
Производство сценария
приоритет
Сбой/производительность
решимость
Анализ журналов
Подтверждение основной причины
Опыт
развлечение, интуиция
ограниченный
полностью человеческий
Распространенные ошибки
- Просто тестирую «нормальный» геймплей. Краевые корпуса взрываются после выпуска.
- Принятие диагноза ИИ за доказательство. Почему доказано журналами и тестированием.
- Написание пустых автотестов. Бессмысленное тестирование создает иллюзию уверенности.
- Неопределенный отчет об ошибке. Невоспроизводимую ошибку исправить невозможно.
- Пропуск регрессионного тестирования. Каждое исправление может вызвать новые ошибки.
В заключение
QA — это дисциплина, которая делает игру готовой для игрока. ИИ; генерирует сценарии крайних случаев, пишет автоматические тесты, анализирует журналы и уточняет отчеты об ошибках. Но их диагнозы — это гипотезы, оценка опыта — человечна, и каждая коррекция требует повторного тестирования. Воспроизведите рефлекс «кто и как это сломает» с помощью ИИ; Вы собираете доказательства.
Задача приложения
Выберите систему из своей игры. Создайте 20 сценариев с помощью шаблона «Генерация сценариев крайних случаев/эксплуатации» и протестируйте 5 самых рискованных. Создайте воспроизводимый отчет об обнаруженной ошибке с помощью шаблона «Уточнение отчета об ошибке».
контрольный список
- [ ] Я создал крайний случай с вопросом «Кто может это сломать и как?»
- [ ] Написал и проверял автоматическое тестирование для повторяющихся проверок.
- [ ] Я рассматривал диагноз ИИ как гипотезу и доказал ее лог/тестом.
- [ ] Я сообщил об ошибках воспроизводимо.
- [ ] Я повторно проверил каждое исправление на предмет регрессии.