На просьбу назвать предметы первой необходимости многие бы ответили: еда, крыша над головой, одежда… С одной оговоркой: так было в прошлом веке.

С тех пор у вида Хомо Сапиенс накопились потребности. Нам нужно, чтобы освещение контролировали автоматические датчики, а не просто выключатели, чтобы умные системы следили за состоянием здоровья и автомобильным движением. Список можно продолжить… В общем, мы умеем делать жизнь проще и лучше.

Попробуем выяснить, как весь это интернет вещей работает, прежде чем переходить к тестированию.

IoT тестирование

Что такое интернет вещей (IoT)?

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

Примеры IoT-устройств

#1) Носимые технологии:

Фитнес-браслеты Fitbit и умные часы Apple Watch легко синхронизируются с другими мобильными устройствами.

IoT - часы и браслеты

Так проще собирать сведения о здоровье: частота пульса, активность организма во время сна и пр.

#2) Инфраструктура и разработка

Приложение CitySense в онлайн режиме анализирует данные об освещении, и автоматически включает или выключает фонари. Существуют приложения, которые управляют светофорами или сообщают о доступности парковок.

#3) Здоровье

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

Технологии, которые присутствуют в IoT

  • RFID (радиочастотная идентификация), EPC (электронный код продукта)
  • NFC («коммуникация ближнего поля») обеспечивает двусторонние взаимодействия между устройствами. Эта технология присутствует в смартфонах и служит для бесконтактных транзакций.
  • Bluetooth. Широко применяется в ситуациях, когда достаточно связи ближнего радиуса действия. Чаще всего присутствует в носимых устройствах.
  • Z-Wave. Низкочастотные RF-технологии. Чаще применяются для домашней автоматики, управления освещением и пр.
  • WiFi. Самая популярная сеть для IoT (передача файлов, данных и сообщений).

Тестирование IoT

Рассмотрим пример: медицинская система, которая следит за состоянием здоровья, частотой сердцебиений, содержанием жидкости и отправляет отчеты медработникам. Данные отображаются в системе; доступны архивы. А врачи уже решают, принимать ли пациенту медикаменты, удаленно.

IoT архитектура

Существует несколько подходов для тестирования архитектуры IoT.

#1) Юзабилити:

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

#2) Безопасность IoT:

  • Данные лежат в основе работы всех подключенных устройств. Потому не исключен несанкционированный доступ во время передачи данных. С точки зрения тестирования ПО необходимо проверять, насколько защищены/зашифрованы данные.
  • Если есть UI, нужно проверить, защищен ли он паролем.

#3) Сетевые возможности:

  • Крайне важна возможность подключения к сети и функциональность IoT. Ведь речь идет о системе, которая используется в целях здравоохранения.
  • Проверяются два главных аспекта:
  • Наличие сети, возможности передачи данных (передаются ли задания с одного устройства на другое без каких-либо заминок).
  • Сценарий, когда подключение отсутствует. Независимо от уровня надежности системы, существует вероятность, что статус системы будет «офлайн». Если сеть недоступна, сотрудникам больницы или другой организации необходимо об этом знать (уведомления). Таким образом, они смогут следить за состоянием пациента сами, а не ждать, когда система заработает. С другой стороны, в таких системах обычно присутствует механизм, который сохраняет данные, если система в офлайне. То есть потеря данных исключается.

#4) Эффективность:

  • Необходимо учитывать, насколько решение для сферы здравоохранения применимо в конкретных условиях.
  • В тестировании участвуют от 2 до 10 пациентов, данные передаются на 10-20 устройств.
  • Если вся больница подключается к сети, это уже 180-200 пациентов. То есть фактических данных будет больше, чем тестовых.
  • Ко всему прочему, необходимо протестовать утилиту для мониторинга системы: текущая нагрузка, потребление электроэнергии, температура и пр.

#5) Тестирование совместимости:

  • Этот пункт всегда присутствует в плане по тестированию IoT-системы.
  • Совместимость разных версий операционных систем, типов браузеров и их соответствующих версий, устройств разного поколения, режимов связи [например, Bluetooth 2.0, 3.0] крайне важна для IoT.

#6) Пилотное тестирование:

  • Пилотное тестирование — обязательный пункт тест-плана.
  • Только тесты в лаборатории позволят сделать вывод о том, что система функциональна.
  • При пилотном тестировании число пользователей ограничено. Они совершают манипуляции с приложением  и высказывают свое мнение.
  • Эти комментарии оказываются весьма кстати, позволяют сделать надежное приложение.

#7) Проверка на соответствие:

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

#8) Тестирование обновлений:

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

Сложности тестирования IoT

тестирование IoT

#1) Хард/софт

IoT — это архитектура, в которой тесно переплетаются компоненты ПО и аппаратной части. Важен не только софт, но и хард: сенсоры, шлюзы и пр.

Одного лишь функционального тестирования будет недостаточно, чтобы сертифицировать систему. Все составные компоненты взаимозависимы. IoT намного сложнее, чем более простые системы [только софт или только хард].

#2) Модель взаимодействия устройств

Составные части сети должны взаимодействовать в режиме реального времени или близкого к реальному. Все это становится единым целым — отсюда дополнительные сложности, связанные с IoT (безопасность, обратная совместимость и обновления).

#3) Тестирование данных, поступающих в реальном времени

Получить эти данные крайне сложно. Дело усложняется тем, что система, как в описанном случае, может относиться к сфере здравоохранения.

#4) UI

Сеть IoT обычно состоит из разных устройств, которые управляются разными платформами [iOS, Android, Windows, linux]. Тестирование возможно только на некоторых устройствах, поскольку тестировать на всех возможных устройствах практически невозможно.

#5) Доступность сети

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

Инструменты тестирования IoT

IoT и софт

Существует множество инструментов, которые применяются в тестировании IoT-систем.

Их классифицируют в зависимости от предназначения:

#1) Софт:

  • Wireshark: инструмент с открытым исходным кодом. Используется для мониторинга трафика в интерфейсе, адреса источника/заданного хоста и пр.
  • Tcpdump: этот инструмент выполняет похожую работу. У утилиты нет GUI, ее интерфейс — командная строка. Она дает возможность пользователю высвечивать TCP/IP и другие пакеты, которые передаются по сети.

#2) Хард:

  • JTAG Dongle: инструмент, аналогичный отладчикам в приложениях для ПК. Позволяет найти дефекты в коде целевой платформы и показывает изменения шаг за шагом.
  • Digital Storage Oscilloscope: проверяет различные события с помощью временных отметок, перебои с электропитанием, целостность сигнала.
  • Software Defined Radio: эмулирует приемник и передатчик для различных беспроводных шлюзов.

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

Итог

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

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

P.S. Стоит опробовать формат TAAS («тесты с точки зрения пользователя»), а не просто выполнять формальные требования.