# Тестирование интернета вещей (IoT - Internet of Things)

**Интернет вещей** (Internet of Things, IoT) - это множество физических объектов, подключенных к интернету и обменивающихся данными. Концепция IoT может существенно улучшить многие сферы нашей жизни и помочь нам в создании более удобного, умного и безопасного мира. Примеры Интернета вещей варьируются от носимых вещей, таких как умные часы, до умного дома, который умеет, например, контролировать и автоматически менять степень освещения и отопления. Также ярким примером служит так называемая концепция умного предприятия (Smart Factory), которое контролирует промышленное оборудование и ищет проблемные места, а затем перестраивается так, чтобы не допустить поломок. Интернет вещей занимает важное место в процессе цифровой трансформации в компаниях. Прогнозируется, что к 2030 году количество подключенных к сети устройств вырастет примерно до 24 млрд с годовой выручкой до 1,5 трлн долларов.

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

* **Конечные устройства**: это объекты, которые фактически образуют «вещи» (Things) в Интернете вещей. Они играют роль интерфейса между реальным и цифровым мирами и принимают разные размеры, формы и уровни технологической сложности в зависимости от задачи, которую они выполняют в рамках конкретного развертывания IoT. Будь то микрофоны размером с булавочную головку или внушительного размера машины, практически любой материальный объект можно превратить в подключенное устройство путем добавления необходимых элементов (датчиков или приводов вместе с соответствующим программным обеспечением);
* **Программное обеспечение**: это то, благодаря чему подключенные устройства можно назвать «умными». Программное обеспечение отвечает за связь с облаком, сбор данных, интеграцию устройств и за анализ данных в реальном времени. Также оно предоставляет возможности для визуализации данных и взаимодействия с системой IoT;
* **Коммуникации**: уровень коммуникации включает в себя как решения для физического подключения (сотовая и спутниковая связь, LAN), так и специальные протоколы, используемые в различных средах IoT (ZigBee, Thread, Z-Wave, MQTT, LwM2M). Выбор подходящего коммуникационного решения - одна из жизненно важных частей при построении каждой IoT-системы. Выбранная технология будет определять не только способы отправки и получения данных из облака, но способы связи со сторонними устройствами;
* **Платформа**: устройства способны «ощущать», что происходит вокруг и сообщать об этом пользователю через определенный канал связи. IoT-платформа - это место, где все эти данные собираются, анализируются и передаются пользователю в удобной форме. Платформы могут быть установлены локально или в облаке. Выбор платформы зависит от требований конкретного проекта IoT и многих факторов: архитектура и стек технологий, надежность, параметры настройки, используемые протоколы, аппаратная независимость, безопасность, эффективность, стоимость.

**Виды тестирования IoT**

![https://miro.medium.com/max/3000/0\*WxlU94XowYPqyFqT](https://miro.medium.com/max/3000/0*WxlU94XowYPqyFqT)

На примере медицинского устройства:

**Usability**:

* Нам нужно убедиться в удобстве использования каждого из устройств, используемых здесь;
* Используемое устройство отслеживания медицинского обслуживания должно быть достаточно портативным, чтобы его можно было перемещать в различные сегменты медицинского учреждения;
* Оборудование должно быть достаточно умным, чтобы рассылать не только уведомления, но и сообщения об ошибках, предупреждения и т. д.;
* Система должна иметь возможность регистрировать все события, чтобы обеспечить ясность для конечных пользователей. Если это невозможно, система также должна отправить их в базу данных для хранения;
* Уведомления должны отображаться, а управление отображением должно выполняться должным образом на устройствах;
* Необходимо тщательно протестировать удобство использования с точки зрения отображения данных, обработки данных, отправки рабочих заданий с устройств.

**Security**:

* IoT ориентирован на данные, когда все подключенные устройства/системы работают на основе доступных данных;
* Когда дело доходит до потока данных между устройствами, всегда есть шанс, что данные могут быть доступны или прочитаны при передаче;
* С точки зрения тестирования нам нужно проверить, защищены ли/зашифрованы ли данные при передаче с одного устройства на другое;
* Везде, где есть пользовательский интерфейс, мы должны убедиться, что он защищен паролем.

**Connectivity**:

* Поскольку это решение для здравоохранения, подключение играет жизненно важную роль;
* Система должна быть доступна все время и должна иметь беспрепятственную связь с заинтересованными сторонами;
* Что касается подключения, очень важно проверить две вещи:
  * Подключение, передача данных, получение рабочих заданий с устройств должны быть бесперебойными, когда соединение установлено и работает;
  * Другим условием является сценарий отсутствия соединения. Неважно, насколько надежны система и сеть, есть вероятность, что система отключится. Мы, как тестировщики, должны протестировать и офлайн-условия. Когда система недоступна в сети, должно быть предупреждение, которое может подсказать врачам, чтобы они могли начать отслеживать состояние здоровья вручную, независимо от системы, пока она не будет запущена. С другой стороны, в системе должен быть механизм, который мог бы хранить в ней все данные в период автономной работы. Как только система подключается к сети, все эти данные должны распространяться. Потери данных не должно быть ни при каких условиях.

**Performance**:

* Когда мы говорим о системе для области здравоохранения, нам нужно убедиться, что система достаточно масштабируема для всей больницы;
* Когда проводится тестирование, оно проводится для 2-10 пациентов одновременно, и данные распространяются на 10-20 устройств;
* Когда вся больница подключена и к системе подключено 180-200 пациентов, распространяемые данные намного больше, чем тестируемые данные;
* Как тестировщики, мы должны убедиться, что система работает так же, даже если добавленные данные множатся;
* Мы также должны протестировать утилиту мониторинга, чтобы отображать использование системы, энергопотребление, температуру и т. д.

**Compatibility**:

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

**Pilot Testing**:

* Что касается IoT, пилотное тестирование является обязательным.
* Только тестирование в лаборатории гарантирует, что продукт/система работает нормально. Но это может иметь неприятные последствия при воздействии условий/шагов/сценариев в реальном времени;
* Во время пилотного тестирования система подвергается воздействию ограниченного числа пользователей в реальных условиях. Они используют приложение и оставляют отзывы о системе;
* Эти комментарии пригодятся, чтобы сделать приложение достаточно надежным для производственного развертывания.

**Regulatory Testing**:

* Эта система здравоохранения должна пройти через несколько контрольных точек регулирования / соответствия;
* Подумайте о сценарии, в котором продукт проходит все этапы тестирования, но не проходит окончательный контрольный список соответствия;
* Лучше всего получить нормативные требования в начале самого цикла разработки. То же самое должно быть включено в контрольный список тестирования;
* Делая это, мы также удостоверяемся, что продукт сертифицирован по контрольному списку регулирующих органов.

**Upgrade testing**:

* Интернет вещей представляет собой комбинацию нескольких протоколов, устройств, операционных систем, микропрограмм, оборудования, сетевых уровней и т. д.;
* Когда выполняется обновление, будь то для системы или для любого из задействованных элементов, как указано выше, должно быть проведено тщательное регрессионное тестирование/должна быть принята стратегия, чтобы преодолеть проблемы, связанные с обновлением.

Источники:

* [Что такое IoT и что о нем следует знать](https://habr.com/ru/company/otus/blog/549550/)
* [Internet Of Things (IoT) Testing: Challenges, Tools And Testing Approach](https://www.softwaretestinghelp.com/internet-of-things-iot-testing/)

Доп. материал:

* IoT там, где вы не ждали. Разработка и тестирование [часть 1](https://habr.com/ru/company/jugru/blog/501922/), [2](https://habr.com/ru/company/jugru/blog/502898/), [3](https://habr.com/ru/company/jugru/blog/503064/)
* [IoT Testing Strategy](https://medium.com/globant/iot-testing-strategy-80e3112c46de)
* [Подборка багов в IoT: теперь вся наша жизнь может быть ошибкой](https://habr.com/ru/company/jugru/blog/649789/)
* [ИНТЕРНЕТ ВЕЩЕЙ - это про что? / Умные дома, EDGE-технологии и микроконтроллеры/ Кирилл Овчинников](https://www.youtube.com/watch?v=NpYB_L4Br0Y)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://vladislaveremeev.gitbook.io/qa_bible/testirovanie-v-raznykh-sferakh-oblastyakh-testing-different-domains/testirovanie-interneta-veshei-iot-internet-of-things.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
