Зачем в команде мобильной разработки появился сейф под управлением Windows 10

в 8:01, , рубрики: C#, DIY, open source, windows development, Блог компании Яндекс.Деньги, разработка под windows, Тестирование мобильных приложений, тестирование приложений, метки:

image alt text

Привет! Я хочу рассказать, как мы сделали автоматическую выдачу 70 мобильных тестовых устройств, и перестали задаваться вопросом «у кого тот розовый iPhone 6».

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

Небольшая вводная: все устройства закреплены за тестировщиками из команды мобильной разработки. Сейчас у нас около 70 девайсов, их количество растет пропорционально активности производителей.

Автоматический учет и ничего личного

Все тестовые устройства сейчас располагаются на DIY-стойках в шкафу. У каждого смартфона или планшета свое пронумерованное место и свой кабель для зарядки. Для учета используется Windows 10 приложение на планшете с подключенным сканером пропусков.

Для того, чтобы взять/отдать девайс нужно:

  • приложить бейджик к считывателю
    image alt text

  • отсканировать QR-код на нужных устройствах
    image alt text

После этого гаджет закрепляется за сотрудником или открепляется от него в случае сдачи.

Удобный поиск нужного смартфона — как бонус.

image alt text

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

image alt text

Последняя версия стенда.

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

Давным-давно, в далекой-далекой галактике…

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

image alt text
Фотореконструкция былых дней.

Плюс: учет не требовал каких-либо телодвижений со стороны мобильной разработки.

Минус: неудобно смотреть, сколько устройств на руках у коллег, не забыли ли нам что-то вернуть.

Со временем устройств и сотрудников становилось все больше, и привычная тетрадь уже не могла достойно ответить на вызовы времени и потребности тестировщиков. Поэтому её оцифровали и перенесли на страницу в Confluence, где наступила настоящая диктатура тестерского пролетариата. Хочешь взять вот этот смартфон — сначала найди свободного тестировщика, который все оформит. Кроме того, у каждого тестировщика всегда «Release is coming!», а тут еще отвлекают.

Но даже если найти человека удавалось, квест не заканчивался. Часто оказывалось, что нужный гаджет разряжен или уже занят. А вот если и тут повезло, тестировщик добавлял в Confluence-страничку ФИО сотрудника напротив взятых устройств.

Плюс: можно легко понять, сколько устройств используются коллегами из других отделов.

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

Но мы же динамически развивающаяся компания, поэтому стенд с гаджетами тоже получил динамическое развитие.

Начинаем стройку

Какие вопросы мы хотели решить:

  • все устройства должны быть постоянно заряженными, а сама зарядка не должна занимать больше пары часов;

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

  • наличиеотсутствие устройства должно учитываться автоматически.

Сразу отмечу, что описываемое в статье решение подразумевает полное доверие сотруднику. То есть мы не ставили перед собой задачу как-то дополнительно защититься от кражи или подмены.

Проблема #1 — зарядка

Обычные USB-хабы и концентраторы для этой цели не подходят, ведь у них только 1-2 порта могут более-менее нормально заряжать устройства. А отдельная вилка для каждого устройства — некрасиво и неудобно.

Но тут я очень кстати нашел подходящий агрегат производства Anker:

image alt text

Этот черный брусок позволяет одновременно заряжать до десяти устройств с мощностью ~1.2A каждый, а форм-фактор идеально подходит для расположения таких штуковин на полках. Например, на одной из них у нас заряжается 30 телефонов.

Проблема #2 — всему свое место

Для удобной расстановки мы заказали железный шкаф с дверьми-жалюзи «ДиКом **КД-144**»: он закрывается на замок, двери-жалюзи никому не мешают в открытом состоянии, а небольшие зазоры между полками и стенками позволяют без проблем провести провода для зарядки. Остается только просверлить небольшое отверстие в задней стенке для удлинителя.

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

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

Совет: лучше покупать пеноплекс шириной 3 см, тогда он подойдет как для телефонов, так и для планшетов.

Что в итоге получилось:

image alt text
Аккуратные ряды смартфонов, каждый на зарядке, нет клубка проводов.

image alt text

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

image alt text
Заказать их проще всего на всем известно й китайской торговой площадке.

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

Проблема #3, организационно-учетная

Эту задачу мы разделили на три подзадачи:

  1. Идентификация сотрудника с использованием его бейджа. Для этого купили считыватель для пропусков: ST-CE01EM. Принцип работы считывателя прост: подключаем его по USB к ноутбуку (также считыватель работает и с Android-устройствами через OTG-переходник), открываем блокнот, прикладываем бейджик, и номер пропуска вводится посимвольно. Определить пользователя мы можем, внеся его данные в БД или через API.

  2. Идентификация устройства. Для пилотной версии мы выбрали QR-коды из-за быстроты реализации. Достаточно распечатать и наклеить QR-код с идентификатором устройства на каждый девайс.
    Но у QR-кодов в процессе использования выявилось несколько недостатков. В нашем приложении пользователь считывает код с помощью фронтальной камеры планшета и может не заметить сообщения, что устройство добавлено в "корзину", если перекроет экран рукой. Еще наш шкаф с мобилками стоит около окна, поэтому по утрам бывает сложно сканировать QR-коды, если предварительно не задернуть жалюзи. Поэтому сейчас мы переезжаем с QR-кодов на RFID-метки с клейкой основой — вместо сканирования кода достаточно будет приложить девайс к сканеру пропусков.

  3. Фиксация изменений с помощью приложения для Windows 10 на С#.

UWP-приложение запускается на телефонах, планшетах и ПК с Windows 10. Кстати, про разработку UWP-приложений под Windows 10 думаем сделать отдельный пост. Если вам эта тема тоже интересна — пишите в комментариях.

Как перестать бояться и начать пользоваться

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

В первую очередь, вам нужно сделать форк на GitHub и собрать проект в Visual Studio 2017. Потом нужно найти PC для запуска приложения и сканер пропусков, а также заполнить базу сотрудников.

Необходимое оборудование

  • считыватель для пропусков — например, ST-CE010EM. Главное, чтобы устройство имитировало набор клавиш на клавиатуре. Для проверки подключите считыватель к компьютеру, откройте блокнот и приложите пропуск к считывателю. Номер пропуска должен появиться посимвольно.
    Приложение по умолчанию ожидает 10-символьную длину пропуска: 000+НОМЕР_ПРОПУСКА, например 0001234567. Если при сканировании пропуска у вас не проставляются нули вначале, то считыватель можно перепрограммировать или отредактировать параметры номера бейджика в MainViewModel.cs.

  • PC с Windows 10. Удобнее использовать планшет или устройство все-в-одном с тачскрином.

Наполнение базы данных

База приложения в формате sqlite хранится в корне проекта TestStand.

Заполняем Devices

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

  • Id — номер устройства (QR код содержит как раз id устройства);

  • Model — модель гаджета;

  • Family — семейство устройства: iOS/Android/Windows;

  • OsVersion — версия операционной системы;

  • Type — тип устройства (Phone/Tablet/Wearable);

  • ScreenSize — размер экрана;

  • ScreenResolution — разрешение экрана;

  • IsContactlessPaymentsSupported — поддерживается ли на телефоне бесконтактные платежи (0/1);

  • PhoneNumber — номер телефона, если в нем есть симкарта.

Заполняем Employee

Если у вас есть возможность получать данные по пропуску через API, то можете написать для приложения расширение (extension). О расширениях уже подробно написал в своей статье Вадим Новосельцев, за что ему огромное спасибо!

В нашем приложении работа с расширениями ведется через ExtensionsService.cs. Само расширение используется в EmployeeService.cs (название по умолчанию: com.extensions.yamoney.teststand):

  • BadgeId — номер бейджика;

  • FirstName — ФИО сотрудника;

  • Login — логин сотрудника, по нему отправляется почта (login@domen.com). Отправка почты настраивается в EmailNotificationService.cs.

Но если у вас такой возможности нет, то можно заполнить таблицу вручную.

Печатаем QR-коды

В QR-коде должен быть записан ID устройства из таблицы Devices. Сформировать сам код можно онлайн, либо подобрать одну из множества утилит. Наклеиваем коды на гаджеты — и можно пользоваться.

image alt text

И вот прошел месяц

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

Главное преимущество в том, что мы теперь не тратим время на учет самих устройств, а на основании полученной статистики можем:

  1. Видеть нагрузку на тестовый стенд. Мы понимаем какие устройства чаще используются в других командах: с какими ОС и диагоналями экранов.

  2. Поддерживать актуальный модельный ряд тестовых устройств. Из п.1 у нас появляется обоснование для закупки новых устройств.

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

В голове масса планов по улучшению стенда: например, сделать физическую блокировку устройств или звуковое оповещение взятия устройства без авторизации. Еще хочется опробовать новую технологию сканирования сетчатки глаза в новых Surface, как альтернативу пропускам.

Если у вас есть свои мысли и ноу-хау по организации стенда выдачи устройств или другого инвентаря — обязательно расскажите в комментариях.

Автор: Яндекс.Деньги

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js