Тестирование — неотъемлемая часть разработки игр, и мобильные тайтлы не исключение. Рынок полон устройств самых разных форм-факторов, мощности и совместимости. При этом чем больше игроков, тем игра успешнее и тем доход больше. Чтобы игроков было как можно больше, нужна поддержка максимального количества смартфонов и планшетов. Чтобы этого добиться, нужно “отполировать билд” для работы даже на самых бюджетных девайсах.

Раз тестирование необходимо, возникает вопрос: как его проводить? Самый простой способ — набрать пул девайсов и запускать на них игру, отслеживать баги и устранять их. Способ надежный, но он сильно зависит от количества тестировщиков, и требует большего размера затрат, т.к. есть риск утери или повреждения устройств. Отслеживание ошибок также затрудняется при физическом тестировании, т.к. здесь информация для разработчика определяется только тем, насколько ответственно к процессу подходит тестировщик.

Ускорить, оптимизировать и автоматизировать процесс можно и нужно. Это можно сделать, установив тестовую ферму. Меня зовут Максим Шагов, я работаю QA лидом в мобильном игровом паблишинге и расскажу как это сделать и что это такое.

Что это такое? 

Если коротко, ферма - тестовый ПК, аналогичный тем, на которых тестируют компьютерные игры, только там нет видеокарты (не нужна), а остальное железо более бюджетное. Предназначение такой установки — создать место, где сотрудник может получить устройство для теста игры без прямого к нему физического доступа. 

Это особенно полезно, если в компании большой парк девайсов, и следить за ними довольно сложно. Чем больше сотрудников, тем сложнее, ведь каждому нужно устройство. Ферма же позволяет держать девайсы подключенными все время, и выдавать их сотрудникам без лишних проволочек и бюрократии.

Как это работает?

Для пользователя работа с фермой аналогична работе с функциями удаленного воспроизведения, которая есть на некоторых игровых консолях. Все смартфоны и планшеты подключены к ферме, развернутой на Ubuntu. В нашем случае мы основывали ее на исходном коде, бесплатно доступном на GitHub, который доработали и оптимизировали под потребности компании, а также обновили, поскольку изначальный разработчик прекратил поддержку 4-5 лет назад. На данный момент ферма поддерживает все версии Android, вплоть до 12-й. Работы над поддержкой iOS также ведутся. 

Принцип работы в деталях выглядит так: на базе Ubuntu развернут сервер, который использует Rethink как базу данных. Выбор Ubuntu объясняется просто — она лучше всего подходит для работы в силу своего функционала. Подключение пользователя к устройствам производится через веб-интерфейс, а сами устройства подсоединяются к ПК через через Android Debug Bridge. Он показывает каждую конкретную сессию каждого пользователя на том или устройстве в текущий момент времени. Администратору при этом доступна история всех операций. Подключиться к интерфейсу можно даже со смартфона, и использовать его для тестирования другого устройства, например зайти с iOS-смартфона и работать на Android-планшете. 

Учитывая, что работа по сути ведется через веб-соединение, может возникнуть вопрос: “Не вызовет ли слабое соединение затруднений в работе?”. Как показали наши тесты, сверхмощного соединения такая установка не требует, подходит даже вполне бюджетное подключение в 100 МБит/с, а работать с ней может до 120 человек одновременно.

В чём выгода для разработчика?

Во-первых, как уже говорилось, чем больше девайсов поддерживает игру, тем лучше. Тестирование на большом парке разных устройств — лучший способ эту поддержку обеспечить. Ферма позволяет существенно ускорить и упростить процесс, в том числе облегчая доступ к смартфонам и планшетам. 

Во-вторых, это не привязывает тестирование к офису компании. Сотруднику не нужно брать девайс физически, а значит нет необходимости оставаться с ним на рабочем месте, во избежание утери или нарушения соглашений о неразглашении. Подключиться для тестирования можно и с рабочего ПК и с собственного устройства, соблюдая должные меры безопасности.

В-третьих, тестовые устройства легче контролировать через ферму. Она отслеживает, кто, где и когда берет какой смартфон, что помогает оптимизировать график и определять возможные причины ошибок и вылетов. 

В-четвертых, ферма поддерживает макросы, что позволяет одновременно тестировать одну и ту же игровую сессию на разных устройствах. Это серьезно сокращает время тестирования и трудозатраты сотрудников. Альтернативные способы, например эмуляция, не всегда покрывают такие потребности. 

Наконец, через ферму можно записывать видео и снимать скриншоты автоматически. Это помогает при вылетах или каких-то проблемах сразу прикладывать к отчетам об ошибках подтверждения. 

Есть, разумеется, и минусы, но они, скорее, индивидуальные. Например, для каждого форм-фактора и девайсов с разным разрешением нужно записывать макросы индивидуально. Чем больше макросов, тем больше требуется поддержки. Сейчас мы работаем над решением этой проблемы. 

Также в перспективе мы планируем довести работу системы до дублирования сессий с одного устройства на остальные через Wi-Fi, и снятия через него логов со всех одновременно. Это позволит проводить тестирование сразу всех устройств с одного девайса из любой точки офиса. 

Как сделать свою ферму?

“На самом деле рецепт простой”. Решение доступно и инди-разработчикам, и большим компаниям. Мы, например, используем для фермы ПК на базе процессора i7, с 32 ГБ оперативной памяти, SSD на 500 ГБ и жестким диском на 2 ТБ для записи логов, скриншотов и видео. Помимо этого, потребуются версия Ubuntu 20.0.4 и докер, куда устанавливается контейнер с готовым сервером, чтобы перезапустить ферму в случае сбоя. Сделать последнее очень просто, это сможет даже начинающий специалист. Сервер можно развернуть и на менее мощных системах, все зависит от количества устройств и частоты пользования. 

Что касается индивидуальной доработки, ее сможет осуществить любой сотрудник с уровнем подготовки системного администратора. Доработка происходит итерационно, и это непрерывный процесс, но основная часть работы по установке и настройке осуществляется за короткие сроки. В нашем случае изучение материала потребовало 1 месяц, а сам сервер был развернут за 4 рабочих дня.

Каково с этим работать? 

Для пользователя работа с фермой схожа с работой на самих устройствах. Это выглядит как работа в эмуляторе, но только с использованием ресурсов телефона. При этом администратор фермы видит все сессии в реальном времени и может в любой момент посмотреть логи, что существенно экономит время, т.к. причина “вылета” приложения становится известна практически сразу.

Поддерживаются все функции смартфонов, включая различные языки, ввод с клавиатуры, мультитач и жесты. Сами устройства находятся в специальном боксе в непосредственной близости и их можно отслеживать в том числе и физически. 

Не будет ли это “убивать” устройства быстрее?

Безусловно, дополнительная нагрузка создается, в первую очередь из-за подключения в режиме debug bridge, что влияет на аккумулятор. По заявлениям производителей, срок службы устройства в таких условиях может снизиться на 20%. Однако на практике это не играет большой роли, особенно, учитывая скорость, с которой рынок обновляет девайсы — заменять их требуется чаще во избежание отставания от конкурентов, чем по причине выхода из строя устройств. Однако иметь запас запчастей и аккумуляторов все-таки стоит.

Для кого работа с фермой подойдет в первую очередь? Кому из разработчиков присмотреться, а кому не стоит?

Такое решение может не подойти только сильно таргетированным командам, однако большой вопрос, остались ли такие в наше время. У Android большой пул устройств и широкий диапазон параллельно поддерживаемых версий ОС. С iOS ситуация более или менее похожая. Поэтому ферма — гораздо более удобный вариант. Правильно подобранный парк устройств позволит оптимизировать работу под максимально широкий диапазон. Компания сможет более оперативно выявлять ошибки и устранять их, сокращая временные затраты, что особенно важно в индустрии, где игра должна быть в идеальном состоянии до релиза, иначе потерянные на старте игроки могут уже и не вернуться.  

Комментарии (1)


  1. X_Fly
    25.04.2022 14:39

    В статье совершенно нет необходимых технических подробностей.