首页/文章/ 详情

技术讲堂:用TestManager对GCAir工程进行自动化测试

1年前浏览920

摘要

在之前的文章《GCKontrol PythonAPI自动化测试应用案例》介绍了自动化测试的优势与具体应用案例,以及后续的Jenkins集成。在本文中我们将讲述另一款基于GCAir仿真平台的自动化测试工具——TestManager(TM),TestManager在仿真自动化测试中起着非常重要的作用,与Python API不同的是TestManager适合更多复杂的仿真集成应用场景,下面将详细介绍TestManager的基本功能以及两个应用案例。

01

TestManager

TestManager

1 TestManager概述  

TestManager是一款基于GCAir仿真平台的自动化测试工具,支持全虚拟测试和半实物仿真,可对GC工程所有的变量或参数,在不同场景下,自定义多个基于参数化的测试用例,并最终生成多种格式的报告。  

1.1产品架构  


图 TestManager架构  

TestManager将继承多种GCAir工程的配置。TestManager支持对GCAir集成的复杂工程做自动化测试,包括使用复杂模型库实例化的GCAir工程;支持全虚拟和半实物的仿真引擎,TestManager的测试用例运行在实时仿真机上,在单个步长内的测试数据与实时模型同步;TestManager完整复用GCAir 2D面板中的所有控件,以便于在自动化测试中实时观测数据。  

TestManager的测试用例基于图形化界面开发。用户在界面上定义测试用例的操作步骤,对重点模型参数进行不同组工况的数据配置,规定测试用例工况的pass或fail判断,对实时数据与期望数据进行用例曲线配置,最终生成的数据报告用于后续的数据分析。  

1.2自动化测试流程

图 测试流程  

1)测试需求分析及计划——细分测试场景以及用例    

在本阶段,需要对系统功能需求进行梳理,划分出可以进行自动化测试的需求,划分的标准一般是简单、重复性高、业务复杂度低的需求。需要确定测试覆盖率以及自动化测试粒度、测试用例上的筛选等。

测试始于测试目标和测试策略的建立,测试策略应该满足测试目标的要求。TestManager支持多个GC工程进行多场景、多用例工况的测试策略设计。每个GC工程可以配置多个测试场景,每个测试场景可以配置多个测试用例,每个测试用例可以配置多个工况,在测试执行阶段会依次执行每个工况。

图 多个测试工程  

2)测试设计——设计测试工况以及脚本    

在TestManager中比较重要的一个环节是定制基于参数化的测试用例,软件支持三种用例方式:

图 创建用例  

CSV数据文件    

在创建测试用例时,选择测试数据为导入CSV类型,即可创建CSV测试用例。可以在创建时选择导入输入文件和对应期望,也可以创建用例后再进行文件的导入。

图 导入CSV文件  

工作流程:

图 导入CSV测试流程  

② 导入Python    

在创建测试用例时,选择测试数据为导入Python,即可创建导入Python类型的测试用例。

图 导入Python  

工作流程:

图 导入Python脚本流程  

③ 创建Python脚本    

在创建测试用例时,选择测试数据为创建Python脚本类型,即可创建Python测试用例。测试用例脚本编辑器用于新建和编辑测试用例脚本,能够快速添加变量,快速设定测试步骤,以及语法检查。使用此方式进行配置的信息,会在报告中详细列出。

图 创建Python  

工作流程:

图 创建Python流程  

④ 故障参与仿真    

选中测试对象时,可以查看该*.gc文件的故障列表,并进行故障影响值的设置。故障影响的变量和故障类型无法修改,但对应的影响值可以修改。修改影响值后,该测试对象下所有使用该故障进行仿真的用例,均使用此处设置的故障影响值进行仿真。

图 故障列表与影响值  

每一个测试用例都可以进行故障触发时间的设置。触发时间设置支持两种方式:固定数值配置与区间取值配置。

图 设置故障触发时间  

3)测试执行——仿真    

随着测试计划的建立和测试环境的搭建完毕,按照测试程序进度安排执行测试,可以通过手动、自动或半手动半自动方式执行,它们各自可以发现不同类型的错误。

GCAir支持全虚拟与半实物仿真。GCAir半实物仿真系统由GCAir实时仿真机、数据总线板卡和数据总线线缆等多个部分组成。半实物仿真 主要优势是能在实验室进行系统测试,对系统环境模拟的比较精确,具有提高系统研制质量、缩短研制周期和节省研制费用的优点。

TestManager的仿真测试环境与在GCAir中的仿真环境一致。TestManager的测试用例运行在实时仿真机上,在单个步长内的测试数据与实时模型同步。  

4)测试总结——曲线与报告  

① 曲线配置    

TestManager支持对全局工程级别和测试用例级别的曲线配置。全局曲线配置完成后,对所有测试用例均生效,展示在所有测试用例曲线展示区的上方。用例曲线配置则针对某个特别的用例进行单独配置。曲线配置支持配置别名,别名为空的时候,曲线图里上显示的是变量名。用户还可以设置变量曲线的展示颜色,输出变量同步展示对应的预期数据曲线。

图 配置曲线别名  

执行仿真前,选择需要关注的曲线,在仿真结束后可以看到每个工况的曲线以及该工况的期望曲线,这些数据可以进行后续的分析。  

② 测试报告    

仿真结束后根据需要,可以生成测试结果的CSV表格、PDF报告或HTML报告,报告内容包括测试对象、场景、用例的信息,以及测试用例的仿真结果和曲线。

图 报告——首页

报告的首页会显示此次测试的整体情况,例如测试对象:GC工程的名称、测试场景、测试结果、总计:测试的工况数量。

图 报告——测试概述与场景  

测试对象概述描述了测试的基本信息,例如测试对象信息、场景总数、用例总数和仿真执行时长信息等。对于每个场景,再细分每个用例的情况,例如测试用例信息、与用例有关的文件信息和仿真执行时长信息等。

图 报告——工况信息  

对于每个工况都有对应的报告信息。在测试用例设计——创建Python脚本方式时,进行的自定义配置信息会在报告中有所体现。例如对步骤配置的别名、每个状态对应的表达式以及在通过条件中,是否Pass或Fail。在参数信息中,展示工况对GC工程中每个Parameter的数据配置。  

图 Python配置显示在报告中  

02

设备自动化测试

TestManager

2.1 被测对象

在TM中可选GCAir工程作为测试对象。GCAir工程中用DO模块输出的数字量作为DI模块的输入,DA模块输出的模拟量作为AD模块的输入,数字量、模拟量的输出/输入均通过EtherCAT模块实现,通过Linux实时仿真机进行仿真。

图 被测对象  

2.2 测试说明

将GCAir工程作为测试对象,根据实际情况分为DO_DI、AO_AI、SOV、RDDV四个场景,每个场景下再分为多个测试用例,每种测试用例对应一种需求,实现层次化管理。

图 场景

用例  

2.3 测试用例

将DO、DA模块的设置值作为输入数据,将DI、AD模块的采样值作为期望数据,将输入、输出信号分别与EtherCAT的通道绑定,并设置输出信号的容差。支持三种创建输入和期望数据的方式:导入CSV、导入Python、创建Python脚本。本次测试采用导入CSV文件的方式。

图 导入CSV

图 CSV文件  

2.4 测试过程

在TM中既可实现单个用例的自动测试,也可实现对整个工程的自动测试,并在TM界面中显示测试进度。

图 测试进度  

2.5 测试结果和数据

测试结果将会实时显示在界面上,并可一键将测试数据导出为CSV文件,方便查看,并能根据设置自动绘制期望曲线和实际曲线,可以直观地查看存在的偏差。

图 测试结果

图 测试产生的CSV文件  

2.6 测试报告

可根据测试结果一键生成测试报告,支持HTML格式和PDF格式。报告首页如下:

图 测试报告首页  

03

六自由度飞行器末端比例导引压力测试

TestManager

TestManager可以进行复杂工程在多种场景下的压力测试。本示例使用GCAir系统建模工具,将飞行器各部件的仿真模型进行封装,建立了六自由度飞行器的模型库,而后在系统页面中进行了比例导引控制回路仿真系统集成,并将仿真结果经过3DRENDERING接口传递给FlightGear,然后进行仿真,展示了完整的建模仿真流程。

本示例展示了一个能够对飞行器"末段比例导引"追踪机动目标的过程进行分析的六自由度飞行器控制系统仿真工程。该工程中包含了能够参数化配置的机动目标、飞行导引、六自由度飞行体、飞行器计算机以及简化的舵机模型。该示例的目标是在不同初始条件及杀伤半径的情况下,对末段追踪的脱靶量控制效果以及飞行效果概率进行分析评估。

图 模型系统架构图  

将上述GCAir模型导入到TestManager中,添加两个测试用例,两个测试用例使用导入Python,编辑脚本的方式来进行。Python脚本中大致内容相同,只是在对目标法向过载幅值与侧向过载幅值二者传输的信号波形不同:  
用例1    
参数:将目标初始速率设置为200m/s,并在每一次仿真中增加20m/s,直到初始速率达到260m/s为止;将目标初始位置X坐标设置为1000,并在每一次仿真中增加500,直到目标初始位置X坐标达到1500为止;将目标初始位置Y坐标设置为4000,并在每一次仿真中增加400,直到目标初始位置Y坐标达到4400为止。

Python脚本:此脚本对目标法向过载幅值与侧向过载幅值二者传输正弦波信号

图 Python脚本

图 正弦波信号  

用例2  
参数:将目标初始速率设置为250m/s,并在每一次仿真中增加50m/s,直到初始速率达到300m/s为止;将目标初始位置Y坐标设置为4000,并在每一次仿真中增加500,直到目标初始位置Y坐标达到5000为止;将目标初始位置Z坐标设置为2000,并在每一次仿真中增加500,直到目标初始位置Z坐标达到2500为止。
Python脚本:此脚本对目标法向过载幅值与侧向过载幅值二者传输线性信号。  

图 Python脚本

图 线性信号  

配置好用例,将上述两种用例进行复 制粘贴操作,并对每一个用例的数据进行微调,保证每个用例可以有不同的测试结果。
测试结果:本次测试的工况组合一共588个,测试结果为483个Pass,0个Error,105个Fail,0个Cancel。  

04

总结

TestManager

以上两个应用案例可以证明TestManager可以对半实物仿真、全虚拟仿真进行测试,并且支持多种测试场景,每一个测试场景下对应的测试用例,根据用户选择的测试方式,来生成工况,最终生成报告用于后续的数据分析。

世冠科技成立于2003年,是一家专业从事工业软件系统仿真技术开发与应用的国家级高新技术企业,北京市企业科技研究开发机构、专精特新企业。为复杂装备研制单位和工业制造企业,提供可支撑产品设计研发及使用运维、覆盖产品全生命周期的完全自主研发的系统仿真工业软件和数字孪生解决方案,是国产系统仿真软件领域的领军者。

来源:世冠科技
系统仿真汽车数字孪生控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-05-29
最近编辑:1年前
世冠科技
国内领先的系统仿真工业软件和数...
获赞 15粉丝 15文章 137课程 1
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈