28 февраля 2024

Блог

Дебаг-меню: как мы создали решение, которое позволяет быстро тестировать мобильные приложения 

Скорость поставки функций пользователям – ключевой показатель эффективной разработки. Чем меньше time-to-market, тем выше конкурентное преимущество. На этот показатель влияет не только скорость разработки, но и скорость тестирования. Рассказываем, как нам удалось оптимизировать этот процесс с помощью всего одной встроенной консоли.

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

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

Photo 2024 02 08 09 17 29

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

Debug-меню – консоль, которая открывает доступ к внутренним настройкам приложения и позволяет быстро сформировать нужное состояние для тестирования.

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

Теперь подробнее рассмотрим возможности, которые дает debug-меню на примере нашей собственной разработки. Для нас особенно актуальными были несколько функций:

  • Переключение окружения.

В процессе разработки мы используем несколько окружений – тестовое, для подготовки к релизу, prod. Чтобы не плодить разное количество версий приложения, мы предусмотрели возможность переключения окружения в debug-меню. Теперь тестировщик может выбрать нужное окружение в консоли, смартфон перезапустится, и можно начать тестировать. 

  • Переключение фиче-флагов.

В другой статье мы уже рассказывали о нашем портале Feature Flags. Если коротко, то в нашем случае управление контентом и фичами осуществляется централизовано через портал Feature Flags. Соответственно, в приложение встроены SDK-модули, которые скачивают фиче-флаги и применяют для закрытия или открытия функционала в приложении. При этом иногда тестировщику необходимо получить определенное состояние фиче-флагов. Например, включить фичу на каком-то конкретном окружении. Чтобы настроить это состояние, можно пойти двумя путями. Первый: пойти на сервер фиче-флагов, через него менять настройку, заранее предупредив, чтобы никто ничего не трогал. Либо есть более простой вариант – в нашем debug-меню мы предусмотрели страничку для динамической настройки фиче-флагов. 

  • Быстрая авторизация.

Для тестирования сценариев используются разные пользователи: с полисом или без, с программой лояльности и т. д. С debug-меню не нужно каждый раз вводить пользовательские данные. Из специального хранилища приложение достает авторизационные данные тестового пользователя, и авторизация происходит автоматически. 

  • Переходы на определенные экраны.

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

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

  • Отображение информации о сборке.

Тестировщик должен быть в курсе, с какой версией он работает, поэтому возможность посмотреть номер версии сборки, дату сборки и другие фрагменты метаданных может быть полезно.

  • Отладка сетевых событий.

Нарушение обмена сообщениями между сервером и клиентом могут принести массу проблем. Поиск проблемы и отладка могут занять много времени. Но отображение сетевых запросов в удобном формате помогут быстро найти корень проблемы.

  • Отображение логов. 

Консоль собирает внутренние логи, которые при желании можно посмотреть в любой момент.

  • Навигация на системные настройки.

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

Как мы работаем с Debug-меню?

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

В планах сделать решение более оптимальным. Мы хотим сделать debug-меню в виде SDK – набора инструментов с популярными универсальными функциями, а также заложить возможность под расширение. Например, добавление функций, специфичных для конкретного приложения.

Стоит ли внедрять Debug-меню?

Чтобы самому ответить на этот вопрос, достаточно посчитать, сколько времени уходит на выполнение рутинных операций: сборка и установка версий под каждое окружение, эмуляцию сложного случая, отправку логов и т. д.

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

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

А еще мы писали про автоматизацию тестирования UI мобильных приложений. Подробнее про эту тему можно прочитать тут