基于服务的自动化测试:高质量、安全的物联网(IoT)设备的关键所在
物联网需要不同的测试视角
物联网的规模很大,可能比大多数嵌入式制造商以前所应对的规模还要大。此外,单个设备只是由许多种类和类型的设备组成的更大整体的一部分。在我的上一篇文章中,我讨论了物联网的承诺是如何在它所提供的服务以及将许多“东西”凝结成对企业有价值的东西。在(1)设备(“物”)的需求,以及(2)它在软件开发生命周期中为整个自动化(“服务”)增加的价值中,处理这种规模是很重要的,以满足成本、进度和上市时间的限制。特别是测试,必须根据预期的运行环境进行扩展,另外还要为关键的非功能需求(如性能和安全性)提供支持。
服务互联网需要自动化
随着物联网实施规模的上升,软件开发过程中的自动化变得至关重要。随着连接性和规模的增加,安全和非功能需求变得更加重要。在集成和系统测试阶段,基于服务的自动化测试变得至关重要,同时还能实现安全、稳定性和性能的测试。
让我们来看看Parasoft在测试自动化方面的深度和广度,如图1所示,因为它适用于SDLC的每个阶段。关键的启示是每个解决方案如何相互补充,并随着产品的增长而扩展。单元测试与静态和运行时分析相辅相成。在集成过程中,单元测试发展到API和服务测试工具,然后发展到服务虚拟化。
图1:测试自动化解决方案以及它们被引入软件开发生命周期的位置。
大多数开发人员都熟悉测试自动化的某些方面;然而,许多人并没有从服务或基于服务的测试和虚拟化的角度来考虑。随着模式从“事物”转向“服务”,基于服务的测试的好处变得更加明显。
基于服务的测试在物联网中的风险和成本的降低
随着产品在开发过程中进入集成阶段,测试变得更加复杂和昂贵。这也是发现许多关键错误的阶段,包括在单元级无法检测到的安全和性能问题。一个很大的风险是测试人员、实验室和硬件资源的可用性。
这里的解决方案是自动化。自动化提供了一种提高测试生产率、可重复性和系统测试范围的方法。自动化、基于服务的测试方法对于新开发的物联网设备的成功至关重要。
其优点包括以下几点:
- 提高测试生产力
自动化可以协助生成基于服务的测试,以及可重复和可扩展的测试负载。运行时分析工具与实时测试一起运行,以检测和跟踪错误。与手动测试相比,缺陷更容易被发现和修复。一旦进行了修复,自动化就能提供简单的回归测试。支持重复测试作为持续测试、敏捷或迭代开发过程的一部分。
- 消除硬件资源瓶颈
测试调度中最大的问题之一是依赖性组件的可用性。这些组件可能是网络上的其他设备,或者是物联网网络中更高层次的功能。模拟这些依赖性消除了测试瓶颈,同时使整个虚拟实验室在每个测试人员和开发人员的桌面上可用。
- 根据当前和未来的需求进行扩展
随着系统集成的进展,测试范围增加,包括越来越多的依赖性组件。在物联网系统中,可扩展性是关键,因为被测设备要在高度复杂的环境中执行。在设备的生命周期环境中,复杂性将增加,自动化测试必须与产品一起扩展。
- 实用和现实的性能和安全测试
开发团队在集成过程中尽其所能地测试性能和安全性,但如果没有自动化,在实验室中设置真实的场景往往耗时且昂贵。面向服务的方法为指定和验证性能和测试安全性提供了一个框架。
超越功能测试:安全和性能
纯粹的功能测试并不足以将设备推向市场。安全性和性能等非功能性要求至关重要,但却是最难测试的一些特性。一个性能差或安全性差的设备根本没有竞争力,但满足上市时间限制和正确测试性能和安全性是物联网设备的一个严峻挑战。服务导向提供了一种常见的方式来指定需求(例如基于每个服务的性能)和测试安全性(例如利用暴露的服务和API的攻击)。
性能和负载测试
性能和安全要求很可能以服务质量声明的形式表达。例如,暖通空调系统可能被要求在两小时内根据外界温差5度将建筑温度维持在75度,每10秒报告一次当前温度。如果为这个产品设计一个温控器,你可以在单个层面测试功能,或许也可以测试性能。然而,如果一个部署的系统由数百个恒温器组成,设备的性能只是其他设备复杂网络中的一小部分。
安全测试
安全要求往往是系统级的、模糊的。在暖通空调系统的例子中,可能要求恒温器在网络重载的情况下不能失效。拒绝服务攻击依赖于向目标泛滥大量流量,有时是畸形的数据包。在这些情况下,会使用渗透和模糊测试来确保设备能够承受恶劣的网络环境。虚拟环境中可用的可扩展性超过了真实硬件的可能性。
服务虚拟化
基于服务的自动化测试的下一个逻辑步骤是虚拟化。通过模拟所有的依赖性组件和全套的测试刺激,一个完整的虚拟环境是可能的。服务虚拟化的好处不仅仅是真实和可重复的测试环境,而且还能随意复制和部署,从而创建一个“虚拟实验室”——一个和真实环境一样有效的实验室,但成本却很低。
结语
一般来说,测试自动化对于满足物联网产品目标(如上市时间和预算)至关重要。基于服务的方法可以提高测试生产率,并允许进行性能和安全性的高重复性和可扩展性测试,以及构建虚拟测试环境的能力。随着物联网设备及其部署环境的复杂性增加,对可扩展的服务级测试的需求变得更加迫切。