即使是最小的物联网设备也生活在复杂的环境中,在开发时可能无法完全理解。事实上,我已经第一次看到与设备连接到 Internet 相关的安全问题。在之前的博客中,我讨论了面向服务的设计、开发和测试的好处。在这里,我将基于服务的测试和服务虚拟化带到下一步:虚拟实验室。
建立一个真实的物理测试实验室环境是困难的,即使完成,它也成为系统测试的主要瓶颈。虚拟实验室消除了这一瓶颈,同时为基于服务的物联网设备测试提供了新的优势。
最近的一项研究 发现,80% 的物联网应用程序没有经过安全漏洞测试。第二项调查发现,56% 的嵌入式设备开发人员没有审查源代码的安全漏洞,37% 的人没有书面编码标准。这些并不是令人鼓舞的统计数据,很明显,物联网设备制造商需要更加认真地对待质量、安全和保障。
测试自动化是确保测试更加严格、一致和彻底的重要步骤。测试,尤其是针对安全漏洞的测试,通常被认为过于昂贵和复杂,因此被匆忙或完全忽视。但是,让您的客户(和攻击者)为您测试 IoT 设备的安全性是一个代价高昂的错误。
真正的测试实验室需要物联网设备计划工作环境的最接近物理表现,但即使在最复杂的实验室中,也很难扩展到现实环境。虚拟实验室解决了这个问题,因为它们已经超越了对难以找到(或不存在)的硬件依赖项的需求。将复杂的服务虚拟化与其他关键的测试自动化工具结合使用。例如:
服务虚拟化 模拟被测设备 (DUT) 执行完整系统测试所需的所有依赖项。这包括设备使用的所有连接和协议,并对通信做出实际响应。例如,虚拟化可以模拟物联网设备与之通信的企业服务器后端,以提供定期的传感器读数。同样,虚拟化可以以现实的方式控制物联网设备。
服务和 API 测试 提供了一种驱动 DUT 的方式,以确保它提供的服务(和提供的 API)完美执行。这些测试可以通过自动化平台进行操作,以根据需要执行性能和安全测试。
运行时监控 实时检测 DUT 上的错误并捕获重要的跟踪信息。例如,在成品中可能无法检测到的内存泄漏可以及早、廉价地发现和解决。
测试实验室管理和分析 提供对虚拟实验室的总体控制。虚拟化后,可以根据需要复制整个实验室设置,并且可以自动化和重复运行测试。分析提供活动和结果的必要摘要。
所示的边缘计算 IoT 生态系统描述了部署嵌入式 IoT 设备的典型环境。传感器和控制设备将信息传递到边缘,边缘是一系列设备或应用程序,可以接收信息并使用逻辑与设备或云端进行通信。然后,云具有更高级别的逻辑,允许它根据该信息采取行动。云是一组服务——微服务、与数据库的连接、附加逻辑或第三方服务——它们构成了一个由功能构建块组成的复杂网络。
当需要在物联网生态系统中进行测试时,需要在多个层面进行测试。例如,要测试网关中引入的新功能,需要验证网关可以接收来自传感器的信息,并且可以按照您构建业务逻辑的方式进行通信。
为了验证这种复杂性, Parasoft Virtualize (模拟所需的依赖项)和 Parasoft SOAtest (驱动测试)可以模拟这些输入。这些工具通过网络模拟来自设备的真实调用(无论是 REST/HTTP 等协议,还是 CoAP、XMPP 或 MQTT 等 IoT 流行协议),并测试 DUT(本例中的网关)是否与通过验证从 SOAtest 返回的响应来适当地使用云服务。
如果有外部方式将信息传递到该网关,那么也可以模拟这些调用。Virtualize 稳定了测试环境,以创建对利用来自 SOAtest 的测试数据的请求的可预测响应,全面测试网关和服务。
最后,顶级服务可能正在与 Edge 以及其他传感器和外部参与者进行通信,重要的是要知道来自您的输入的流正在通过环境返回后端系统。 Virtualize 将这些调用模拟到边缘(到 IoT 设备)的接收,然后将该信息传递回 SOAtest,以确认调用进行了往返并且在 IoT 生态系统中的行为符合预期。
正常的测试环境很昂贵,可能超出大多数开发经理的预测。voke Research的一项研究 发现,预生产实验室的平均投资为 1200 万美元。配置实验室的平均时间是 18 天,另外还有 12 到 14 天用于配置。即使在花费了这些成本和时间之后,由于访问权限有限,这些实验室还是成为测试的瓶颈。此外,物理实验室的日常运营成本很高。在大多数情况下,复制物理实验室以提高测试吞吐量的成本过高。
在一篇文章 The ABCs of Service Virtualization中,服务虚拟化的好处被归结为 通过更好地控制虚拟化依赖关系 的行为来改进测试设备的 访问,从而降低成本并提高测试 速度。以类似的方式,让我们分解虚拟物联网测试实验室的好处:
通过更好和更完整的测试提高质量。基于服务的测试确保关键用例得到执行和完善。自动化性能测试可确保在重负载下的稳定性和可靠性。此外,运行时监控可确保检测和跟踪难以发现的错误。
通过模拟畸形数据的自动渗透测试提高安全性。负载测试可以模拟拒绝服务攻击,运行时监控可以检测安全漏洞。测试可重复性确保每次迭代、补丁或发布都以完全相同的方式进行测试。此外,简化了测试开发和操作(即改进和创建新测试)。
通过消除完整系统测试所需的昂贵依赖项来减少测试时间、风险和成本。自动化提供手动测试无法提供的可重复性和一致性,同时提供更好、更完整的测试。虚拟实验室减少了物理实验室设置所需的准备时间,从而影响了总测试时间。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !