消除移动和物联网产品测试中的边缘案例

开发高质量的物联网移动应用程序需要付出大量的努力。您需要付出更多的汗水才能手动测试它们。Orangesoft 深知确保移动应用程序具有适当的质量水平以便它们能够与第三方设备无缝交互是多么具有挑战性。

关注微信公众号:计算机程序吧,学习更多物联网技术知识。

在这篇博文中,我们将分享他们久经考验的经验、异常案例、质量保证瓶颈以及物联网移动项目固有的风险。 

请记住,本文中的所有示例均基于我们使用过的以下两种类型的设备: 

  • 具有内置录像机、激光测距仪和 Wi-Fi 或 BLE 模块(低功耗蓝牙)的光学器件,可将视频信号广播到移动应用程序

  • 配备高频 (HF) 运动探测器、日光传感器和 BLE 模块的灯,用于与应用程序通信

⚠️物联网 (IoT) 是无数解决方案、产品和技术的总称,对不同的人来说可能有不同的含义。在这篇博文中,我们专门讨论具有传感器功能的设备,这些设备还可以与设备之间以及设备与环境之间进行联网和通信。 

测试物联网移动应用程序的双重挑战 

移动应用程序测试本身就具有挑战性。与设备相关的差异(例如操作系统类型和屏幕尺寸)、针对不同平台、网络类型和提供商的各种开发工具、不同的应用程序分发渠道以及不同的用户组只是应考虑的测试挑战中的一小部分。

此外,应用程序或领域的具体情况总是会带来额外的项目和产品风险,在质量保证中必须考虑这些风险。移动应用程序开发的典型风险包括:

  • 多种组合用于测试

  • 需要广泛的测试设备

  • 主要应用程序平台(例如 iOS 和 Android)不断发展的指南

  • 缺乏移动应用程序生态系统和移动应用程序开发流程经验和知识的测试专家技能不足

上述所有障碍都会增加测试的时间和成本。但当涉及物联网时,事情会变得更加棘手。物联网解决方案不仅继承了与移动应用程序相同的测试挑战,而且还带来了独特的挑战。 

以下是物联网解决方案的一些显着特征,这些特征会影响其开发和测试: 

  • 多样化的智能设备、捆绑包、设备之间的电源类型和数据传输标准以及物联网设备软件的类型和版本

  • 传感器产生的大量输出数据以及传感器数据采集、处理和存储的要求

  • 产品目标和用户组的多样性决定了与一台或多台设备的同时交互、连接和数据传输的允许距离、连接保留模式以及对特定网络架构的需求

  • 低功耗和自主性的额外好处

  • 智能产品软件可能需要定期更新

  • 安全可靠性要求

输入和输出数据、输入字段和值

这一点可能看起来很基本,但这并不意味着它不那么重要。根据我们的经验,几个项目已经使用自定义预设来配置设备的操作。在这种情况下,用户需要设置环境参数的值,这些值是可以以不同单位提供的物理量。有时,用户可能需要为不同的操作模式定义时间值的范围。

换句话说,我们正在讨论与单位转换、舍入和显示整数、显示浮点数和不同数字以及输入负值相关的一系列测试用例。向设备发送不正确的值以及缺乏验证可能会导致设备操作出现缺陷。

为了防止测试错误,您应该在开发功能之前详细描述可以进行统计测试的输入字段的所有限制。对具有如此多边界值的屏幕进行回归测试是自动化测试的一个很好的选择。对于创建一组自定义项是测试相关功能的先决条件的情况尤其如此。

测试结果的感官评价 

智能照明系统允许您设置不断变化的灯光级别(例如,褪色和闪烁)并根据运动传感器改变灯光级别。在这种情况下,照明本身通常可以作为测试成功的指标,我们可以用眼睛感知测试结果。然而,这种测量方法很容易出现观测误差。 

此外,一天中感知的亮度会发生变化,这可能会影响测试结果。例如,LED 灯的 50% 亮度水平在夜间和白天看起来并不相同。 

仔细选择测试数据以促进评估基于听觉和视觉的测试结果也很重要。例如,测试数据应包含强度设置为 100% 的光和强度设置为 0% 的光。在这种情况下,与100%强度和60%强度的组合不同,可以清楚地感知测试结果。早晨,100% 光强度和 60% 光强度可能表现为一个连续阶段。

如果还应该分析运动传感器的灵敏度怎么办?该参数无法通过感官感知来评估,但我们正在使用黑盒方法对其进行测试。要提取测试数据,您必须查看传感器规格及其工作原理。如果您仍然无法确定最佳的测试距离和运动灵敏度,您可以用经验数据制作一个小表。 

在我们的一个项目中,我们为照明设置添加了运动灵敏度值。这个实验导致了令人沮丧的结果,因为在测试过程中光线变得疯狂。很快我们就发现,默认的 50% 灵敏度会导致大量误报。运动传感器是由背景中某处的眨眼或窗外的微风触发的。后来这个实验的结果为测试设计奠定了基础。消除移动和物联网产品测试中的边缘案例

系统权限

移动操作系统对移动应用程序具有细粒度的权限。基于物联网的移动应用程序通常包含各种基于权限的功能。对于使用蓝牙的 Android 移动应用程序尤其如此。在这种情况下,您的移动应用程序必须获得打开和使用蓝牙和地理定位的权限。 

地理数据与它有什么关系?在某些情况下,您可能需要它来进行更精确的通信或与安全要求保持一致。这里最重要的是,用户始终可以选择并能够阻止任何这些请求,这反过来可能会阻止对应用程序功能的访问。 

为了避免这种情况,您必须仔细考虑导致阻止的场景(直至从系统设置撤销权限)。对于每种情况,您都需要重新显示系统对话框、警报和其他图形元素,因为如果没有必要的权限,某些核心功能(例如智能设备连接和管理)可能无法使用。为了改善用户体验,您可以让产品在用户使用该功能之前显示权限,而不是在启动时用一系列对话框轰炸用户。

为了支持此类任务,QA 工程师使用组合测试设计(例如决策表测试)来反映不同用户操作组合下的系统行为。此外,可视化工具(例如图表和方案)在这种情况下也有很大帮助。它们使您能够促进对这些案例的理解并简化团队的覆盖范围。 

用于调整替代表的图表。Android 应用程序中的流程检查和请求蓝牙和地理定位系统权限。 

设备文件传输设置

在某些情况下,用户可能能够将照片和视频等文件从一台设备保存或发送到另一台设备。在测试这种情况时,您可能需要通过检查允许的字符和字符串长度限制来额外注意文件命名。

最常见的操作系统有特定的文件命名规则。例如,*Unix 系统中不允许使用 * 和 / 字符。在 iOS 和 macOS 中,您无法创建空名称或在字符串开头添加空格。 

为了避免测试期间出现缺陷,您应该设置文件名限制并将其作为开发的要求。最好在所有设备上坚持相同的行长度限制,并根据所涉及的操作系统的具体情况使用相同的受支持字符。您还可以尝试保存系统中已存在的同名文件。这种类型的测试属于兼容性测试的范围。

测试连接

设备连接是使用短距离设备通信的物联网产品核心。让我们以低功耗蓝牙连接为例,详细介绍此过程的关键步骤。请记住,对于其他通信技术,这些步骤可能有所不同。 

  • 设备连接过程从扫描开始- 即设备搜索其他设备的可用半径。 

  • 扫描通常伴随着过滤,以抑制信号中不需要的设备。

  • 之后,配对会在两个设备之间创建一个通信通道,使用一个或多个共享密钥来进一步加密流量。 

  • 然后,用户手动输入代码来授权设备

  • 如果身份验证成功,该过程将继续进行绑定。在这里,系统存储在配对期间创建的密钥,以形成可信设备对以供后续连接使用。绑定设备可以避免重新授权并自动连接。

  • 断开和解除绑定是该过程的最后步骤。如果用户不想长时间保持连接,则可以自动断开连接,也可以手动关闭连接。取消绑定会删除现有的设备对,因此下次您想要绑定设备时,您必须授权连接并创建新的设备对。

为了确保连接质量,您需要运行大量测试来检查扫描结果(不包括连接的设备)和身份验证过程,包括代码输入、代码生成以及用户界面(如果涉及用户)。

测试连接时,还需要检查错误和状态变化(“已添加设备”、“已连接”、“已断开连接”、“从我的设备中移除”)的显示方式以及是否实时显示。状态转换表和图表以及用例(图 2)是确保彻底测试此功能的最便捷方法。

除了连接流测试之外,重新连接时对所有设备交互进行彻底检查也很重要。这里,边缘情况包括并行连接到多个设备的状态(或超出设定限制)。当多个客户端(移动应用程序)连接到一台设备时,也会出现边缘情况。

具有有效和无效转换的状态转换图。设备连接和管理的流程描述。 

连接保持模式和非常规网络架构的网络形成

物联网产品通常需要与设备保持持久连接。例如,当物联网解决方案必须连接到传输视频信号的光学设备时,就会出现这种情况。然而,其他物联网解决方案为关键操作实现短期连接。例如,短期连接用于将设置传输到照明设备,然后照明设备可以自主运行。无论哪种情况,您都需要运行中断和重新连接测试来验证功能。

当非常规网络架构出现时,测试变得更具挑战性。例如,在我们的一个项目中,全网状网络是一项核心技术要求。在这种情况下,每个网络参与者也是一个交换机。当网络包含大量设备时,会与信号最好的参与者建立连接。该参与者反过来充当中介,将数据传递给其他参与者。 

让我们想象一下,这个网络分布在一条长长的走廊上,比蓝牙的范围还要长。这非常方便,因为用户可以站在走廊的任何一端并切换所有灯的灯光模式,即使是那些距离很远的灯。 

为了准备走廊测试,您必须将原型分成两个电源,将灯放置在房间的不同角落,然后返回几步,以便您只能与靠近您的灯进行通信。此时,需要检查设备是否正在向目标设备发送命令。如果连接保持模式是短期的,您还需要测试应用程序和设备是否能够快速访问不同的网络参与者。 

在处理短期连接时,您可能还会发现尝试连接保持时间以进行优化很有用。

在我们的一个项目中,移动应用程序不存储设备状态,因为用户可以更改这些状态。因此,要显示当前状态或发送命令,应用程序必须实现与网络的点对点连接。然而,由于全网状网络和大量灯具,接收和发送数据的时间显着增加。在不断增加连接设备的数量并运行功能测试后,团队决定在保持连接时添加延迟。结果,移动应用程序的性能显着提高。我们假设用户将连续执行多个相关操作,增加的延迟帮助我们减少了长期网络连接的数量。

中断测试

中断测试对于确保物联网解决方案的高质量至关重要。有许多操作必须完全执行或不执行并返回到初始状态。这些被称为原子操作,可能包括创建实体以及编辑和删除它们。在物联网项目中,应测试中断的最少操作数量包括:

  • 连接和断开设备

  • 在设备之间接收或传输信息/文件

  • 接收和更新设备的新软件版本

移动应用程序本身包含许多潜在的中断,包括呼叫、消息和各种通知、内存不足、充电以及应用程序之间的切换或应用程序运行时使设备处于待机状态。

与物联网设备相结合,移动应用程序会产生额外的中断,例如:

  • 在 3G/LTE 和离线网络之间切换(仅当电话运营商使用这些通信协议并且智能手机从一个塔切换到另一个塔或者设备功能需要互联网连接时) 

  • 断开电源、对智能设备的电池进行放电、对连接的设备(智能手机)进行放电或关闭

  • 超出范围(例如,踏板车的停车区)或超出通信路径(与使用 Wi-Fi、蓝牙 LE、Zigbee 和其他协议时的短距离相关)

每个设备对必须正确响应中断而不中断服务。反过来,正在运行的移动应用程序必须充当用户的状态指示器。如果原子操作期间发生中断,移动应用程序应显示错误,并通过设置延迟或阻止操作来防止同时操作的可能性。例如,如果您慢慢解除设备绑定,则必须能够在连接的设备上执行一些操作,而不会阻塞 UI。

固件的可能分发和安装是使用第三方设备时应首先考虑的问题之一。即使该方法使用无线 (OTA) 更新,此功能的实现技术也因项目而异。 

无论如何,请记住,这是一个漏洞,所有参与者都必须保护其免受干扰。如果可能的话,它应该是可逆的。理想情况下,您应该有一些备用设备用于测试。如果您的测试设备集非常有限,您应该将更新测试外包给固件开发团队。

由于项目规范、技术、项目目标和实施资源的差异,中断测试用例有不同的形式和形式。尽管如此,大多数中断测试用例都是强制性的,因为它们可能会阻塞,并可能增加声誉风险和设备故障的风险。

您可以添加基于产品的解决方案,例如用户参与方法(通知和短信)和纠正措施,以降低风险及其后果。例如,租赁滑板车可以实现延期付款计算、强制停止和阻止电池完全放电以及位置跟踪等功能。但这些方案可靠性较差,且不能完全排除风险。

可用性测试的必要性

在我们的实践中,存在这样的情况:用户必须手动输入反映风向相对于设备方向的相对角度值。为了促进这项任务,我们的 UI/UX 设计开发了一个专用的界面元素来帮助用户设置角度。 

当用户参与设置过程时,您必须确保用于输入和交互的图形元素易于使用,并且所有输入参数的目的对用户来说是清楚的。为此,您可以嵌入提示、方便的选择器、默认值以及引导用户了解关键功能的演练。 

可用性测试将帮助您了解用户行为、运行必要的检查并将纠正措施嵌入到解决方案中。此外,产品研究和用户辅助的可用性测试(也称为 beta 测试和 A/B 测试)是有助于构建以用户为中心的产品的重要测试技术。 

物联网项目可测试性

对于物联网系统,可测试性是成功测试的隐藏要素。作为测试策略的核心组成部分,可测试性是指测试系统或其组件之一的容易程度或挑战性。

可测试性意味着接收有关产品质量和所做更改的影响的快速反馈。因此,它使开发过程更加可预测,有利于决策并降低项目风险。

让我们详细讨论可以帮助您增强 IoT 软件可测试性的技术。

记录

总的来说,确保日志覆盖率和访问测试日志内容可以非常简单,Android 应用程序的 adb 日志就是这种情况。然而,基于技术和平台,您可能需要测试对存储库的访问以及特殊知识,或者您可能必须想出另一种日志提取方法。 

这可能看起来不是一个优先任务,但日志记录对于任何物联网项目都是必不可少的。在测试中,日志是宝贵的资产,可以深入了解根本原因并对新出现的问题发出预警。 

如果您的日志提取机制没有进行微调,则可能会导致重复工作。开发人员必须反复重现错误以获得必要的信息并进行调试。按trackid过滤日志允许您选择测试期间接收的信息量,包括来自特定设备的信息。

使用数据收集

您可能需要开发特定的设计解决方案来收集、传输和存储使用数据,但它绝对可以帮助您降低设备维护成本。例如,使用数据收集可以帮助车主监控租赁滑板车的状况,防止故障或丢失,并提供更好的用户体验。

测试和项目文档

您并不总是需要记录一组详细的测试用例。但是,您可能会发现创建清单和已建立的最新项目 wiki(收集与设备性能相关的规格和信息)很有帮助。这些工件将帮助团队跟踪变更的影响,使测试和项目管理更加透明,并促进入职。 

明确定义、记录的项目需求将为测试奠定坚实的基础,使 QA 专家能够在功能实现之前发现缺陷。这反过来又降低了开发和测试的成本。

最佳测试环境

如果物联网生态系统有大量的网络参与者,团队应该有一个能够重现和调试相关错误的测试环境。然而,对于大多数项目来说,建立一个复制真实环境的测试环境过于昂贵。拥有满足验收标准的测试环境是有效和负担得起的测试之间的良好权衡。

在这方面,现场测试和测试环境中的调试是正确测试的好方法。模拟器、设备模拟器、连接模拟器和其他虚拟化工具也将有助于测试。 

如果应用程序开发和测试发生在团队获得测试设备之前,测试人员可以使用模拟模型。这些是发送模拟设备数据的算法。仿真模型对于单个服务的系统测试和扩展过程中的负载测试同样有帮助。

独立团队测试 

IoT 设备和服务通常由多个团队开发和测试,这些团队对每个对象使用不同的开发生命周期模型。独立测试团队通常在孤岛中工作,几乎不与其他测试团队合作。因此,由于反馈和知识差距,测试团队可能缺乏有关设备性能的足够知识。

好的一面是,每个测试团队都对其负责的产品组件有透彻的了解。此外,每个测试团队都清楚与特定产品组件相关的故障。

在这种情况下,对任务和问题的公开讨论以及对用例的联合搜索对于团队和正在开发的产品都是有益且具有启发性的。