В переводе с английского Bug означает «жук, мелкое насекомое». Это слово в схожем значении использовали ещё до появления компьютерных технологий, и без него не обходится ни одни IT-продукт. Рассказываем, как устроено тестирование видеоигр, и почему тестировщик — востребованная профессия.
Первый баг в истории
Популяризовать термин помог случай, произошедший в Гарварде 9 сентября 1947 года. Группа учёных, работавшая с электронно-вычислительной машиной Mark II, нашла в устройстве мотылька, застрявшего между контактов. Инженеры не смогли удержаться от шутки и приклеили насекомое прямо в свой технический дневник с надписью «First actual case of bug being found». («Первый реальный случай обнаружения бага/жучка»). Тетрадь, кстати, хранится в Национальном музее американской истории, а багами стали называть не только технические поломки но и сбои в программе.
Так почему же возникают баги? Так происходит, потому что компьютерные программы — это сложные системы данных и инструкций, и чем сложнее система, тем больше риск ошибок. Баги возникают от простой человеческой невнимательности: забыл программист поставить один знак, и алгоритм уже сбился.
Также проблемы может устроить процесс компиляции, когда компьютер переводит информацию с языка программирования на более низкоуровневый «машинный». Если вычислительной мощности компьютера не хватает на своевременную компиляцию, программа работает некорректно, и возникает баг.
Баг багу рознь
Видеоигры — это тоже программы, а потому и баги в них тоже водятся. Причем от смешных и безобидных плоть до раздражающих. При этом чем масштабнее и качественнее игра, тем больше в ней багов: всё потому, что над одной игрой AAA-класса одновременно работают сотни, а то и тысячи человек. При попытке сложить воедино отдельный труд каждого непременно будут возникать ошибки и нестыковки.
Никто не захочет играть в забагованную игру, поэтому каждый проект перед релизом обязательно проходит проверку у тестировщиков. Может показаться, что это работа мечты: знай, играй себе в игры, да сообщай разработчикам, если что-то пошло не так. Но на самом деле это непростой труд, требующий немалой изобретательности. «Охотник за багами» должен убедиться, что без ошибок работает любая точка в пространстве в любой возможной ситуации.
Три стадии тестирования
Разработка игры во многом напоминает создание IT-продукта, будь-то мобильное приложение или какой-то онлайн-сервис. Прежде, чем состоится релиз, разработку нужно обкатать и выявить все ошибки. Как правило, тестирование проходит в несколько этапов:
- Альфа — это фаза, когда игруа тестируеют параллельно с ее разработкой. На этом этапе требуется подробное документирование аппаратных и программных сбоев, чтобы разработчики могли исправить их на ранних этапах.
- Бета — на этом этапе тестировщики должны тщательно искать всевозможные способы «сломать» готовую игру, выявляя любые незначительные ошибки. Также компании привлекают добровольцев из числа потенциальных игроков в рамках закрытого или открытого бета-теста.
- Препродакшн — игра готова к публикации, и тестеры должны подтвердить качество игры со всеми исправлениями багов.
Баги бывают разными
Любую найденную ошибку тестировщик описывает и классифицирует. Например, если баг мешает проходить игру (не удается взять квестовый предмет, нельзя завершить уровень и т. д.), ошибку нужно исправить в срочном порядке. Также высокий приоритет получают сложности с оплатой внутри приложения.
Существуют и другие категории:
Баги функциональности — это когда в игре попросту что-то не работает! Например, при нажатии на кнопку «Меню» программа необъяснимо «вылетает».
Графические баги — что-то не так с «картинкой». Пропадают текстуры, объекты проваливаются друг в друга или становятся невидимыми. Отсюда и мемы с персонажами, застрявшими в Т-позах.
Баги производительности — игра работает медленно и зависает, количество кадров в секунду заметно ниже нормы.
Логические баги — например, для прохождения уровня ваше оружие должно наносить минимум 100 единиц урона, а оно наносит только 50.
Баги дизайна уровней — это всем знакомые «застревания в текстурах». Они возникают, когда разработчики случайно добавляют в геометрическую модель лишние элементы или что-то забывают. Например, поставить стену, из-за которой игрок проваливается в брешь или застревает.
Баги баланса — например, когда одно конкретное оружие оказывается значительно мощнее, чем предполагалось, и использование остальных «пушек» становится бессмысленным, а игра — скучной и монотонной.
Чем больше возможностей предлагает игра, тем больше в ней будет неожиданных взаимодействий. Особенно в «группе риска» находятся крупны е RPG (role playing game) с открытым миром, сетевые игры и проекты с мощной графикой. Такие игры обычно проходят не только через тестировщиков, но и открытые тесты: это значит, что ещё незавершенная игра становится доступна всем желающим.
Игровое комьюнити за считанные часы находит сотни неожиданных багов и сообщает о них разработчикам. Впрочем, и после окончательного релиза без багов не обойтись, поэтому приходится постоянно выпускать патчи — «заплатки» в коде, которые исправляют программные ошибки.
Где еще нужны тестировщики?
По сути, такие спецы нужны в любой продуктовой IT-компании, причем тестировщик в этой индустрии не единственная профессия, связанная с контролем качества разработки. Еще есть QA-инженеры (Quality Assurance engineer), которых задействуют на этапах планирования, разработки и поддержания продукта. Их задача – как можно раньше выявить ошибки в работе будущего сервиса. Если проблему находят на поздних этапах, ее исправление обойдется компании гораздо дороже. Чем сложнее и масштабнее продукт, тем больше ошибок может возникнуть.
Тестировщиков и QA-инженеров регулярно путают. Задачи этих специалистов тесно связаны, но в их работе есть несколько принципиальных отличий. Задача QA-инженера – не допустить дефекты в продукте за счет улучшения процессов разработки и тестирования. А тестировщик проверяет работоспособность уже готового или почти готового продукта.
Также некоторые компании выделяют позицию Quality Control Engineer, или QC. Задача таких специалистов – найти и исправить расхождения между готовым продуктом и требованиями заказчика. Но чаще эти обязанности входят в функционал QA-инженера.
Как войти в профессию?
Начать карьеру тестировщика можно и без знаний кодинга. Для этого достаточно пройти специализированные курсы по QA. К примеру, экспресс-курс тестировщика для начинающих на сайте DAR U. Программу обучения курса разработал ведущий инженер контроля качества в DAR Изат Биялиев. Обучиться новой профессии может представитель любой специальности.
QA-инженеру важно разбираться в различных видах тестирования, уметь проектировать тестовую модель и владеть различными практиками тест-дизайна. Также нужны знания основ программирования и опыт работы с автотестами. Полезными в работе будут навыки оптимизации процесса тестирования в команде и умение писать тесты на Go/PHP/Kotlin/Swift/JS.