物联网软件架构与测试环境深度解析
1. 软件测试架构(STA)定义的探索
在当今的技术领域,“软件测试架构”(STA)、“物联网测试架构”以及“物联网测试环境”等术语的定义并非十分清晰。虽然人们期望IEEE标准协会甚至SEVOCAB能给出明确的定义,但目前这些参考资料对这些术语及其相关概念的界定并不理想。即便在互联网上搜索软件架构,能得到超过5000条结果,但排名靠前的网站提供的帮助有限,大多仅代表单一作者的观点。
为了更精准地定义“软件架构”或“软件测试架构”,我们不妨回顾“架构”一词在其他领域的历史用法。在土木工程和建筑施工领域,“架构”有着悠久的历史。维基百科对“架构(土木工程)”的定义为:它是规划、设计和建造建筑物及其他物理结构的工程过程和产物。而“测试环境”则是进行测试的物理和逻辑支持结构。
测试环境的目标是让人类测试人员通过自动化检查或非自动化技术来测试新代码和修改后的代码。开发人员完成编码、集成和配置后,会将项目转移到测试环境中。不同类型的测试需要不同的测试环境,有些测试甚至可以并行进行。例如,自动化用户界面测试可能会在多个虚拟操作系统和显示器(真实或虚拟)上进行;性能测试可能需要标准化的物理基线硬件配置,以便随时间比较性能测试结果;可用性或耐久性测试可能依赖于虚拟硬件和网络中的故障模拟器,这些测试都可以同时进行。
测试可以是串行的,也可以是并行的,这取决于测试环境的复杂程度和开发测试生命周期模型的类型。对于敏捷开发和其他高生产率的软件开发实践来说,减少从软件设计到生产交付的时间是一个重要目标。因此,高度自动化和并行化的测试环境对于敏捷开发和许多物联网DevOps系统的快速软件开发至关重要。
2. 建筑架构对软件测试的启示
建筑架构能够创造出功能实用且设计优雅的结构。从历史角度看,建筑行业已有数千年的历史。如果足够多的大型系统和系统集合采用STA概念并对其进行精确定义,那么这个概念的使用就可以得到共享,并达成共识。这也应该成为软件测试人员定义“软件测试架构”的起点。
学校会为学生提供专业培训,使他们成为支持建筑和施工行业的建筑师。在建筑领域,建筑师与其他建筑工程学科(如土木、结构、电气、机械、暖通空调等)之间存在工作交接。此外,在建筑进入施工阶段时,实际施工人员常常会在实施过程中发现并纠正建筑设计中的“问题”,但很多时候他们仍需咨询原建筑师。
这些概念和想法对软件测试具有一定的启示意义。下面是一些来自测试从业者和日本电气通信大学的西康晴教授的定义:
-
STA是测试设计的宏观图景
:
- 测试工程师必须掌握测试设计的宏观图景,因为测试用例可能会增加到超过100,000个,并且变得更加复杂。
- 测试技术和覆盖率虽然可以防止小的测试用例缺失,但无法避免大的缺失。
- 测试设计的质量更多地取决于整体平衡,而不是每个测试用例的优先级。
-
测试架构就是测试设计的架构
:
- 在软件测试领域,人们常常将测试设计的宏观图景与测试过程或测试管理的宏观图景相混淆。
- 在软件开发中,项目计划通常不会描述软件架构,但测试计划会描述测试架构。
- 在安排测试用例之前,应该先确定要设计哪些类型的测试。
-
测试架构由“测试观点”及其关系组成
:软件测试架构(STA)是在支持测试结构的基础上,规划、设计和构建软件测试的过程和产物。
对于物联网而言,STA包括物联网硬件和软件系统的硬件、接口和互联网连接,还可能包括外部硬件和世界系统(与物联网设备相连的事物)。支持测试结构包括测试工具、子环境、规划、文档、工具、视图/观点和分析等。
3. 物联网软件架构的快速概览
物联网系统的架构包含多个层次,如在一个通用的通信和控制架构中,底层可能是人类用户,他们通过传感器、执行器和计算元素与物联网设备进行交互。此时,用户可能并不了解物联网系统的其他方面。实际上,除了设备本身,还有边缘层和雾层,最终连接到云。许多用户可能知道他们的数据和信息会进入云,但不清楚具体的工作原理。最后,云与网络会共享物联网设备的信息。
这就引出了一个问题:“我们应该在哪里进行物联网测试,谁负责设备以上的哪些层或级别?”仅仅测试单个架构级别可能会忽略跨越特定级别的使用问题。用户并不关心哪个级别负责,他们只关心故障发生时是否会影响到自己。
一些物联网软件项目专注于开发和测试新的软件和硬件架构元素,认为现有系统、硬件和软件已经通过使用得到了“验证”。然而,这种观点可能会导致架构和集成方面的问题,这些问题直到设备大规模使用时才会被发现,这对利益相关者来说可能是一个糟糕的意外。因此,至少在集成层面,应该对新的和重用的物联网元素进行测试和质量评估。
在物联网中,架构产品元素包括独特的硬件和软件,以构建一个整体系统。这些元素在大多数网络系统中都很常见,因此需要进行评估测试。此外,还需要为软件、硬件和系统提供文档,特别是在接口和集成方面。
4. 物联网参考架构
目前,行业中存在多种被广泛使用的物联网参考架构:
-
Internet of Things – Architecture (IoT - A) 2013
:通过欧盟灯塔项目开发,是通用的架构,支持创建适用于各个领域的具体架构。
-
IEEE P2413
:这是一个正在进行的IEEE标准化项目,旨在识别物联网工业和消费领域的共性。
-
Industrial Internet Reference Architecture (IIRA) 2014
:由工业互联网联盟(AT&T、思科、通用电气、IBM和英特尔)专门为工业物联网应用开发。
这些架构通常具有以下能力:
| 能力 | 描述 |
| — | — |
| 设备和数据管理 | 对物联网设备及其产生的数据进行有效管理 |
| 连接性和通信 | 确保设备之间以及设备与云之间的稳定连接和通信 |
| 分析和应用 | 对数据进行分析,并基于分析结果开发应用程序 |
| 质量和安全因素 | 保障系统的质量和安全性 |
| 用户/利益相关者支持 | 为用户和利益相关者提供支持和服务 |
传统测试团队通常关注功能测试,这是必要的第一步,但并不足够。参考架构还描述了处理非功能需求的机制,如灵活性、可靠性、服务质量、IEEE 982.1、互操作性和集成等。这些方面需要进行功能和非功能质量评估。
此外,一些以物联网平台为中心的参考架构(特定于供应商)包括:
- IBM IoT Reference Architecture
- Intel IoT Platform Reference Architecture
- Microsoft Azure IoT Architecture
- Amazon Web Services (AWS) Pragma Architecture
环境、工具和支持流程也是重要的架构元素。然而,仅仅使用和遵循物联网工具和流程并不意味着项目一定会成功,物联网软件工具和支持因素需要持续的研究和改进。
5. 物联网支持架构概述
对于开发人员来说,了解一些基本的物联网支持架构元素是很重要的。以下是开发团队在考虑通用软件开发架构时应具备的一些基本要求:
-
生命周期步骤的控制和自动化
:确保开发过程的高效和可控。
-
建模和仿真
:帮助开发人员更好地理解系统的行为和性能。
-
设备技术管理
:对物联网设备进行有效的管理和维护。
-
配置管理/软件配置管理(CM/SCM)
:每个“版本”都应有版本描述文档(VDD),以确保代码的可追溯性和管理。
-
数据通信协议工具
:支持设备之间的数据通信。
-
人员因素支持
:考虑易用性、熟悉度和灵活性等因素,提高用户体验。
-
数据存储
:可以是云存储或其他存储方式,用于存储物联网产生的大量数据。
-
数据和信息分析
:利用人工智能(AI)、机器学习(ML)等技术对数据进行分析。
-
快速应用开发和部署工具
:包括持续集成(CI)、持续测试(CT)和持续部署(CD),以实现快速迭代开发。
-
集成工具
:用于将系统的各个部分(硬件、软件、操作等)集成在一起。
-
安全和隐私工具
:保障系统的安全性和用户隐私。
-
报告和通信工具
:方便团队成员之间的沟通和信息共享。
-
管理(人力)
:有效的人员管理对于项目的成功至关重要。
-
资源、成本和调度项目规划工具
:帮助管理项目的资源、成本和进度。
-
STA和测试环境
:确保软件的质量和可靠性。
目前,有一些著名的通用端到端物联网平台,它们提供了上述部分功能,适用于广泛的物联网应用:
-
IBM Watson IoT
:基于IBM的Bluemix PaaS平台构建,支持实时分析和认知计算。
-
Amazon Web Services (AWS) IoT
:一个可扩展的平台,包括工具包、访问认证和授权、系统注册表、物联网网关和规则引擎。
-
Microsoft Azure IoT Suite
:一个全面的物联网平台,支持使用Azure IoT Hub进行设备管理,以及标准通信协议、安全存储、规则和数据分析。
-
ThingWorx
:支持模型驱动的快速应用开发,具有设备管理、建模、标准协议和数据分析等功能。
-
Kaa
:一个免费的开源物联网平台,遵循Apache 2.0许可证,支持本地自托管,包括REST API和针对Java、C++和C的SDK,具备设备管理、数据收集、CM/SCM、通知、负载均衡和数据分析等功能。
6. 物联网环境的思维导图
物联网环境的思维导图以“物联网环境”为中心,包括软件、硬件、系统和操作等方面。测试人员在测试物联网设备时,应考虑整个环境。该思维导图分为三个主要部分:工业物联网(IIoT)、消费者物联网和“中间”部门。
消费者物联网领域涵盖了可穿戴设备、家庭设备(如智能家居控制、娱乐设备、食品库存管理设备)以及健康监测和提醒系统(如智能药丸)等。这些方面涉及安全、隐私、金钱和个人生活质量等问题。
工业物联网系统已经得到广泛应用并在不断发展。它包括建筑、工厂和能源等子领域。建筑方面可以包括建筑物、基础设施甚至城市,通过工业物联网可以对这些资源进行建设、管理和优化。工厂和生产设施涉及自动化、机器人、库存控制、内部运输路由、废物管理和一般管理等细节。能源领域则关注能源的使用、管理、控制和分配。
“中间”部门包括交通、通信网络、公共安全和安全、零售和医疗保健等领域。这些环境在一定程度上融合了工业和消费者的特点,每个节点都代表着测试人员需要考虑的环境。该部门具有安全、隐私、财务、功能、可用性和可靠性等质量因素。
在物联网中,测试人员和开发团队必须考虑全面的测试环境和架构,不仅要关注设备的较低级别(如边缘和应用云),还要考虑整个集成的网络物理系统在“现实世界”中的情况。测试人员应关注软件系统或系统集合,确保测试环境能够反映实际情况。
综上所述,物联网的软件架构和测试环境是一个复杂而重要的领域。随着物联网的不断发展,相关的概念和技术也在不断演变。测试团队和开发人员需要不断学习和更新知识,以适应新的挑战和需求。通过全面考虑测试环境和架构,以及使用合适的工具和流程,可以提高物联网系统的质量和可靠性,为用户提供更好的体验。
物联网软件架构与测试环境深度解析
7. 测试方式与环境的选择考量
测试方式分为串行和并行,其选择取决于测试环境的复杂程度以及开发测试生命周期模型的类型。对于敏捷开发和众多物联网DevOps系统而言,为实现快速软件开发,高度自动化和并行化的测试环境是必不可少的。以下为您详细分析不同测试类型对应的测试环境需求:
| 测试类型 | 测试环境需求 |
| — | — |
| 自动化用户界面测试 | 可能需在多个虚拟操作系统和显示器(真实或虚拟)上进行 |
| 性能测试 | 需要标准化的物理基线硬件配置,以便随时间比较性能测试结果 |
| 可用性或耐久性测试 | 依赖于虚拟硬件和网络中的故障模拟器,可与其他测试同时进行 |
在实际操作中,开发人员完成编码、集成和配置后,会将项目转移到测试环境。不同类型的测试可能需要不同的测试环境,并且部分测试可以并行开展,以此提高测试效率。
8. 物联网架构层级与测试挑战
物联网系统的架构层级丰富,从底层的人类用户通过传感器、执行器和计算元素与物联网设备交互,到边缘层、雾层,最终连接到云。许多用户虽知晓数据会进入云,但对其具体工作原理了解甚少。这就带来了测试方面的挑战,例如:
graph LR
A[人类用户] --> B[物联网设备]
B --> C[边缘层]
C --> D[雾层]
D --> E[云]
E --> F[网络共享信息]
style A fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
style B fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
style C fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
style D fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
style E fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
style F fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
仅仅测试单个架构级别可能会遗漏跨越特定级别的使用问题,而用户更关心的是故障是否会影响到自己,而非哪个级别负责。部分物联网软件项目专注于新的软件和硬件架构元素的开发与测试,认为现有系统已得到“验证”,但这种观点可能导致架构和集成问题在设备大规模使用时才被发现。所以,至少在集成层面,应对新的和重用的物联网元素进行测试和质量评估。
9. 参考架构的能力与测试重点
目前行业内存在多种物联网参考架构,如IoT - A 2013、IEEE P2413、IIRA 2014等,这些架构通常具备以下能力:
-
设备和数据管理
:对物联网设备及其产生的数据进行有效管理。
-
连接性和通信
:确保设备之间以及设备与云之间的稳定连接和通信。
-
分析和应用
:对数据进行分析,并基于分析结果开发应用程序。
-
质量和安全因素
:保障系统的质量和安全性。
-
用户/利益相关者支持
:为用户和利益相关者提供支持和服务。
传统测试团队往往侧重于功能测试,然而这只是必要的第一步,并不充分。参考架构还描述了处理非功能需求的机制,如灵活性、可靠性、服务质量、IEEE 982.1、互操作性和集成等,这些方面都需要进行功能和非功能质量评估。
10. 开发团队的必备能力与平台选择
开发团队在考虑通用软件开发架构时,应具备以下基本要求:
1.
生命周期步骤的控制和自动化
:确保开发过程高效且可控。
2.
建模和仿真
:助力开发人员更好地理解系统的行为和性能。
3.
设备技术管理
:对物联网设备进行有效管理和维护。
4.
配置管理/软件配置管理(CM/SCM)
:每个“版本”都应有版本描述文档(VDD),确保代码的可追溯性和管理。
5.
数据通信协议工具
:支持设备之间的数据通信。
6.
人员因素支持
:考虑易用性、熟悉度和灵活性等因素,提升用户体验。
7.
数据存储
:可采用云存储或其他存储方式,存储物联网产生的大量数据。
8.
数据和信息分析
:运用人工智能(AI)、机器学习(ML)等技术对数据进行分析。
9.
快速应用开发和部署工具
:包括持续集成(CI)、持续测试(CT)和持续部署(CD),实现快速迭代开发。
10.
集成工具
:用于将系统的各个部分(硬件、软件、操作等)集成在一起。
11.
安全和隐私工具
:保障系统的安全性和用户隐私。
12.
报告和通信工具
:方便团队成员之间的沟通和信息共享。
13.
管理(人力)
:有效的人员管理对项目成功至关重要。
14.
资源、成本和调度项目规划工具
:帮助管理项目的资源、成本和进度。
15.
STA和测试环境
:确保软件的质量和可靠性。
目前,有一些著名的通用端到端物联网平台,它们提供了上述部分功能,适用于广泛的物联网应用:
| 平台名称 | 特点 |
| — | — |
| IBM Watson IoT | 基于IBM的Bluemix PaaS平台构建,支持实时分析和认知计算 |
| Amazon Web Services (AWS) IoT | 可扩展平台,包括工具包、访问认证和授权、系统注册表、物联网网关和规则引擎 |
| Microsoft Azure IoT Suite | 全面的物联网平台,支持使用Azure IoT Hub进行设备管理,以及标准通信协议、安全存储、规则和数据分析 |
| ThingWorx | 支持模型驱动的快速应用开发,具备设备管理、建模、标准协议和数据分析等功能 |
| Kaa | 免费的开源物联网平台,遵循Apache 2.0许可证,支持本地自托管,包括REST API和针对Java、C++和C的SDK,具备设备管理、数据收集、CM/SCM、通知、负载均衡和数据分析等功能 |
11. 物联网环境各领域的特点与测试要点
物联网环境的思维导图分为工业物联网(IIoT)、消费者物联网和“中间”部门三个主要部分,各部分具有不同的特点和测试要点:
-
消费者物联网
:涵盖可穿戴设备、家庭设备以及健康监测和提醒系统等。这些方面涉及安全、隐私、金钱和个人生活质量等问题,测试时需重点关注用户体验和数据安全。
-
工业物联网
:包括建筑、工厂和能源等子领域。建筑方面可对建筑物、基础设施甚至城市进行建设、管理和优化;工厂和生产设施涉及自动化、机器人、库存控制等细节;能源领域关注能源的使用、管理、控制和分配。测试时需注重系统的稳定性、效率和可靠性。
-
“中间”部门
:包括交通、通信网络、公共安全和安全、零售和医疗保健等领域。这些环境融合了工业和消费者的特点,具有安全、隐私、财务、功能、可用性和可靠性等质量因素,测试时需综合考虑多方面的需求。
在物联网领域,测试人员和开发团队需全面考虑测试环境和架构,不仅要关注设备的较低级别(如边缘和应用云),还要考虑整个集成的网络物理系统在“现实世界”中的情况。通过不断学习和更新知识,使用合适的工具和流程,提高物联网系统的质量和可靠性,为用户提供更优质的体验。
超级会员免费看
497

被折叠的 条评论
为什么被折叠?



