2014年11月12日 设备管理

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

由雅各布Engblom

jakob-engblom-intro-picture

开发和测试物联网应用和系统是一个巨大的挑战,因为这些系统很简单-它们包含很多单元,需要很大的空间。越大的东西,就越难把它放到软件开发实验室进行测试。当开发能在100或1000个低功耗传感器节点上运行的软件时,如何在日常工作流程中实际测试该软件?模拟系统是一个很好的答案。

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

iot-1

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

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

当我还是一个博士生的时候,一个研究网状网络的小组有一个聪明的解决方案。他们给授课的学生配备了免费的笔记本电脑(这在当时是非常罕见的),运行着他们的实验网状网络软件堆栈。通过这种方式,他们将相当多的节点分散到整个校园,提供了一个很好的测试设置。这在今天的专业行业中可能行不通。然而,模拟。

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

iot-2

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

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

iot-3

如果发现了问题,可以将其封装在会话检查点中,并将其传递给开发人员进行分析和修复。这个流程在我的之前关于持续集成和Simics的博客文章,它既适用于一台机器,也适用于数百台机器组成的网络。一旦系统被封装到Simics中,检查点就被用来传递回测试结果。

iot-6

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

物联网传感器节点的占空比通常很低。传感器并不是连续不断地感知世界,而是定期醒来采集样本并报告。每个示例运行可能花费一秒或几毫秒,然后系统可能空闲几分钟甚至几小时。这节省了电力,并使在现实世界中部署节点的时间延长成为可能,而无需维护它们更换电池。

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

iot-4

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

实际上,我在十年前就测试过这个,当时我在Simics中建立了一个由1000个几乎空闲的传感器节点组成的网络,作为一个研究项目。结果超出了我的预期,因为它真的跑起来了而不是真实的世界。这是在一台运行速度相当慢的单核笔记本电脑上使用的是Windows xp32位操作系统。今天,有了广泛的多核主机和并行Simics模拟器,这应该运行得快一个数量级。科技在进步,Simics也在与时俱进。

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

iot-5

在上图中,我们展示了一些可达性的简单例子。距离较近的节点对信号强度较高,距离较远的节点对信号强度较低。如果某个节点无法从其他节点到达,则对的信号强度设置为零,这被解释为无法到达(注意,信号强度数值实际上是任意值,但我们使用100表示完全,0表示不可达)。信号强度参数可以在仿真期间的任何点改变(Simics仿真可以在运行时任意重新配置),允许模拟不断变化的现实条件和意外中断,如火车通过两个节点之间的视线。

最后,还需要物理实验室来测试与现实世界的交互作用、无线电行为以及模拟中没有捕捉到的其他方面。与往常一样,你必须最终测试你所发布的内容,然后再发布你所测试的内容。但在此过程中,Simics模拟可用于测试更多、测试更快、执行自动回归测试、进行故障注入、协作、通信,并使软件开发运行得更顺畅。

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

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