2014年11月12日 设备管理

物联网自动测试 - 使用模拟

由雅各布Engblom

Jakob-engblom-Intro-Picture

开发和测试物联网应用和系统是一个巨大的挑战,因为这些系统很简单大的- 它们包含很多单位,他们需要大空间。而且更大的东西是,将它难以将其进入软件开发实验室进行测试。开发在一百或一千个低功耗传感器节点上运行的软件时,您几乎如何在日常工作流程中测试该软件?模拟系统是一个很好的答案。

目前正在建设的物联网系统通常遵循这个模板:

iot-1

有一个由数百个组成的无线网状网络传感器节点,连接到一个或多个强大网关节点(可以通过风河软件)连接到互联网,以及彼此之间-冗余往往是必要的,以获得一个可靠的系统.网关保护无线网络不受外界干扰,并从传感器节点收集数据,将数据转发给服务器进行处理和存储。通常也有控制信息从网关进入无线网络。

如何在物理世界中管理这样一个系统的实验和测试设置?您希望将无线节点分散在一大片区域内,这样就不是所有节点都能相互联系,这就需要使用整个建筑或校园作为“实验室”。建立和维护这样一个网络需要大量的工作,人工成本很快就超过了节点本身的成本。在办公大楼的家具、天花板和墙壁上安装小节点并不一定会受到同事和其他开发团队的欢迎,而且很容易发生清洁或移动其他设备或家具的事故。

当我是博士生时,使用网状网络的研究小组对此问题有一个巧妙的解决方案。他们配备了他们用免费笔记本电脑教学的学生(然后是那么罕见),运行他们的实验网格网络软件堆栈。通过这种方式,他们有很多节点遍布校园,提供了一个很好的测试设置。这不是今天在专业行业中工作的解决方案。但是,模拟是。

在一个模拟器,建立一个大型网络真的很容易.您只需编写一个程序来在所需的虚拟空间中虚拟部署和分散节点,然后对节点之间的无线可达性进行建模(下面将详细介绍)。无需手动处理和维护数百个物理项,只需管理一个脚本。模拟系统通常包含无线节点和网关(因为它们也是无线网状网络的一部分),有时还包含服务器或指挥中心。然而,通常更有意义的做法是将服务器留在现实世界中,然后使用Simics Real-World网络.最终的Simics系统设置如下所示:

iot-2

注意,网状网络中的每个传感器节点都是完全模拟的节点,就像网关一样。Simics模拟硬件,包括处理器、内存、计时器、led和无线无线电。通常,有一个串行端口从无线单元连接到传感器,接收要通过网络传递的数据。模拟硬件运行真实的嵌入式操作系统和目标应用程序,使用与真实硬件上运行的相同的二进制文件。这允许对整个系统进行测试,包括自组织网状网络算法、代码读取传感器与无线通信系统的集成,以及节点休眠以节省电力的效果。可以通过使用加速在节点上部署代码混合响起;至少,SIMICS使得更换存储在节点上的闪存中的软件图像非常容易。

随着整个网络封装在模拟的内部,我们可以应用并行自动测试,就像我在之前的博客中写过.通过使用一组服务器,多个虚拟物联网网络可以并行运行,每个网络都有自己的场景或参数集。Simics可以提供许多额外的网络,以增加通常用于物联网应用测试的少数(通常是单个)物理网络。

iot-3

如果发现问题,则可以在会话检查点中封装它们,并传递回开发以进行分析和修复。我的流程是在我的之前关于持续集成和Simics的博客文章,它同样适用于一台机器到数百台机器的网络。一旦系统封装在SIMICS中,检查点并用于通过后退测试结果。

iot-6

但它真的能在实践中模拟数百或数千个节点吗?就我们目前所见,它确实是。

物联网传感器节点通常具有非常低的占空比。传感器不持续意识到世界,而是经常醒来唤醒样品并报告它。每个样本运行可能需要秒或仅为几毫秒,然后系统可以空闲时间几分钟甚至几小时。这节省了电量,并使在延长的时间段内可以在现实世界中部署的节点,而无需为它们提供改变电池。

因此,系统中有大量的空闲时间,可以利用空闲时间来加速仿真。Simics一直在使用过度刺激或闲置循环优化,模拟器会及时跳到下一个有趣的事件。Simics不是一个周期一个周期地显示空闲时间,而是直接跳到下一个外部刺激点或发生在下电或空闲节点中的内部中断点。Simics实际上可以非常快地“什么也不做”,这意味着可以以比实时快很多倍的速度模拟大部分空闲的系统。

iot-4

Hypersimulation使得扩展系统仿真以包含数百个节点成为可能,并且在这样做的同时仍然比实时执行速度快。因此,在Simics上测试轻负载系统在一段时间内保持稳定要比在现实世界中测试快得多,这使得定期执行自动化的长期测试成为可能。请注意,模拟器中的时间还是一样的,只是模拟器加快了空闲部分的执行。从仿真中运行在机器上的代码的角度来看,超仿真是不可见的,根本不影响它的执行语义。可重复性。

实际上,我在十年前就测试过这个,当时我在Simics中建立了一个由1000个几乎空闲的传感器节点组成的网络,作为一个研究项目。结果超出了我的预期,因为它真的跑起来了比现实世界。这是一个单核相当慢的笔记本电脑,具有Windows XP32位。今天,具有宽多核主机和并行Simics模拟器,这应该更快地运行数量级。技术正在前进,Simics正在与它一起移动。

物联网系统是在嘈杂、敌对和困难的现实环境中运行的。因此,在网络连接困难和单个节点崩溃的情况下,测试健壮性、容错和可靠性是构建物联网系统的必要部分。这在现实世界中很难做到,因为控制环境和无线电网络连接在技术上具有挑战性,而且可靠地重复测试非常具有挑战性。使用Simics,您可以直接将故障注入到系统中,如前所述几次之前.您还可以改变无线网络的可达性—Simics允许您将任意两个节点之间的信号强度值设置为任意值。如何确定这些值完全取决于用户,即在现实世界中看到的无线电可达性问题的领域专家。

iot-5

在上面的图片中,我们展示了一些简单的可达性示例。彼此接近的节点对具有高信号强度,而进一步分开的节点对具有较低的信号强度。如果无法从某个其他节点到达节点,则该对的信号强度被设置为零,这被解释为无法达到(注意信号强度数字是真正的任意值,但我们使用100对于不触诊的完美和零。.可以在模拟期间的任何点改变信号强度参数(Simics仿真也可以在运行时任意重新配置),允许模拟改变现实世界的条件和意外中断,例如在两个节点之间通过视线的列车。

最终,需要物理实验室来测试与现实世界,无线电行为的交互以及在模拟中未捕获的其他方面。一如既往,你必须最终测试你发货和发货的东西。但在那里的方式,Simics模拟可用于测试更多,测试更快,执行自动回归测试,做故障注射,协作,沟通,使软件开发运行更顺畅。

更多关于Simics的信息,请访问在这里

以前的祝贺ESA罗塞塔团队成功着陆彗星!
下一个数据是物联网的比特币