![Шесть причин, почему бизнесу нужно свое мини-приложение в Телеграме](/upload/resize_cache/iblock/d0e/kh1yp9t0dsxr8xp682zjmx3ug23vl7dj/390_260_1619711fa078991f0a23d032687646b21/Frame-1948756451.png)
Мы разработали сервис для организации и проведения онлайн-тестов и экзаменов уровня мини-MBA у топ-менеджмента в крупных банках. Рассказываем, как команда Doubletapp помогла не только получить работающее приложение и ликвидный продукт — библиотеку прокторинга, но и существенно снизить затраты благодаря тестированию.
Изначально заказчик сформулировал задачу так: у нас есть мобильное приложение, приведите его в рабочий вид. Одновременно клиент поручил нам написать библиотеку прокторинга* под каждую мобильную платформу и на ее основе разработать новое приложение — вначале как MVP, чтобы посмотреть библиотеку в деле. Библиотека предназначена к продаже как отдельный продукт, в ней должна быть уже простроена бизнес-логика, чтобы можно было лишь спроектировать визуальную часть и получить готовое работающее приложение.
Запрос по функционалу библиотеки: записи видео с фронтальной камеры и экрана чанками, а также последующая загрузка этих чанков на сервер; управление состоянием сессии, отправка всех запросов, связанных с началом и закрытием сессии, пингами, месседжами, фотографиями, комплитом и прочим.
*Библиотека прокторинга — инструмент, обеспечивающий одновременную запись с экрана мобильного устройства, его фронтальной камеры и звука с микрофона. Запись ведется непрерывно, а уже готовые отрезки (чанки) отправляются на сервер. После окончания экзамена и обработки на сервере получается цельная запись.
Траектория проекта: в первую очередь разработчики Doubletapp поставили на ноги приложение клиента и зарелизили обновленную версию. Затем началась работа над библиотекой прокторинга и MVP для проверки возможностей библиотеки.
Приложение из MVP быстро переросло в отдельный продукт: сейчас в нем ведется запись видео с обеих камер устройства и передача его на сервер заказчика, контролируется течение сессии и загрузка всего контента. В последней версии добавили функционал для распознавания лица с помощью инструментов ML: приложение отслеживает, есть ли лицо в камере, и если нет, то блюрит экран. Проработали интерфейс — он стал интуитивно понятнее и удобнее для студента, находящегося в экзаменационном стрессе.
Про разработку
Мы работали над приложением для прокторинга: наблюдатель (проктор) непрерывно контролирует, как студент выполняет тест, при этом на устройстве ведется запись с экрана и запись с фронтальной камеры.
1. Из-за особенностей Android регулировать частоту кадров пришлось с помощью решения на OpenGL, 30-секундные файлы перед отправкой сжимали на устройстве и последовательно отправляли на бэкенд для дальнейшей обработки.
2. Студент во время прохождения теста не имеет права открывать другие приложения (понятно же почему, да?). Чтобы отправлять чанки, написали собственный скрин-рекордер для iOS, потому что системный не работал с режимом одного приложения.
3. В какой-то момент заказчик пришел с требованием разработать конференц-связь типа WebRTC. Мы планировали отдавать стриминг с девайса (с камеры, с экрана) на бэкенд и там обрабатывать, чтобы проктор подключался к бэкенду и контролировал процесс. Но заказчик настаивал — обработка чанков должна вестись именно на девайсе. А приложение уже довольно тяжелое.
Мы столкнулись с тем, что у нас запись работает с двух каналов, у нас сжатие параллельно идет, у нас отправка всего этого на бэкенд, плюс еще нужно учесть медленный интернет (а требование было, чтобы мы поддерживали скорость до одного мегабита), и поверх всего этого еще прикрутить WebRTC — стриминг и с веб-камеры, и с экрана, и плюс еще аудио, и чтобы это все как-то вместе работало.
И мы написали ядро под Android для обработки этих видеопотоков на OpenGL, чтобы у нас это все в одном месте один раз обрабатывалось, чтобы мы сами управляли частотой кадров и так далее, и нам удалось в два — в два с половиной раза снизить нагрузку на устройство.
Про тестирование
Работа тестировщиков — не тушить пожары, а предотвращать их. Вложимся в тестирование на всех этапах — сэкономим средства заказчика и ресурсы всей команды.
QA-инженеры работали по четырем направлениям: обеспечивали качество на всем протяжении работ, снижали затраты, укрепляли доверие к продукту, а также улучшали взаимодействие с пользователями.
Чтобы обеспечить качество, контролировали соответствие ТЗ требованиям, предъявляемым к ПО, пересмотрели и отформатировали внутренние процессы, которые могут повлиять на скорость работ и качество.
Для снижения затрат при тестировании ТЗ уделили много внимания четкости и полноте заявленных требований, согласованию их на старте работ, протестировали дизайн-макеты. Тестировали сначала библиотеку прокторинга (реализацию записи экрана, фронтальной камеры и микрофона с последующим сжатием и отправкой данных на сервер), а только потом уже UI, т.е. более-менее финальный продукт.
Команда тестирования в этом кейсе прибегла к интересному подходу — специалисты решили протестировать отдельно внутреннюю часть приложения и найти проблемы на ранних этапах — в самом коде. Для тестирования разработчики собрали приложение в виде экрана буквально с двумя кнопками. В этой предельно простой версии QA-инженеры «протыкали» на настоящих устройствах основные функции библиотеки и сэкономили ресурсы команды и заказчика.
Укрепляли доверие к продукту — тут все понятно. Тестировщики — это умный щит на страже интересов заказчика и пользователей. Сработали хорошо — продукт качественный, функционирует как задумано. Доверять можно.
Что касается взаимодействия с пользователями, тут ситуация двоякая. С одной стороны, приложение переработали, провели юзабилити-тестирование, убедились что студентам понятен интерфейс и можно без лишнего стресса сдавать свои экзамены. А с другой стороны — контроль над процессом стал строже и качественнее, некоторые хитрецы расстроились. Так готовьтесь лучше!
Дополнительно по теме читайте статью Дмитрия Крылаткова о тестировании продукта на безопасность
Команда Doubletapp вдохновенно поработала, заказчик получил не только работающее приложение вместо своего неудачного, но и отдельный ликвидный продукт — библиотеку прокторинга.
Сегодня сдача экзамена — это онлайн-трансляция, то есть видео не просто отправляется на сервер для последующей проверки, а идет синхронная сессия, где проктор наблюдает и контролирует вживую, как проходит экзамен, что происходит на экране студента, его ли лицо находится перед камерой.
Специалисты Doubletapp закрыли потребность заказчика в качественных специалистах и продолжают поддерживать приложение и улучшать его по запросу заказчика.
Для пользователей в новой версии приложения мы оставили тот же таргет, но при этом работа стала быстрее и стабильнее, интерфейс — удобнее и понятнее.
Больше технических деталей и подробности работы над продуктом читайте в портфолио Doubletapp на сайте.
Есть вопросы или нужна консультация – свяжитесь с нами.