发明内容
本发明提供卫星地面自动化测试平台、测试系统及测试方法,用以解决现有技术中平台要求设备端按特定方式工作,导致响应时间变长的缺陷。
本发明提供一种卫星地面自动化测试平台,包括:前端程序模块,包括操作界面;前端程序模块用于通过操作界面获取用户指令;后端程序模块,与前端程序模块连接,包括代码生成及执行子单元;代码生成及执行子单元用于将测试设备提供的功能调用接口处理为JavaScript代码;根据JavaScript代码中的接口函数生成对应的调用图形块;其中功能调用接口包括测试设备在当前版本能够提供的功能、每个功能的调用参数及每个功能的返回结果;JavaScript代码包括卫星地面自动化测试平台对设备提供的接口的函数集合的定义;卫星地面自动化测试平台用于根据用户指令获得由调用图形块构成的测试用例,根据测试用例中的调用图形块的类型和不同类型的调用图形块对应的函数,生成测试指令,并将测试指令发送至对应的测试设备。
根据本发明提供的一种卫星地面自动化测试平台,操作界面包括测试用例编辑界面;后端程序模块包括测试用例编辑后台子单元和文档模板管理子单元;测试用例编辑界面用于根据用户对调用图形块进行拖拽和堆叠的操作,生成用户指令;测试用例编辑后台子单元用于配合测试用例编辑界面,根据用户指令组合调用图形块,得到测试用例;文档模板管理子单元用于在测试用例执行时生成测试文档。
根据本发明提供的一种卫星地面自动化测试平台,操作界面还包括文档模板编辑界面、测试管理界面和系统管理界面;其中,文档模板编辑界面用于设计测试报告,设定运行时生成信息的占位符;测试管理界面用于展示并执行测试用例,预览及下载测试报告;系统管理界面用于实现测试型号管理、测试用例管理、文档管理以及用户管理。
根据本发明提供的一种卫星地面自动化测试平台,后端程序模块还包括系统管理子单元;系统管理子单元用于保存并管理接口定义文件、测试用例模板、文档模块、测试用例。
本发明还提供一种卫星地面自动化测试系统,包括上述的卫星地面自动化测试平台和测试设备;测试设备用于提供相应的测试功能,并根据从卫星地面自动化测试平台接收到的测试指令进行测试。
根据本发明提供的一种卫星地面自动化测试系统,测试设备支持protobuf协议,并使用基于protobuf的协议来描述自身功能的操作及操作对应的参数及返回信息,记录测试设备对应的proto接口定义文件。
本发明还提供一种卫星地面自动化测试方法,应用于上述的卫星地面自动化测试平台,卫星地面自动化测试方法包括:将测试设备提供的功能调用接口处理为JavaScript代码,其中,JavaScript代码包括卫星地面自动化测试平台对设备提供的接口的函数集合的定义;功能调用接口包括测试设备在当前版本能够提供的功能、每个功能的调用参数及每个功能的返回结果;根据JavaScript代码中的接口函数生成对应的调用图形块;根据用户指令获得由调用图形块构成的测试用例;根据测试用例中的调用图形块的类型和不同类型的调用图形块对应的函数,生成测试指令,并将测试指令发送至对应的测试设备。
根据本发明提供的一种卫星地面自动化测试方法,根据用户指令获得由调用图形块构成的测试用例,包括:根据用户对调用图形块进行拖拽和堆叠的操作,生成用户指令根据用户指令组合调用图形块,得到测试用例;在测试用例执行时生成测试文档。
本发明还提供一种卫星地面自动化测试方法,应用于上述的卫星地面自动化测试系统,卫星地面自动化测试方法包括:测试设备将自身的功能调用接口发送至卫星地面自动化测试平台;卫星地面自动化测试平台接收测试设备发送的功能调用接口,其中功能调用接口包括测试设备在当前版本能够提供的功能、每个功能的调用参数及每个功能的返回结果;卫星地面自动化测试平台将功能调用接口处理为JavaScript代码,其中,JavaScript代码包括卫星地面自动化测试平台对设备提供的接口的函数集合的定义;卫星地面自动化测试平台根据JavaScript代码中的接口函数生成对应的调用图形块;卫星地面自动化测试平台根据用户指令获得由调用图形块构成的测试用例;卫星地面自动化测试平台根据测试用例中的调用图形块的类型和不同类型的调用图形块对应的函数,生成测试指令,并将测试指令发送至对应的测试设备;测试设备根据从卫星地面自动化测试平台接收到的测试指令进行测试。
本发明提供的卫星地面自动化测试平台、测试系统及测试方法,通过测试平台适应测试设备的变化,以测试设备的功能来调整测试平台,而非要求测试设备按照特定方法工作,以此协调异构系统之间的协同工作,从而提升测试效率;同时,本发明还可以根据用户指令生成测试用例,通过调用对应的函数生成测试指令,完成测试,因此使得用户输出测试指令的方式更加简便、通过调用图形块的应用,无需用户手动输入函数,为测试提供了便捷。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种卫星地面自动化测试平台,请参阅图1,图1是本发明卫星地面自动化测试平台一实施例的结构示意图,在本实施例中,卫星地面自动化测试平台可以包括前端程序模块20和后端程序模块10。
前端程序模块20包括操作界面;前端程序模块用于通过操作界面获取用户指令。
后端程序模块10,与前端程序模块20连接,包括代码生成及执行子单元11;代码生成及执行子单元11用于接收测试设备发送的功能调用接口,将功能调用接口处理为JavaScript代码;根据JavaScript代码中的接口函数生成对应的调用图形块。
其中功能调用接口包括测试设备在当前版本能够提供的功能、每个功能的调用参数及每个功能的返回结果;JavaScript代码包括卫星地面自动化测试平台对设备提供的接口的函数集合的定义。
可选地,功能调用接口可以是应用程序接口(Application ProgrammingInterface,API),是软件系统不同组成部分衔接的约定。API之主要目的是提供应用程序与开发人员以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。提供API所定义的功能的软件称作此API的实现。
卫星地面自动化测试平台用于根据用户指令获得由调用图形块构成的测试用例,根据测试用例中的调用图形块的类型和不同类型的调用图形块对应的函数,生成测试指令,并将测试指令发送至对应的测试设备。
需要说明的是,测试指令具体是指该函数对应的测试设备功能调用(静态),该调用执行时(动作)驱动设备端执行相应的动作。
本实施例提供的卫星地面自动化测试平台通过测试平台适应测试设备的变化,以测试设备的功能来调整测试平台,而非要求测试设备按照特定方法工作,以此协调异构系统之间的协同工作,从而提升测试效率;同时,本发明还可以根据用户指令生成测试用例,通过调用对应的函数生成测试指令,完成测试,因此使得用户输出测试指令的方式更加简便、通过调用图形块的应用,无需用户手动输入函数,为测试提供了便捷。
在一些实施例中,操作界面可以包括测试用例编辑界面。后端程序模块包括测试用例编辑后台子单元和文档模板管理子单元。
测试用例编辑界面用于根据用户对调用图形块进行拖拽和堆叠的操作,生成用户指令;测试用例编辑后台子单元用于配合测试用例编辑界面,根据用户指令组合调用图形块,得到测试用例;文档模板管理子单元用于在测试用例执行时生成测试文档。
在一些实施例中,操作界面还包括文档模板编辑界面、测试管理界面和系统管理界面。
其中,文档模板编辑界面用于设计测试报告,设定运行时生成信息的占位符;测试管理界面用于展示并执行测试用例,预览及下载测试报告;系统管理界面用于实现测试型号管理、测试用例管理、文档管理以及用户管理。
在一些实施例中,后端程序模块还包括系统管理子单元;系统管理子单元用于保存并管理接口定义文件、测试用例模板、文档模块、测试用例。
本发明还提供一种卫星地面自动化测试系统,包括上述的卫星地面自动化测试平台和测试设备;测试设备用于将功能调用接口发送至卫星地面自动化测试平台,并根据从卫星地面自动化测试平台接收到的测试指令进行测试。
测试设备可以包括但不限于高速数据处理、遥控遥测、信号源、电源等执行具体测试任务的基础设备,设备端软件使用但不限于C++语言编写,可独立完成各自工作,同时各设备软对外开放系统测试时能提供的最小功能集,允许以程控方式运行。
测试设备按通用的接口定义语言protobuf制定各自功能接口定义文件,这些文件定义设备在当前版本能提供的功能,以及每个功能的调用参数及返回结果。设备功能变更时重新提交接口文件,不同阶段的接口文件使用版本号区分。
自动化测试平台使用protobuf工具集中的编译工具将接口定义文件翻译成JavaScript代码,该代码包含对设备端提供的接口的函数集合的定义;使用测试用例编辑的导入子功能,导入JavaScript代码,为每个函数生成调用图形块。
使用测试用例编辑的编辑子功能,根据测试逻辑拖动各设备功能接口对应的图形块,设计测试流程,测试流程支持顺序、判断、循环等操作,支持自定义变量及自定义函数,流程编辑过程中同步生成对应的JavaScript调用代码。
使用文档模板编辑工具,为编写的测试用例设计配套的文档模板,文档中以占位符的方式定义在运行时以实际结果替换的文本信息;提供管理平台使用数据库系统按卫星型号管理上述接口定义文件、测试用例模板、文档模块、测试用例,同时提供权限控制功能,测试记录查询功能。
本实施例的卫星地面自动化测试系统能提供对测试设备全功能支持,针对测试设备提供的功能点,使用JavaScript这种动态语言无需编译直接运行的特点,可以做到支持新增设备或者设备功能变化的即时更新,支持判读方法即时调整,结合测试用例编辑功能及测试管理平台支持下的测试用例管理功能,可以做到一次设计,多次运行的效果,从而减少出错几率,提高测试效率。
请参阅图2,图2是本发明卫星地面自动化测试系统一实施例的结构示意图。
101、102、103、104是组成一个测试设备对应的配套应用程序。高速数据处理软件101用于接收处理卫星载荷输出的高速数据,遥控遥测软件102用于控制卫星载荷工作、查询载荷状态,信号源软件103用于向卫星载荷输出模拟测试数据,电源控制软件104用于为载荷供电。
这些设备都需要和底层硬件设备打交道,基于效率及控制能力考虑,选用C++作为主要开发语言;为支持自动化测试,这些应用程序将自身支持的基本操作引出,使用基于protobuf的协议来描述这些操作以及操作对应的参数及返回信息,记录这些信息的文件即设备对应的proto接口定义文件,该文件经protoc工具翻译成C++语言代码,由上述设备配套程序实现其功能后,这些配套程序即可对外提供远程调用服务。
proto接口定义文件由grpc_node_plugin工具翻译成106、107、108、109对应的JavaScript语言端代码。
具体地,由后端程序模块110中的所示的代码生成及执行子单元111解析并生成对应的接口调用代码块,这些代码块由测试用例编辑后台子单元112使用,对外提供测试用例编辑服务。
文档模板管理子单元113提供自动文档生成服务,为测试用例执行时生成测试文档。系统管理子单元114使用数据库系统按卫星型号管理上述接口定义文件、测试用例模板、文档模块、测试用例,同时提供权限控制功能,测试记录查询功能。
前端程序模块115提供后端程序模块110对应的用户界面。具体地:
测试用例编辑界面116用于提供拖拽式操作,通过堆叠功能块的方式生成测试用例;文档模板编辑界面117用于设计测试报告,设定运行时生成信息的占位符,测试管理界面118用于展示并执行测试用例,预览及下载测试报告,系统管理界面119用于测试型号管理、测试用例管理、文档管理以及用户管理等功能。
图3是本发明卫星地面自动化测试系统中部分测试设备接口一实施例的示意图。
以高速数据处理软件201和遥控遥测软件202为例,展示其支持的接口列表,这些信息记录在对应的proto接口定义文件中。
具体地,高速数据处理软件201的接口服务可以包括查询测试方案列表、切换测试方案、查询当前节点及参数列表、设置处理节点参数、设置存储参数、启动、查询运行状态、停止、其他查询、设置接口定义、图形相关口定义等等。
遥控遥测软件202的接口服务可以包括查询设备列表、查询设备支持的指令列表、查询指令参数列表、设置指令参数并发出指令、发送自定义指令、查询遥测分类、查询遥测分类中遥测项列表、查询遥测数值等等。
图4是本发明接口文件到C++和JavaScript系统一实施例的处理流程图,描述从接口定义文件到远程过程调用的测试平台和测试设备的功能实现,以及到测试用例的应用过程。
protobuf提供的工具集支持的编程语言包括:C++、C#、Dart、Go、Java、Kotlin、Python、JavaScript、Ruby、PHP等,支持上述语言的软件系统可以方便的集成到自动化测试平台,高速数据处理软件201和遥控遥测软件202使用C++语言开发,在302处,使用protoc工具将proto接口定义文件翻译成305处的C++接口类和C++数据结构类,将生成的文件导入到304处相应的工程目录下,从接口类派生出业务类,完成接口业务逻辑编码,使用grpc加载业务类,对外提供远程调用服务,即完成307处的C++端应用程序;在303处,使用grpc_node_plugin工具将proto接口定义文件翻译成306出的JavaScript的接口和数据结构定义,经308处的Web后端代码自动生成的接口功能调用块,在309处的测试用例编辑界面按测试流程的操作逻辑组合后,即可生成310所示的测试用例文件,该文件中包含的设备相关的代码,作为远程过程调用的测试设备部分,和307处的C++端远程调用测试平台通讯,完成测试设备的功能调用。
图5是本发明中代码自动生成一实施例的流程图。上述308所示Web后端代码自动生成模块由图5构成,代码自动生成的主体框架基于Web Blockly,306所示JavaScript端接口及参数定义文件作为输入,402处可枚举出其支持的方法及各方法对应的参数,403处系统使用UUID来标识每一个对象实体,相应生成可拖动的块对象,块对象包括形状、颜色、连接方式、输入、输出、字段、侦听器、状态配置等属性,其中形状和颜色定义块的外观、连接方式根据其是否有返回值设置为可连接其他变量还是作为单独作为语句使用,输入/输出对应对应接口的输入输出参数,字段、状态配置和侦听器提供快对象状态改变事件的支持,为上述块对象添加生成器函数,该函数用于定义生成块的代码字符串逻辑、以函数的参数为块对象,通过该对象可以获得块上绑定或者输入的字段属性值、按照定义好的函数规则逻辑拼接组成404所示要执行的代码。
请参阅图6,图6是本发明中测试用例编辑界面一实施例的流程图,由多个设备端支持的测试用例编辑界面构成,501所示设备功能调用块集合即各设备在402处生成的功能块,在502处按设备功能分类,为每个设备生成一个标签,该设备提供的功能接口在503处放置于该标签下,设备功能标签下的每一个功能块,504为其参数生成输入控件并与功能块关联;上述功能块是设备操作的基本单位,在执行一个具体的测试动作时经常会涉及到多个设备的多个功能块,如设备上电后需要执行一系列的初始化指令、高速数据处理软件需要设置各节点处理参数、系统参数以及存储参数后再开启采集任务,如果测试用例中这些步骤每次使用设备功能接口逐项罗列,操作不仅繁琐且很容易出错,505提供的自定义函数代码生成功能是为解决这个问题设计的,自定义函数可以把一系列操作封装在一个函数中,一次开发多次调用;506自定义变量和判断、507循环功能代码可以支持复杂的逻辑,此特性对数据判读来说尤为重要,测试过程中判读方法更新及复杂的判读方式由此得以支持;上述各功能模块经Blockly整合,生成508所示测试用例编辑界面,在此界面中按测试流程拖拽上述模块中的接口功能,经由一系列的赋值操作、逻辑控制,即可生成509中测试用例对应的JavaScript代码。
以上是自动化测试的核心部分,即设备端按自身的控制粒度导出应用接口,自动化测试平台集成并使用这些接口生成JavaScript测试脚本,测试脚本交由JS-Interperter执行。为方便用户使用,作为一个完整的系统还需要一个数据库系统,提供测试管理功能,具体如图7所示,整个系统由底层支撑部分、Web后端(后端程序模块)及Web前端(前端程序模块)构成,底层由Redis提供数据缓存服务,MySQL提供数据持久化存储服务,以及各测试设备提供的RPC服务;Web后端提供型号管理、设备管理、测试管理、用户管理、测试用例管理、测试文档管理以及JS-Interpreter沙箱以运行测试用例;Web前端包括用户操作界面和测试用例编辑界面,采用VUE3.0+ElementPlus编写。
本发明还提供一种卫星地面自动化测试方法,应用于上述的卫星地面自动化测试平台,请参阅图8,图8是本发明应用于卫星地面自动化测试平台的测试方法一实施例的流程示意图。在本实施例中,卫星地面自动化测试平台测试方法可以包括步骤S110~S150,各步骤具体如下:
S110:接收测试设备发送的功能调用接口。
其中功能调用接口包括测试设备在当前版本能够提供的功能、每个功能的调用参数及每个功能的返回结果。
S120:将功能调用接口处理为JavaScript代码。
其中,JavaScript代码包括卫星地面自动化测试平台对设备提供的接口的函数集合的定义。
S130:根据JavaScript代码中的接口函数生成对应的调用图形块。
S140:根据用户指令获得由调用图形块构成的测试用例。
可选地,根据用户对调用图形块进行拖拽和堆叠的操作,生成用户指令根据用户指令组合调用图形块,得到测试用例;在测试用例执行时生成测试文档。
S150:根据测试用例中的调用图形块的类型和不同类型的调用图形块对应的函数,生成测试指令,并将测试指令发送至对应的测试设备。
本实施例的具体步骤和方案可参阅上述实施例,在此不多赘述。
本发明还提供一种卫星地面自动化测试方法,应用于上述的卫星地面自动化测试系统,请参阅图9,图9是本发明应用于卫星地面自动化测试系统的测试方法一实施例的流程示意图。在本实施例中,卫星地面自动化测试平台测试方法可以包括步骤S210~S270,各步骤具体如下:
S210:测试设备将功能调用接口发送至卫星地面自动化测试平台。
S220:卫星地面自动化测试平台接收测试设备发送的功能调用接口。
其中功能调用接口包括测试设备在当前版本能够提供的功能、每个功能的调用参数及每个功能的返回结果。
S230:卫星地面自动化测试平台将功能调用接口处理为JavaScript代码。
其中,JavaScript代码包括卫星地面自动化测试平台对设备提供的接口的函数集合的定义。
S240:卫星地面自动化测试平台根据JavaScript代码中的接口函数生成对应的调用图形块。
S250:卫星地面自动化测试平台根据用户指令获得由调用图形块构成的测试用例。
S260:卫星地面自动化测试平台根据测试用例中的调用图形块的类型和不同类型的调用图形块对应的函数,生成测试指令,并将测试指令发送至对应的测试设备。
S270:测试设备根据从卫星地面自动化测试平台接收到的测试指令进行测试。
本实施例的具体步骤和方案可参阅上述实施例,在此不多赘述。
综上,本发明应用于卫星整机或单机的测试,各测试设备使用proto文件描述各自的功能点,卫星地面自动化测试平台使用这些文件进行集成,为每种设备的每个接口生成相应的调用图形块,供测试人员编写测试用例,测试用例在执行时根据当前的图形块生成的JavaScript代码调用相关的测试设备功能来驱动设备执行相应的动作完成测试工作。本发明的测试平台可以根据测试设备的功能来调整测试平台,即平台适应设备的变化,以此协调异构系统之间的协同工作,从而提升测试效率。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。