Пять уровней проверки одной функции
Например, наличие класса SOS ничего не говорит о доставке. Нужны проверки кодека, очереди, физического радио, применения на втором телефоне и восстановления после обрыва.
Формат события, размеры полей, совместимость версий и допустимые состояния.
Android, прошивка и PC-инструменты проверяются отдельно на граничных данных.
Одинаковый пакет кодируется и разбирается всеми участниками системы без расхождения.
Реальные телефоны и ПМ-1 передают событие через Bluetooth и LoRa.
Тысячи автоматических сценариев
Проверяются очереди, миграции базы, кодеки, маршруты, защита, GPS-фильтры, UI-политики и совместимость поколений прошивки.
Единый лимит кадра
Android, прошивка и Windows-инструменты используют один потолок 128 байт. Изменение любого формата сразу проходит budget-тесты.
Версионные профили
Каждое поколение прошивки связано с точным набором возможностей. Неполный или неизвестный профиль отклоняется.
Машиночитаемые результаты
Стендовые сценарии сохраняют версии, идентичности узлов, счётчики, задержки и итоговые verdict.
Радио проверяется на реальном времени E22
Теоретической скорости UART недостаточно. Стенд измеряет момент записи кадра и возврат линии AUX в готовое состояние.
Airtime sweep
Кадры разного размера проходят через обычный защищённый путь. Для каждого размера сравнивается расчётное и измеренное TX-to-ready время.
Selected relay
Проверяются ранги primary, backup и emergency, задержки слотов и отмена передачи после принятого дубликата.
Direct routing
Адресный пакет идёт через известный путь, а при его изменении запускается ограниченный fallback и обновление кэша.
Приоритеты
Телеметрия нагружает очередь одновременно с приказами, подтверждениями и SOS. Важные события должны пройти первыми.
Длинная серия
Стенд отправляет последовательности пакетов, следит за CRC, таймаутами, очередями и восстановлением после потери связи.
Позиционная группа
Три узла выбирают лидера и резерв, передают агрегированное представление группы и перестраиваются при выпадении участника.
На рабочем профиле 9,6 кбит/с 64-байтный кадр занимал около 94 мс до готовности E22, 119-байтный около 152 мс. Эти значения используются планировщиком вместо произвольной задержки.
Android проверяется в условиях реального фонового режима
Разрешения, включение Bluetooth и геолокации, поиск ПМ-1, привязка и вход в комнату проходят как один пользовательский сценарий.
Проверяются отличия BLE-стека, ограничения фоновой работы, повторное подключение и поведение после выключения экрана.
Перезапуск приложения, обновление схемы и аварийное завершение не должны терять комнату, журнал и очередь.
Тестируются старые точки, отсутствие accuracy, скачки, круговой переход азимута, PDR и предупреждения о помехах.
Позиции, объекты, маршруты и зоны проверяются без интернета, включая устаревание и удаление по сроку жизни.
SOS, смена состояния и критичные подтверждения защищены от случайного касания и сохраняют одинаковые названия по всему потоку.
Сбой является частью сценария
Связь в лесу не бывает идеальной. Поэтому тесты специально создают обрывы, дубликаты и перезапуски.
| Ситуация | Ожидаемое поведение | Что контролируется |
|---|---|---|
| Bluetooth пропал | Событие остаётся в Android-очереди и уходит после подключения | Нет потери и двойного применения |
| Адресат временно недоступен | Retry работает в пределах QoS и срока жизни события | Очередь не растёт бесконечно |
| Пришёл дубликат | Пакет подтверждается, но событие второй раз не создаётся | Устойчивый event ID и anti-replay |
| ПМ-1 перезапустился | Профиль, комната и допустимое транспортное состояние восстанавливаются | Целостность persistent storage |
| Обновление оборвалось | Сессия продолжается либо безопасно отменяется | Активный образ остаётся загрузочным |
| GPS дал скачок | Координата удерживается и не распространяется как реальная | История, движение и точность |
| Основной relay не ответил | Передачу выполняет резервный кандидат | Задержка, отмена и отсутствие relay storm |
Нагрузка моделируется до выхода в эфир
Физический стенд нужен для радио, но не обязан вручную перебирать миллионы комбинаций соседей. Для этого используются детерминированные модели.
50-узловая модель selected relay
Симуляция перестраивает локальные списки соседей и измеряет, сколько передач требуется до первого одиночного relay. Это позволяет ловить усиление трафика до прошивки модулей.
Модель очередей
Потоки позиций, приказов и SOS подаются одновременно. Проверяется вытеснение заменяемой телеметрии, retry budget и конечный отказ.
Модель быстро исследует редкие комбинации, а физический стенд учитывает E22, AUX, реальный Bluetooth, питание и радиоколлизии. Один тип теста не заменяет другой.
Перед выпуском проверяется весь комплект
Android release
Собирается единственный production-вариант, проверяются подпись, shrinker, миграции и запуск на целевых телефонах.
Firmware release
Бинарник связан с моделью, версией, capability profile и подписанным манифестом.
Заводская проверка
TeamCompassFactoryFlasher проверяет плату, E22, защищённое состояние, идентичность и устанавливаемый образ.
Совместный прогон
Android, ПМ-1 и Windows-инструменты проходят одну матрицу совместимости и полный обмен событиями.
