探索自动化移动家庭机器人的复杂性,重点关注设置的独特挑战,克服约束以确保顺畅的开箱体验。
在我之前的文章中,我解释了如何使用April Tag技术自动化E2E家庭机器人。在家庭机器人或任何机器人的自动化中存在一个巨大的挑战。如何设置设备?在设备、手机和移动应用程序的世界中,设备通过USB连接到主机设备,设备将始终连接到电源。现在,测试机器人引入了一个独特的挑战,即当机器人移动时如何进行测试。它无法物理有线连接到主机设备。我们如何验证开箱体验?不用担心,我将在本文中解释这个问题。
复杂性和挑战
正如我向你简要介绍过机器人自动化测试中设置阶段的各种挑战,让我更深入地研究一下更多的挑战。
机器人在移动,无法物理有线连接到主机设备。对于某些组件级别的测试可能是可能的,但对于E2E测试来说是不可能的。
开箱体验是指设备未连接到wifi。当设备全新时,主机设备如何与设备交互?这是日常机器人测试中非常常见的情况。
在发生任何错误或异常时恢复机器人。自动化测试的主要目标是发现机器人的潜在软件和硬件问题。如果出现问题,我们如何报告和恢复设备?
机器人将耗尽电池,我们需要可靠的电源来为机器人的电池供电。
将相同的设置扩展到多个实验室和家庭环境。这非常关键,因为我们不能仅在一个环境中签署或测试机器人。
让我们按照时间顺序来解决这些问题。
使用树莓派预设机器人
解决这个问题是最重要的。考虑一下机器人位于某个位置的测试自动化实验室中。有一台主机设备连接到公司内部网络,用于发送和接收命令、访问各种源代码、内部工具和基础设施。我们将连接一个树莓派到设备上,并在树莓派上运行一个REST服务,以与主机设备和设备进行通信。下面是一个图示表示该设置。
使用树莓派预设机器人
解决开箱体验用例
现在我们看到如何借助树莓派预先设置测试环境。现在,让我们看看如何解决设备未连接到wifi的开箱体验问题。
这就是树莓派上的RESTful服务的作用。RESTful服务应该包含以下某些端点:
刷写设备
完成OOBE
设置wifi等
获取DUT IP地址
现在,对于我们来说,通过无线连接到设备变得简单,设备完全为我们的测试做好了准备。
在发生任何错误或异常时恢复机器人
这是一个非常常见的情况。不要被这类问题所压倒或沮丧。这时候,我们必须使用设备的低级组件将设备驱动回到其原始位置。例如,正如我在之前的文章中提到的各种软件堆栈,我们需要访问平台或移动性层来将机器人驱动回到其原始位置。这是最棘手和最具挑战性的事情,因此使用其他技术,如April Tag或其他外部系统来将设备驱动回来。这使我想到了下一个问题,即将设备放回充电座为下一次测试运行做准备。
扩展到多个测试环境
使用低级命令,将设备放回充电座更加可靠。使用顶层的移动或导航命令与使用平台或移动性层驱动相比,故障率更高而效率更低。
扩展设置到多个测试环境的提示:
保持设置简单。不要过于复杂或过度工程化解决方案。
具有可部署的树莓派映像,以便可以轻松加载任何新的树莓派。
将测试代码放在远程存储库中。将它们移到本地无法扩展。
最后,机器人自动化不是简单的事情,需要大量的设计工作,并且需要考虑市场上的其他选项。没有一种解决方案适合所有情况。我建议在采用最终解决方案之前进行概念验证。
备选方案
由于我们正试图解决的问题的性质和复杂性,容易想到的一个问题是,“是否有其他替代方案?”简短的答案是肯定的。我们可以有效地使用模拟器/仿真器进行测试,以覆盖我们所描述的大部分用例,但是真实设备测试是无法替代的。