Как я могу эффективно протестировать многопоточный, многопроцессорный код для нескольких устройств на Android? - PullRequest
1 голос
/ 26 апреля 2019

Я написал библиотеку беспроводной связи Android, которая по своей природе является многопоточной, многопроцессорной и (конечно) многопользовательской.

Существуют ли эффективные библиотеки / каркасы для тестирования кодатакого рода в мире Android?

  1. Модульное тестирование многопоточного кода сложно по очевидным причинам.Модульные тесты плохо работают с потоками.(Например) Как мне выполнить модульное тестирование функции, которая должна ожидать широковещательную рассылку?
  2. Большинство ошибок, по-видимому, ограничены "реальным миром".Библиотека требует двух устройств, чтобы общаться друг с другом.Если я высмеиваю идеальную последовательность ответов, это похоже на обман.Ничто не идет не так, как в реальном мире.Кроме того, процесс макетирования является сложным и отнимает много времени - я пишу гораздо больше кодов, чем в реальной библиотеке.
  3. Все платформы тестирования на Android, Инструментированные или другие, предназначены для одного устройства одновременно.Я не могу запустить одновременные, взаимозависимые тесты на двух устройствах одновременно, могу ли я?

У меня сейчас только системный тест, и это в основном Ad hoc.Это обычное приложение с простым скриптом контроллера, которое отправляет приложение на два устройства, назначает их роли, выполняет высокоуровневый тест функциональности и опрашивает файл журнала на обоих устройствах.Если время ожидания истекло до записи файлов журнала, скрипт возвращает код ошибки.Если журналы записаны, последовательность связи проверяется на правильность.Этот тест, теоретически, может быть добавлен к CI, но его нужно будет запускать с локальной тестовой машины с физически подключенными устройствами.Я могу сделать этот тест более надежным со временем, но сейчас он очень хрупкий.Опять же, я сделал это для этого конкретного проекта.

Я не уверен в своем подходе. Существуют ли какие-либо инструменты в экосистеме Android, которые могут помочь мне протестировать проект такого рода?Любой совет или толчок в правильном направлении будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...