查看: 532|回复: 0

自治系统的模型蜕变测试

[复制链接]

331

主题

359

帖子

1021

积分

金牌飞友

Rank: 6Rank: 6

积分
1021
飞币
660
注册时间
2017-7-6
发表于 2022-11-9 23:00:24 | 显示全部楼层 |阅读模式
自治系统的模型蜕变测试-1.jpg

引用

Lindvall, Mikael, Adam Porter, Gudjon Magnusson, and Christoph Schulze. "Metamorphic model-based testing of autonomous systems." In 2017 IEEE/ACM 2nd International Workshop on Metamorphic Testing (MET), pp. 35-41. IEEE, 2017.

一、摘要

        当无法轻易确定测试的系统传出的结果是否正确时,测试将变得困难。自治系统就是一个很好的例子,因为很难确定安全关键的自治系统的行为是否符合其规范。为了解决自动系统行为很难确定是否符合要求的问题,作者开发了一个框架,该框架使用蜕变测试原理结合基于模型测试,对一个模拟自动无人机系统进行自动测试。基于使用该框架在模拟器中去测试无人机得到的结果,作者确定这是经济高效的解决方案,通过该方案可以进行全面测试,而不需要开发复杂的测试基础设施来确定详细的测试准则。其测试用例是由一组测试模型自动生成的,其中每个模型编码一个特定的场景,该场景可以根据蜕变原则进行更改。

二、解决的问题

        自动化系统难以确定测试准则,导致测试变得十分困难。

三、实验方法

        测试框架由3部分组成:无人机AI控制器(即SUT),仿真环境(能够可视化无人机在真实环境中的操作,并模拟其所有的传感器),测试API(允许去运行模拟,配置系统行为并监督系统状况)。本文选择为四旋翼飞行器(即无人机)设计一个控制器,该控制器具有人工智能(AI)行为,允许无人机在没有任何人工干预的情况下递送包裹并返回基地。为了创建一个仿真模拟,必须模拟以下传感器:惯性测量单元(IMU)、气压计、GPS、照相机、光探测和测距(激光雷达)和超声波测距仪。对于执行机构,实现了对机动螺旋桨的仿真,使用4轴配置。由于多轴是不稳定系统,因此无人机需要一个飞行控制器。在这个项目中,使用了三个互补的飞行控制器:ArduPilot Mega,Parrot AR 2和一个自定义控制器SimpleQuad(由Fraunhofer实现)。

        1)模拟器环境:使用游戏引擎Unity实施,该引擎用于创建逼真的交互式3D可视化效果。由于目标是分析给定场景中AI控制器做出的决策,而不是飞行控制器的精确属性,因此仿真重点是传感器的保真度,而不是物理和空气动力学。模拟器和测试框架是分离的,因此本文的测试生成和测试监控工具可以与其他仿真平台一起使用。测试框架通过发布/订阅消息总线与模拟器进行通信,这有助于添加独立于语言或平台的新组件。

        2)测试API:在无人机测试框架中,添加了一个API,该API允许编写JUnit测试用例,这些用例将在模拟环境中生成新的无人机并执行任务。

        3)测试策略:为了解决缺乏足够测试场景和难以定义正确行为的问题,创建了基于蜕变测试和基于模型测试的测试策略。基于模型测试能够从系统行为模型中生成大量测试用例,从而无需为能想到的每种可能的情况编写测试用例的代码。蜕变测试不需要测试人员事先指定详细的预期结果。取而代之的是,蜕变测试会比较大量等效方案,这些方案的结果应基于某些属性等效。

        考虑到自主系统的安全性,自主无人机的测试方法必须包括从安全角度进行的测试。为了确保满足基本安全要求,需要能够测试是否正确实施了安全功能(例如,感知和避免算法),并通过避免出现不安全情况来带来价值。

        此外,用了一种称为安全笼的概念进行实验,以提高安全性。安全笼是在检测到不安全状况时立即采取的最后措施。文中定义了三个安全笼,一个安全笼在检测到无人机离障碍物太近时将其停下,一个阻止无人驾驶飞机到达一定高度时进一步上升,另一个安全笼阻止无人机将速度增加到超过特定限制。无人机将监视并记录这三个变量,以供以后分析。

        4)蜕变测试:首先定义感兴趣的场景的模型,并在给定该场景的情况下观察系统行为。接下来,基于已确定的蜕变关系,以编程方式生成原始场景的多个变体。在测试过程中,收集了大量数据,这些数据能够用来比较无人机在不同测试运行中的行为。

        5)基于模型测试:基于模型的测试(MBT)是用于测试自动化的测试用例设计和测试用例生成技术。测试人员不必一次创建一个测试用例,而是创建SUT的模型,并让计算机通过探索模型自动得出测试用例。在自主系统的情况下,该模型是基于用于配置环境的高级命令的规范而设计的,该高级命令用于设置具有着陆垫和不可移动的障碍物的环境以及用于定义任务的无人驾驶飞机的指令,例如飞向着陆平台并返回,同时避开障碍物。在这种情况下,每个测试用例代表一个这样的任务,并且将预期输出与实际输出进行比较将提供oracle。

        6)等效:确定用于创建模型的等效项。等效场景是在至少一个方面不同的场景,但是由于等效,因此它们应导致相同的总体行为。本文确定的等效项有:跨运行、旋转、转换、障碍物位置、障碍物编队。

        7)研究的属性:由于传感器噪声和物理系统的不确定性,直接比较传感器的值、时间或位置是没有用的。、因此,本文进行泛化,看看总体行为和高层决策是否相同。为了做到这一点,确定了一些比较好用的属性。例如,比较相同条件下无人驾驶飞机是否违反安全限制(接近障碍物,高度,速度)的次数相同;比较无人机处于不安全状态的时间,并在此基础上形成蜕变关系;比较无人机采用的路径的一般形状是否有显著不同;比较无人机穿越的状态空间。

        8)测试用例生成:测试用例由测试环境和测试任务组成。两者均可手动构建或自动生成。环境包含原始对象(例如树木,着陆板和建筑物)及其位置的列表。任务是一系列应依次执行的动作。为了生成一组测试用例,首先手动构建一个环境。接下来,使用前面提到的转换生成该环境的大量变体。可以手动构造任务以匹配环境,也可以使用有效动作序列模型生成任务。图1显示了一个基于旋转等价的等效测试用例测试集生成的简化模型。

自治系统的模型蜕变测试-2.jpg

        图1 一个基于旋转等价的等效测试用例测试集生成的简化模型

四、实验结果

1)测试场景

        为了完成运送包裹并返回的任务,无人驾驶飞机需要从一个降落平台(L1)起飞,导航到另一个降落平台(L2),同时避免沿途有树木(即障碍物),降落在L2,然后,按照相反的相同步骤,飞回L1。图1提供了一个简化的示例模型。在整个研究过程中,使用了相同的基本任务,但尝试了各种不同形式的障碍物和环境的各种变化。重点是看环境如何影响导航性能和无人机避障。为了生成测试方案的变体,通过更改模型来应用不同的蜕变原理。

为了检测蜕变偏差,使用半自动方法,记录每个测试用例的结果并自动将其可视化,以便于对其进行直观检查。图2显示了自上而下的可视化效果,其中蓝色正方形是着陆区,红色圆圈是障碍物,黑色线显示了无人机飞行的路径。在仿真世界中,每条网格线代表一米。

如果将世界旋转360次,则结果为360张图表,然后,根据旋转顺序自动从图中创建一个图像序列,显示为“视频”,这使得仅通过观看视频就可以轻松发现偏差和不一致。因此,测试人员将启动测试套件,该套件将在夜间自动运行。第二天早上,测试人员观看视频(需要2分钟才能观看)并记录潜在问题。然后,测试人员通过分析状态转换(脱离,不安全接近等),通过分析日志文件中存储的数字数据和/或通过重新运行一组可能带有某些变体的测试用例来更好地理解问题的潜在的原因是什么(例如,如果稍微移动着陆垫,不一致还会持续吗?)。测试人员还可能会分析使用中的“感知和避免”算法,以便弄清不一致的根本原因。

2)发现

在一种情况下,基于拱形结构中的三个障碍物建立了一个模型,中心障碍物位于发射台和着陆台之间。然后,通过将该场景以1度为增量旋转360次来生成测试用例。然后,比较了所有旋转角度的结果。由于所有测试方案都是相同的,因此希望每种方案的无人机行为都完全相同。但是,事实并非如此。在旋转25度和旋转27度时,无人机选择了截然不同的路径。旋转25度时飞向障碍物右侧,旋转27度时则飞向障碍物左侧,两者都可能被认为是有效的,但这种行为是不稳定的。在另一个场景中,无人机没有避开障碍物,而是径直飞进了障碍物,然后坠毁了。

结果表明,“感知和避免”算法对某些数值比较敏感,因此表现不佳。这一发现使得无人机开发者能够改进算法,使其更加稳定和安全。改变之后,无人机通过了所有的测试用例,对其安全性能的信心也随之增加。

在运行了数百个测试用例以覆盖环境的不同轮换之后,发现除了在某些情况下崩溃以外,还存在无人机在某些情况下无法着陆。经过仔细分析情况,结果是旋转了场景中的所有对象,但没有旋转阳光的方向。这导致阴影在某些方向上落在着陆板上,并导致视觉系统无法识别着陆板。在随后的测试中,使用了一种更强大的视觉传感器,它对光线的变化不那么敏感,但却能保持太阳的位置。

还测试了一个场景,将图中的场景旋转了90度(东),180度(南)和270度(西),并比较了结果。所有测试均成功完成,但令人惊讶的是,无人机的行为并不相同。对于某些测试,无人驾驶飞机飞向障碍物的左侧,而对于另一些测试,它似乎是以随机的方式向右飞行的,无法预测将要走的路线。在运行了许多具有线路设置的测试之后,意识到这种类型的设置可能是一个特例。决定以某种方式更改线路测试的设置,以使着陆垫向右或向左倾斜一定角度。在此更改之后,测试变得更加可预测。对于偏移为1度的测试,与形成直线的测试(无偏移)相比,测试的可预测性更高。2度偏移使测试更加可预测,当尝试3度时,可以完全预测(99%)无人机是遇到的第一个障碍物的左侧还是右侧。这些结果证实已经确定了一个极端情况。

自治系统的模型蜕变测试-3.jpg

图2 可视化的一个测试用例,其中世界已经旋转25度。


五、总结

        本文提出了一种测试无人机等自主系统的方法。该方法基于结合蜕变原理的基于模型的测试。通过构建仿真无人机控制器,建立仿真环境和测试API,所形成的测试框架可以自动确定测试准则,并可以根据模型自动生成等效场景,构建等效测试变体。通过实验发现,在将测试场景进行旋转后,无人机可能出现行为不一致的情况,甚至撞上障碍物坠毁。所提出的测试方法显示出识别实际系统行为与预期行为不匹配的极端情况的潜力。解决了极端情况并通过了所有测试用例后,蜕变测试方法增加了对自治系统的信心。

六、未来工作

        作者计划向框架中添加功能,使得能够使用飞行过程中移动的障碍物(例如其他无人机的形式)在模拟器中测试无人机。作者还将在测试场景中增加风和其他物理条件,并且还将测试本文概述的更多变形关系。

致谢

本文由南京大学软件工程系2019硕士生张晓波翻译转述。

感谢国家自然科学基金项目(重点项目)智能软件系统的数据驱动测试方法与技术(61932012)资助
您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

快速回复 返回顶部 返回列表