首页> 中国专利> 伺服系统控制软件的自动化测试方法、装置及存储介质

伺服系统控制软件的自动化测试方法、装置及存储介质

摘要

本申请公开了一种伺服系统控制软件的自动化测试方法、装置及计算机可读存储介质。运行于labview平台的方法包括:创建包括前面板和多个子VI的测试用例生成模板,子VI为舵机信号转换子VI、生成校验和子VI、指令类型识别子VI或表生成子VI。将待测试项目的测试参数、测试条件和相应预期结果填充至前面板的相应位置,基于指令类型调用labview的字符串连接工具和各子VI自动生成测试用例指令;指令类型包括常规指令、巡查指令和拼接指令。当检测到测试请求,自动将从测试用例表中读取的相应测试用例发送至控制器,根据控制器反馈的测试数据和对应预期结果自动生成测试结果,从而实现了伺服系统控制软件的全自动化测试,有效提高了伺服系统控制软件的测试效率。

著录项

  • 公开/公告号CN112506759A

    专利类型发明专利

  • 公开/公告日2021-03-16

    原文格式PDF

  • 申请/专利号CN202011320815.X

  • 申请日2020-11-23

  • 分类号G06F11/36(20060101);

  • 代理机构11227 北京集佳知识产权代理有限公司;

  • 代理人刘新雷

  • 地址 611100 四川省成都市温江区柳城长安路198号

  • 入库时间 2023-06-19 10:16:30

说明书

技术领域

本申请涉及软件测试技术领域,特别是涉及一种伺服系统控制软件的自动化测试方法、装置及计算机可读存储介质。

背景技术

伺服系统用来精确地跟随或复现某个过程的反馈控制系统,伺服系统使物体的位置、方位、状态等输出被控量能够跟随输入目标或给定值的任意变化的自动控制系统。在伺服系统中,舵机能否按指令规定动作进行运动、是否能主动识别错误指令等功能,主要通过其控制软件进行控制,控制软件代码是否能满足任务要求至关重要。因此,对控制软件功能的测试必不可少,测试软件功能通常需要设计测试用例,测试用例根据测试的功能不同大致将测试用例归纳三大类型:常规指令、巡查指令和拼接指令,常规指令又包含:帧头错误,类型ID错误,校验和错误,指令干扰,超行程指令。然后对所设计的测试用例逐条进行测试。

相关技术在对伺服系统控制软件进行软件测试过程中,首先需要依赖软件测试工程师根据测试功能进行测试用例的设计,再通过串口助手逐条进行测试。由于测试用例种类繁多,测试用例编写时间较长,测试过程重复性操作多,操作繁琐,不但增加了人力消耗,效率还低,且在编写测试用例的时候,也会出现计算错误,导致测试用例不准确,无法正常测试代码功能。

鉴于此,如何提高伺服系统控制软件测试的测试效率,有效控制成本,是所属领域技术人员需要解决的技术问题。

发明内容

本申请提供了一种伺服系统控制软件的自动化测试方法、装置及计算机可读存储介质,实现了伺服系统控制软件的全自动化测试,提高了伺服系统控制软件的测试效率,可有效控制成本。

为解决上述技术问题,本发明实施例提供以下技术方案:

本发明实施例一方面提供了一种伺服系统控制软件的自动化测试方法,运行于实验室虚拟仪器工程平台labview,包括:

预先创建包括前面板和多个子VI的测试用例生成模板;

将待测试项目的测试参数、测试条件和相应预期结果填充至所述前面板的相应位置,基于指令类型调用所述labview的字符串连接工具和各子VI自动生成测试用例指令;所述指令类型包括常规指令、巡查指令和拼接指令;

当检测到测试请求,自动将从测试用例表中读取的相应测试用例发送至控制器,根据所述控制器反馈的测试数据和对应预期结果自动生成测试结果;

其中,所述子VI为舵机信号转换子VI、生成校验和子VI、指令类型识别子VI或表生成子VI;所述舵机信号转换子VI调用labview控件将各舵机实际行程数转换为对应的十六进制字符串;所述生成校验和子VI根据待计算字符串调用labview控件生成校验和;所述表生成子VI根据所述待测试项目调用labview控件生成测试用例表。

可选的,所述前面板包括多个舵机位置信息输入框,所述舵机位置信息为十进制表示的相应舵机的实际行程数;所述舵机信号转换子VI调用labview控件将各舵机实际行程数转换为对应的十六进制字符串的过程包括:

获取对实际位置进行数据变换的精度信息,所述精度信息为000~ZZZ表示0°~M°,XXX~YYY表示-N°~0°;

对每个舵机实际行程数,调用正负值判断控件判断当前舵机实际行程数为正数还是负数;

若所述当前舵机实际行程数为正数,调用公式控件计算l*s

可选的,所述生成校验和子VI根据待计算字符串调用labview控件生成校验和的过程包括:

利用所述labview的字符串至字节数组转换控件将所述待计算字符串转换为字节数组;

利用强制转换控件先将所述字节数组转化为十进制数组,再转换为无符号双字节整形;

利用数组元素相加控件将所述无符号双字节整形数组里的元素相加,得到元素和;

利用数据拆分控件将所述元素和拆分为高八位和低八位;

利用所述强制转换控件将拆分后的元素和转化为十六进制字符串,并根据要求将转化的十六进制字符串连接起来生成校验和。

可选的,所述表生成子VI根据所述待测试项目调用labview控件生成测试用例表的过程包括:

将各测试参数利用所述字符串连接工具生成指令字符串;

调用所述指令类型识别子VI判断是否生成指令类型为拼接指令类型还是巡查指令类型;

若为拼接指令格式,将所述指令字符串拆分为两个子指令字符串,作为测试拼接指令;若为巡查指令格式,将所述指令字符串拆分为两个子指令字符串后再与所述指令字符串进行整合生成新指令字符串,作为测试巡查指令;若为常规指令格式,不作处理直接输出所述指令字符串;

将所述指令字符串或所述测试拼接指令或所述测试巡查指令或常规指令与相应的测试条件和预期结果生成指令数组,并将所述指令数组插入至待显示数据对应二维数组中,以在所述前面板中显示当前生成的测试用例指令;

当接收到报表保存请求,将所述前面板中的各测试用例指令存储至所述测试用例表中。

可选的,所述在所述前面板中显示当前生成的测试用例指令之后,还包括:

当接收到清除上一条数据的请求,调用数组元素删除控件将所述二维数组中最后一行数据删除,并生成新二维数组;

当接收到清除所有数据的请求,将所述二维数组进行初始化,以清除所述二维数组中的所有数据。

可选的,所述自动将从测试用例表中读取的相应测试用例发送至控制器包括:

从所述前面板读取所述测试用例表的存储路径和各测试条件,所述测试条件为发送间隔条件或上电操作条件;

根据所述存储路径调用表格数据读取控件从所述测试用例表中读取各测试用例指令;

若所述发送间隔条件为连续发送指令,依次将各测试用例指令通过VISA写入控件发送给所述控制器;

若所述发送间隔条件为不连续发送指令,判断所述上电操作条件是否为需要重新上电,若需要重新上电,向用户展示重新上电操作提醒信息,当接收到上电完成指示信息,将当前测试用例指令通过所述VISA写入工具发送给所述控制器;若不需要重新上电,当接收到指令发送指示信息,将当前测试用例指令通过所述VISA写入工具发送给所述控制器。

可选的,所述根据所述控制器反馈的测试数据和对应预期结果自动生成测试结果包括:

通过VISA读取控件从所述控制器中读取各舵机执行测试用例指令后的反馈结果数据,并根据预设反馈格式读取每一条反馈结果数据的有效数据;

所述测试条件为连续发送指令,若所述预期结果为舵机不响应且无反馈,利用字符串长度控件判断当前反馈结果数据的有效数据的数据长度是否为0,若为0,输出含有舵机不响应,无反馈,测试正常的字符串常量;若不为0,输出含有测试异常和舵机反馈内容的字符串常量;

若所述预期结果为舵机响应指令且有反馈,利用搜索/拆分字符串控件确定当前测试用例指令的帧头,利用字符串截取控件从所述当前测试用例指令中截取预设指令长度的字符串,得到目标字符串;利用字符串至字节数组转换控件将所述目标字符串转换为目标字节数组;对所述目标字节数组的最后两位元素之前的所有元素进行代数和累加,利用数字拆分控件将累计结果按照高低8位数据分开;若拆分的高低位数据与所述目标字节数组的最后两位元素一致,利用连接字符串工具将含有舵机响应正常和舵机反馈内容与所述目标字符串连接成新字符串输出。

本发明实施例另一方面提供了一种伺服系统控制软件的自动化测试装置,运行于实验室虚拟仪器工程平台labview,包括:

测试用例生成模板创建模块,用于创建包括前面板和多个子VI的测试用例生成模板;所述子VI为舵机信号转换子VI、生成校验和子VI、指令类型识别子VI或表生成子VI;所述舵机信号转换子VI调用labview控件将各舵机实际行程数转换为对应的十六进制字符串;所述生成校验和子VI根据待计算字符串调用labview控件生成校验和;所述表生成子VI根据所述待测试项目调用labview控件生成测试用例表;

测试用例自动生成模块,用于将待测试项目的测试参数、测试条件和相应预期结果填充至所述前面板的相应位置,基于指令类型调用所述labview的字符串连接工具和各子VI自动生成测试用例指令;所述指令类型包括常规指令、巡查指令和拼接指令;

自动测试模块,用于当检测到测试请求,自动将从测试用例表中读取的相应测试用例发送至控制器,根据所述控制器反馈的测试数据和对应预期结果自动生成测试结果。

本发明实施例还提供了一种伺服系统控制软件的自动化测试装置,包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如前任一项所述伺服系统控制软件的自动化测试方法的步骤。

本发明实施例最后还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有伺服系统控制软件的自动化测试程序,所述伺服系统控制软件的自动化测试程序被处理器执行时实现如前任一项所述伺服系统控制软件的自动化测试方法的步骤。

本申请提供的技术方案的优点在于,根据测试项目的测试需求自动生成测试用例,读取测试用例数据并将测试用例自动下发至控制器进行测试,通过控制器反馈的数据进行分析得出结论,自动生成测试报表,基于labview软件开发平台具有友好人机界面实现了同时具备舵机软件测试用例自动编写、测试用例自动测试以及自动生成测试报表的功能,操作简单,维护性高,可扩展能力强,有效提高伺服控制软件测试准确度和测试效率,提高生产效率,有效控制成本。

此外,本发明实施例还针对伺服系统控制软件的自动化测试方法提供了相应的实现装置及计算机可读存储介质,进一步使得所述方法更具有实用性,所述装置及计算机可读存储介质具有相应的优点。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。

附图说明

为了更清楚的说明本发明实施例或相关技术的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施根据一示例性实施例示出的伺服系统控制软件的自动化测试工具的前面板结构示意图;

图2为本发明实施例提供的一种伺服系统控制软件的自动化测试方法的流程示意图;

图3为本发明实施例提供的另一种伺服系统控制软件的自动化测试方法的流程示意图;

图4为本发明实施根据一示例性实施例示出的测试用例生成模板的前面板结构示意图;

图5为本发明实施根据一示例性实施例示出的测试指令类型的组成结构示意图;

图6为本发明实施根据一示例性实施例示出的一种测试用例指令生成程序示意图;

图7为本发明实施根据一示例性实施例示出的另一种测试用例指令生成流程示意图;

图8为本发明实施根据一示例性实施例示出的自动读取测试用例指令的流程示意图;

图9为本发明实施根据一示例性实施例示出的测试结果生成的流程示意图;

图10为本发明实施根据一示例性实施例示出的测试用例测试前面板结构示意图;

图11为本发明实施根据一示例性实施例示出的舵机信号转换程序示意图;

图12为本发明实施根据一示例性实施例示出的一种表生成子VI的信号处理示意图;

图13为本发明实施根据一示例性实施例示出的另一种表生成子VI的信号处理示意图;

图14为本发明实施根据一示例性实施例示出的测试用例指令数据读取过程示意图;

图15为本发明实施根据一示例性实施例示出的指令截取窗口示意图;

图16为本发明实施例提供的伺服系统控制软件的自动化测试装置的一种具体实施方式结构图;

图17为本发明实施例提供的伺服系统控制软件的自动化测试装置的另一种具体实施方式结构图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。

在介绍了本发明实施例的技术方案后,下面详细的说明本申请的各种非限制性实施方式。

本申请提供的技术方案运行于实验室虚拟仪器工程平台labview,其可适用于所有基于RS422/RS485通讯的电动伺服控制系统,所属领域技术人员可根据实际需求增加或删减某型号的测试,在实际应用过程中,本申请所提供的技术方案例如可为搭建于labview的伺服系统控制软件的自动化测试工具,该伺服系统控制软件的自动化测试工具具有人机交互界面,如图1所示,在该人机交互界面中可包含基本参数设置选项、测试用例生成选项、测试用例测试选项、停止选项。其中,用户点击基本参数设置选项,可通过弹出的对话框或者是携带有输入框的页面或者是导入信息页面,将包括但并不限于产品型号、串口名、波特率、数据位、校验位、停止位以及测试用例保存或提取路径这些参数进行输入,用户点击测试用例生成选项,可根据测试项目的相关参数自动生成测试用例并保存在指定文件路径;用户点击测试用例测试选项,可根据测试项目和测试条件对伺服系统控制软件执行自动化测试,并生成测试结果;用户点击停止选项,可停止整个伺服系统控制软件的自动化测试工具的运行。至于实现伺服系统控制软件的自动化测试工具的各模块的功能所对应的方法如图2所示的流程图可如下述实施例记载。首先请参见图3,图3为本发明实施例提供的一种伺服系统控制软件的自动化测试方法的流程示意图,本发明实施例可包括以下内容:

S301:预先创建测试用例生成模板。

本实施例的测试用例生成模板包括前面板和多个子VI。前面板相当于人机交互界面,子VI相当于实现该交互界面某个功能背后的程序支持。测试用例生成模板的前面板例如可如图4所示为,生成测试用例时可通过前面板进行测试用例相关参数设置,需要设置的参数包括测试参数、测试条件和相应预期结果,测试参数包括但并不限制于产品型号、测试名称、舵机位置信号、指令的具体格式。指令具体格式包括帧头、指令前干扰、指令后干扰、类型ID、校验生成等。考虑到用户使用习惯十进制数,为了便于用户使用,舵机位置信号处输入的信息为舵机实际需要走的行程数值,不需要事先计算为相应16进制字符串,十进制数和十六进制字符串的转化由调用舵机信号转换子VI来实现。测试条件包括但并不限制于是否连续发送、是否需要重新上电、舵机在位情况,预期结果为每个测试指令执行完用户所期待的实验结果,或者是说预期试验现象。当然,前面板中还可包括显示生成各测试用例指令的区域、设置完成选项、生成指令选项、清除上一条指令选项、清除所有指令选项、保存至报表选项、退出选项。

其中,测试用例生成模板中的子VI包括但并不限制于舵机信号转换子VI、生成校验和子VI、指令类型识别子VI或表生成子VI。舵机信号转换子VI调用labview控件将各舵机实际行程数转换为对应的十六进制字符串。生成校验和子VI根据待计算字符串调用labview控件生成校验和。表生成子VI根据待测试项目调用labview控件生成测试用例表。基于名称可清楚知道,指令类型识别子VI用于识别测试用例指令的类型,测试用例的指令类型包括常规指令、巡查指令和拼接指令,如图5所示。常规指令是在正常指令格式前后加了干扰指令,常规指令包括指令前干扰、帧头、类型ID、其他、舵机位置信号、其他及备用、指令后干扰组成。当需要干扰指令时如指令前干扰或指令后干扰,在对应的字符串框如图4所示位置处填上数据就能生成对应的干扰指令,不需要时则不填。巡查指令是在正确指令中间插入正确指令,前面板输入正确指令,先将正确指令拆分为前半段指令A和后半段指令B,然后再在指令A、B之间插入正确指令组合成新的巡查指令。拼接指令主要是测试控制器当指令发送不连接时能否识别到正确指令,这就需要将正确指令分为两个指令发送给控制器,程序处理将正确指令拆分为指令A和指令B,和巡查指令不同的是指令拼接只需将正确指令拆分为两个指令,不需要在整合其他指令。基于常规指令的格式,常规指令测试可包含帧头错误测试,类型ID错误测试,校验和错误测试,指令干扰测试,超行程指令测试。如图4所示,对于帧头错误测试:若正确的测试用例指令为AABB+0000+0101+0101+校验和,AABB为指令帧头,当需要生成错误帧头的测试用例时,只需在帧头控件里输入非AABB的指令,其他输入不变,如将帧头改为AACC,点击设置完成、生成指令则会生成指令AACC+0000+0101+0101+校验和。对于类型ID错误:伺服系统控制软件的控制指令通常会根据功能不同分为飞行指令、自检指令等,会在某字节设置不同的字节来区分当前需要实现的功能,如在帧头后的一个字节来区分,如为0A则为飞行数据,如为0B则为自检指令。在判断当此字节信号不是要求范围内的指令时舵系统能否识别出错误指令,此时在填写参数时只需要将图4所示前面板的类型ID所示控件处填上任意一个不正确的指令,其他字节不变,如填写0C,则生成的数据为AACC+0C00+0101+0101+校验和。对于校验和错误测试,一个完整的指令是直到校验和结束,校验和正确时视为有效帧,否则为无效帧,设计此错误是判断控制软件是否能判断指令是否有效,在设计校验和错误时,根据需求利用随机数控件随机生成0-1之间的两个数,再用乘控件乘以15,然后强制转换为两个十六进制单字节字符串,利用字符串连接控件将两个单字节字符串连接成16位的双字节字符串,同时通过校验和计算子VI计算出正确的校验和,并判断生成的随机数据和正确的是否相同,如不同则采用生成的随机数据作为错误的校验和,如相同则重新生成随机数据,直到生成的数据与正确的数据不同为止。对于指令干扰测试:指令干扰分为前干扰和后干扰,前干扰即在正确指令前有一系列不正确的指令,后干扰即在正确指令后有一系列不正确的指令。指令干扰的设计验证了控制系统在有干扰指令时能否正确识别,本申请在指令生成的人机交互界面在指令的前后设置了指令前干扰选项和指令后干扰选项这两个控件,在需要生成指令干扰时可在这两个控件输入任何一个非正确指令的字符串,如在指令前干扰里写入“0102AABB”,生成的指令为“0102+AABB+AACC+0C00+0101+0101+校验和”。对于超行程指令测试,超行程指令即控制舵机位置信号超出舵机限定行程。只需要在所需测的舵机信号位置处填写超出行程的值,如舵机的限定行程为30,则可在对应位置输入35或更大的值即可。巡查指令是在正确指令中间插入正确指令,前面板输入正确指令,可先将正确指令利用字符串拆分控件拆分为前半段指令A和后半段指令B,然后再利用插入字符串控件在指令A和指令B之间插入正确指令组合成新的巡查指令。拼接指令的实现方式为:指令拼接主要是测试控制器当指令发送不连贯时能否识别到正确指令,这就需要将正确指令分为两个指令发送给控制器,程序处理将正确指令通过字符串拆分控件拆分为指令A和指令B,和巡查指令不同的是指令拼接只需将正确指令拆分为两个指令,不需要在整合其他指令,拆分的两个指令利用创建数组控件形成字符串数组插入用于生成表格的数组。

S302:将待测试项目的测试参数、测试条件和相应预期结果填充至前面板的相应位置,基于指令类型调用labview的字符串连接工具和各子VI自动生成测试用例指令。

在本步骤中,测试参数、测试条件和预期结果的解释可参阅上个步骤相应位置的阐述,此处,便不再赘述。对于测试参数而言,处于舵机位置信息需要转化为字符串,其他均无需进行转换,所以在生成测试指令之前,需要先调用舵机信号转换子VI将各舵机实际行程数转换为对应的十六进制字符串,然后基于指令类型即常规指令还是巡查指令还是拼接指令利用labview的字符串连接工具也即labview的字符串连接控件将无需转化的字符串和转化的字符串进行连接生成测试用例指令。

在实际应用过程中,本步骤的实现过程可参阅图7和图6所示,可利用“事件结构”、“条件结构”、“while循环”判断当前应执行的事件,用“队列”控件来实现条件结构的“输入”,程序初始化是将队列元素设置为空闲,也即为默认状态,当没有事件发生时,队列输出“空闲”,整个程序处于空闲状态,不作任何处理。当“事件结构”通过各控件的布尔值的变化识别到有事件发生后,如“设置完成”、“生成指令”等控件的布尔值发生改变,将队列的元素修改为相应的条件输入到“条件结构”的输入端口,程序的“条件结构”判断当前条件并运行所对应的程序。将不需要计算处理的数据直接利用字符串连接控件连接成第一字符串,需要计算的舵机信号需先将信号输入舵机信号转换子VI进行计算,换算为对应的十六进制字符串可称为第二字符串。将新生成的字符串即第一字符串和第二字符串、指令前干扰、指令后干扰指令以及测试名称输入到生成校验和子VI中用其计算校验和,如测试名称为校验和错误,则随机生成一个不正确的校验和,如为其他测试类型,则计算出正确的校验和,最后按照指令前干扰、新生成的字符串、校验和、指令后干扰的顺序用字符串连接控件连接成完整的测试指令。作为一种可选的实施方式,为了便于用户使用,可将以上生成的完整的测试指令输入到表生成子VI中进行数据处理生成一个二维数组,生成的二维数组可通过XY图控件显示在前面板,供设计员查看生成的指令是否正确。如果指令不正确,用户或操作者可通过勾选前面板中的选项调用“清除上一条数据?”布尔控件和“清除上一条指令”控件程序将上一条指令从生成二维数组中清除。如果重新生成新的测试用例表格,则操作者可通过勾选“清除所有数据?”布尔控件,然后点击“清除所有指令”控件的操作调用后台程序将已经生成的数据全部清除。当所有测试用例生成完成后,用户可通过点击前面板“保存至报表”的选项调用后台程序通过labVIEW报表工具“append table to report”控件将生成的测试用例保存至指定路径。生成的测试指令会实时显示在前面板,当发现指令设计错误时,点击“删除上一条”即可删除错误的测试用例,然后重新设计该条指令,完成本次测试用例设计后,点击“保存至报表”即可将生成的测试用例保存至上述所选路径,点击“退出”即可退出测试用例生成过程,返回主程序。

S203:当检测到测试请求,自动将从测试用例表中读取的相应测试用例发送至控制器,根据控制器反馈的测试数据和对应预期结果自动生成测试结果。

如图8和图9所述,本步骤自动读取测试用例表中的测试用例并可通过串口发送到控制器,接收控制器反馈的数据,对数据进行分析,最后将分析结果写入测试用例表的最后一列作为测试结果,也可单独写入记录测试结果的表格中,这均不影响本申请的实现。控制器即为伺服系统控制软件的控制系统,将指令下发给伺服系统控制软件,伺服系统控制软件控制舵机执行各指令,然后舵机将执行指令后的结果反馈给控制器,控制器再将这些测试数据进行反馈。在该步骤中,同样也可设置测试用例测试前面板,如图10所示,在该前面板中可包括当前测试指令选项、测试总数选项、已测试指令条数选项和剩余未测试指令选项,通过该前面板的显示,当进行S201步骤即测试用例自动测试阶段,系统可弹出如图10所示的前面板,该界面能反映当前测试的指令,总共需要测试的指令数,已测数量、待测数量,操作者或用户可清楚知道当前测试进展,便于操测试人员进行时间等判断。

在本发明实施例提供的技术方案中,根据测试项目的测试需求自动生成测试用例,读取测试用例数据并将测试用例自动下发至控制器进行测试,通过控制器反馈的数据进行分析得出结论,自动生成测试报表,基于labview软件开发平台具有友好人机界面实现了同时具备舵机软件测试用例自动编写、测试用例自动测试以及自动生成测试报表的功能,操作简单,维护性高,可扩展能力强,有效提高伺服控制软件测试准确度和测试效率,提高生产效率,有效控制成本。

需要说明的是,本申请中各步骤之间没有严格的先后执行顺序,只要符合逻辑上的顺序,则这些步骤可以同时执行,也可按照某种预设顺序执行,图2和图3只是一种示意方式,并不代表只能是这样的执行顺序。

在上述实施例中,对于舵机信号转换子VI的实现过程并不做限定,本实施例中给出舵机信号转换子VI在一种实施方式下的数据转化方式,如图11所示,可包括如下步骤:

前面板包括多个舵机位置信息输入框,舵机位置信息为十进制表示的相应舵机的实际行程数;舵机信号转换子VI调用labview控件将各舵机实际行程数转换为对应的十六进制字符串的过程包括:

获取对实际位置进行数据变换的精度信息,精度信息为000~ZZZ表示0°~M°,XXX~YYY表示-N°~0°;对每个舵机实际行程数,调用正负值判断控件判断当前舵机实际行程数为正数还是负数;若当前舵机实际行程数为正数,调用公式控件计算l*s

结合图11举例来说,舵机信号转换子VI实现的计算为:根据任务书将实际位置按一定的精度进行数据变换,如任务书要求精度为000~AAA表示0~30°,BBB~CCC表示-30°~0°,若计算25°对应的字符串则进行计算:用“是否大于0”控件即正负值判断控件判断所求数值是否大于0,若大于0,则用公式控件计算“25*A`/30”,其中A`为AAA对应的十进制字符串,然后对数据进行拆分,强制转化,生成舵机信号字符串。若小于0,例-25°则在“公式”控件计算“CCC-25*D/30”,其中D为CCC-BBB对用的十进制字符串。

在上述实施例中,对于生成校验和子VI如何根据待计算字符串调用labview控件生成校验和的实施方式并不做限定,本实施例中给出生成校验和子VI根据待计算字符串调用labview控件生成校验和的一种实施方式,可包括如下步骤:

利用labview的字符串至字节数组转换控件将待计算字符串转换为字节数组;

利用强制转换控件先将字节数组转化为十进制数组,再转换为无符号双字节整形;

利用数组元素相加控件将无符号双字节整形数组里的元素相加,得到元素和;

利用数据拆分控件将元素和拆分为高八位和低八位;

利用强制转换控件将拆分后的元素和转化为十六进制字符串,并根据要求将转化的十六进制字符串连接起来生成校验和。

在上述实施例中,对于表生成子VI如何根据待测试项目调用labview控件生成测试用例表并不做限定,本实施例中给出表生成子VI根据待测试项目调用labview控件生成测试用例表的一种实施方式,参阅图12和图13,可包括如下步骤:

将各测试参数如产品型号、测试名称、舵机位置信号、指令的具体格式利用字符串连接工具生成指令字符串。

调用指令类型识别子VI判断是否生成指令类型为拼接指令类型还是巡查指令类型。若待生成指令为常规指令,也即不为拼接指令和巡查指令,则不对其进行处理,对于拼接指令和巡查指令,对数据进行如下处理:

若为拼接指令格式,将指令字符串拆分为两个子指令字符串,作为测试拼接指令;若为巡查指令格式,将指令字符串拆分为两个子指令字符串后再与指令字符串进行整合生成新指令字符串,作为测试巡查指令;若为常规指令格式,此处便不作任何处理,直接输出上述得到的原始指令字符串;

将指令字符串或测试拼接指令或测试巡查指令或常规指令与相应的测试条件如是否连续发送、是否需要重新上电、舵机在位情况和预期结果生成指令数组,可先插入二维数组然后再输出到添加数组中,最后将指令数组插入至待显示数据对应二维数组中,以在前面板中显示当前生成的测试用例指令。

可选的,作为本申请的一种可选的实施方式,当接收到报表保存请求,将前面板中的各测试用例指令存储至测试用例表中。当接收到清除上一条数据的请求,调用数组元素删除控件将二维数组中最后一行数据删除,并生成新二维数组。当接收到清除所有数据的请求,将二维数组进行初始化,以清除二维数组中的所有数据。

在本实施例中,在将二维数组通过XY图控件显示在前面板上,用户或操作者能及时看到所生成的测试用例。如果输入为清除上一条数据,可用“删除数组元素”控件删除最后一行数据再输出新的二维数组,若输入清除所有数据,可将二维数组初始化为没有数据的二维数组即可。

在上述实施例中,对于S303步骤中的如何自动读取测试用例指令并不做限定,本实施例中给出测试指令读取的一种实施方式,如图14所示,也即自动将从测试用例表中读取的相应测试用例发送至控制器的过程可包括如下步骤:

从测试用例生成模板的前面板中读取测试用例表的存储路径和各测试条件,测试条件为发送间隔条件或上电操作条件。

根据存储路径调用表格数据读取控件从测试用例表中读取各测试用例指令;

若发送间隔条件为连续发送指令,依次将各测试用例指令通过VISA写入控件发送给控制器;

若发送间隔条件为不连续发送指令,判断上电操作条件是否为需要重新上电,若需要重新上电,向用户展示重新上电操作提醒信息,当接收到上电完成指示信息,将当前测试用例指令通过VISA写入工具发送给控制器;若不需要重新上电,当接收到指令发送指示信息,将当前测试用例指令通过VISA写入工具发送给控制器。

在本实施例中,可先用“excel get data.vi控件将测试用例表格里的数据读取出来,表格路径与参数设置里选择的报表路径一致,再对读取出来的数据进行判断,主要判断是否连续发送、是否需要重新上电。此时采用“条件结构”来进行分支来处理判断,将提取表格里读出的数据的判断数据作为判断条件输入“条件结构”的输入端口,需要判断指令是否需要连续发送、测试过程中是否需要重新上电,并执行对应的程序。如果是连续发送的指令,则labview依次将指令通过“VISA写入”工具发送给控制器。如果不连续发送,则还需根据读取的数据判断“是否需要重新上电”,仍然用条件结构判断此过程,将对用的判断条件输入到“条件结构”输入端口,根据判断结果执行相应的程序。如果需要重新上电,则利用对话框工具弹出对话框提醒操作者进行重新上电操作,完成重新上电后点击“继续”,labview随即将该条指令通过“VISA写入”控件发送给控制器。如果不需要重新上电,则弹出“是否继续”窗口,当操作人员判断需要继续发送指令的时候点击“继续”,labview随即将指令发送给控制器。

相应的,本申请还给出根据控制器反馈的测试数据和对应预期结果自动生成测试结果的一种实施方法,可包括下述内容:

通过VISA读取控件从控制器中读取各舵机执行测试用例指令后的反馈结果数据,并根据预设反馈格式读取每一条反馈结果数据的有效数据;

测试条件为连续发送指令,若预期结果为舵机不响应且无反馈,利用字符串长度控件判断当前反馈结果数据的有效数据的数据长度是否为0,若为0,输出含有舵机不响应,无反馈,测试正常的字符串常量;若不为0,输出含有测试异常和舵机反馈内容的字符串常量;

若预期结果为舵机响应指令且有反馈,利用搜索/拆分字符串控件确定当前测试用例指令的帧头,利用字符串截取控件从当前测试用例指令中截取预设指令长度的字符串,得到目标字符串;对截取的字符串即目标字符串进行校验和判断,利用字符串至字节数组转换控件将目标字符串转换为目标字节数组;对目标字节数组的最后两位元素之前的所有元素进行代数和累加,利用数字拆分控件将累计结果按照高低8位数据分开;利用强制转换控件将拆分的高低位数据以及目标字节数组的最后两位元素转换成十六进制数据;若拆分的高低位数据与目标字节数组的最后两位元素一致,利用连接字符串工具将含有舵机响应正常和舵机反馈内容与目标字符串连接成新字符串输出。

在本实施例中,系统发送完测试指令后,需要读取控制器的反馈数据以判断控制器是否能正常响应测试指令,此时通过“VISA读取”控件将控制器反馈的数据读取出来,将读取出来的数据根据进行分析判断,如果数据正常则将“测试正常”和读取回来的数据一并写入表格“测试结果”一列;如果数据不正常则将“测试异常”和读取回来的数据一并写入表格“测试结果”一列。数据读取和处理可如下所述:

舵机反馈的数据使用“VISA读取”控件读取出来,输入到“指令截取”子VI,“指令截取”子VI实现的功能是:将读取的数据根据任务书反馈指令格式提取出有效数据,并判断数据是否与预期的结果一样,程序实现下:

对于连续发送的数据:

如预期结果为舵系统不响应,无反馈,则利用“字符串长度”控件判断读取的数据长度是否为0,如为0,则舵系统该项功能正常,则输出字符串常量“舵系统不响应,无反馈,测试正常”,如有反馈则字符串长度不为0,此时将字符串常量“测试异常,舵系统反馈为:”与读取到的字符串用“连接字符串”控件连接成新的字符串输出,如“测试异常,舵系统反馈为:AABB CCD……”

如预期结果为舵系统响应指令,有反馈,则利用“搜索/拆分字符串”控件找到帧头,再利用“截取字符串”截取出正确指令长度,对截取出来的字符串进行校验和判断,将字符串利用“字符串至字节数组转换”控件将字符串转换为字节数组,对数组最后两个元素以前的各个元素进行代数和累加,将累加的结果用:“数字拆分”控件将高低8位数据分开,再用“强制转换”控件将拆分的高低位数据以及数组最后两个元素转换成十六进制数据,判断拆分的数据与数组元素最后两位是否一致,如果一致则是一帧有效数据,此时利用“连接字符串工具”将“舵系统响应正常,反馈为:”与截取的字符串连接成新的字符串输出。

对于不连续发送的测试:

对于不连续发送的测试,则测试在读取到指令后将指令通过弹出的窗口显示出来,测试人员则自主选择其中的指令进行截取,弹出的串口如图15所示。

不连续发送的测试有:舵系统从零位走到给的指令位置处,舵系统时域、频域、额定转速、自检等指令。

当测试控制舵机走到某位置时,需要判断反馈的指令是否是舵机所走位置的指令,此时,待舵机到指定位置不动时提取出最后一帧反馈数据,通过计算得出反馈位置,如果反馈位置在指定位置误差范围内,则将“测试结果正常,舵系统正常响应,反馈为:”与截取的字符串用“连接字符串”工具连接成新的字符串输出。如果舵机不响应或反馈不再误差范围内,则输出“测试异常,舵机不响应”或“舵系统控制精度有偏差”。

当测试舵系统时域、频域、额定转速、自检指令时,待舵机走完规定动作后,在上述弹出的对话框里截取部分字符串,同上输出相应的结果。

当所有指令测试完成后,for循环会将以上输出的字符串结论以字符串数组形式输出,完成后将测试结果利用数组插入功能插入到从表格读取出来的二维数组的最后一列形成新的二维数组,最后通过“append table to report”控件将结论写入对应路径报表。

本发明实施例还针对伺服系统控制软件的自动化测试方法提供了相应的运行于实验室虚拟仪器工程平台labview的装置,进一步使得所述方法更具有实用性。其中,装置可从功能模块的角度和硬件的角度分别说明。下面对本发明实施例提供的伺服系统控制软件的自动化测试装置进行介绍,下文描述的伺服系统控制软件的自动化测试装置与上文描述的伺服系统控制软件的自动化测试方法可相互对应参照。

基于功能模块的角度,参见图16,图16为本发明实施例提供的伺服系统控制软件的自动化测试装置在一种具体实施方式下的结构图,该装置可包括:

测试用例生成模板创建模块161,用于创建包括前面板和多个子VI的测试用例生成模板;子VI为舵机信号转换子VI、生成校验和子VI、指令类型识别子VI或表生成子VI;舵机信号转换子VI调用labview控件将各舵机实际行程数转换为对应的十六进制字符串;生成校验和子VI根据待计算字符串调用labview控件生成校验和;表生成子VI根据待测试项目调用labview控件生成测试用例表。

测试用例自动生成模块162,用于将待测试项目的测试参数、测试条件和相应预期结果填充至前面板的相应位置,基于指令类型调用labview的字符串连接工具和各子VI自动生成测试用例指令;指令类型包括常规指令、巡查指令和拼接指令。

自动测试模块163,用于当检测到测试请求,自动将从测试用例表中读取的相应测试用例发送至控制器,根据控制器反馈的测试数据和对应预期结果自动生成测试结果。

可选的,在本实施例的一些实施方式中,所述舵机信号转换子VI可以包括:

精度获取单元,用于获取对实际位置进行数据变换的精度信息,精度信息为000~ZZZ表示0°~M°,XXX~YYY表示-N°~0°;

数值判断单元,用于对每个舵机实际行程数,调用正负值判断控件判断当前舵机实际行程数为正数还是负数;

数值转化单元,用于若当前舵机实际行程数为正数,调用公式控件计算l*s

作为本实施例的一种可选的实施方式,生成校验和子VI可包括:

数组转化单元,用于利用labview的字符串至字节数组转换控件将待计算字符串转换为字节数组;利用强制转换控件先将字节数组转化为十进制数组,再转换为无符号双字节整形;

元素累计单元,用于利用数组元素相加控件将无符号双字节整形数组里的元素相加,得到元素和;

数据拆分单元,用于利用数据拆分控件将元素和拆分为高八位和低八位;

校验和生成单元,用于利用强制转换控件将拆分后的元素和转化为十六进制字符串,并根据要求将转化的十六进制字符串连接起来生成校验和。

作为本实施例的另外一种可选的实施方式,表生成子VI可包括:

字符串生成单元,用于将各测试参数利用字符串连接工具生成指令字符串;

指令识别单元,用于调用指令类型识别子VI判断是否生成指令类型为拼接指令类型还是巡查指令类型;

数据处理单元,用于若为拼接指令格式,将指令字符串拆分为两个子指令字符串,作为测试拼接指令;若为巡查指令格式,将指令字符串拆分为两个子指令字符串后再与指令字符串进行整合生成新指令字符串,作为测试巡查指令;若为常规指令格式,不作处理直接输出所述指令字符串;

指令显示单元,用于将指令字符串或测试拼接指令或测试巡查指令或常规指令与相应的测试条件和预期结果生成指令数组,并将指令数组插入至待显示数据对应二维数组中,以在前面板中显示当前生成的测试用例指令;

指令存储单元,用于当接收到报表保存请求,将前面板中的各测试用例指令存储至测试用例表中。

在本实施例的一些实施方式中,表生成子VI例如还可包括:

指令删除单元,用于当接收到清除上一条数据的请求,调用数组元素删除控件将二维数组中最后一行数据删除,并生成新二维数组;当接收到清除所有数据的请求,将二维数组进行初始化,以清除二维数组中的所有数据。

作为本申请的其他一些可选的实施方式,自动测试模块163可包括:

数据获取子模块,用于从前面板读取测试用例表的存储路径和各测试条件,测试条件为发送间隔条件或上电操作条件;

指令读取子模块,用于根据存储路径调用表格数据读取控件从测试用例表中读取各测试用例指令;

指令发送子模块,用于若发送间隔条件为连续发送指令,依次将各测试用例指令通过VISA写入控件发送给控制器;若发送间隔条件为不连续发送指令,判断上电操作条件是否为需要重新上电,若需要重新上电,向用户展示重新上电操作提醒信息,当接收到上电完成指示信息,将当前测试用例指令通过VISA写入工具发送给控制器;若不需要重新上电,当接收到指令发送指示信息,将当前测试用例指令通过VISA写入工具发送给控制器。

作为本申请的其他一些可选的实施方式,自动测试模块163例如可包括:

反馈数据读取子模块,用于通过VISA读取控件从控制器中读取各舵机执行测试用例指令后的反馈结果数据,并根据预设反馈格式读取每一条反馈结果数据的有效数据;

测试数据分析处理子模块,用于测试条件为连续发送指令,若预期结果为舵机不响应且无反馈,利用字符串长度控件判断当前反馈结果数据的有效数据的数据长度是否为0,若为0,输出含有舵机不响应,无反馈,测试正常的字符串常量;若不为0,输出含有测试异常和舵机反馈内容的字符串常量;若预期结果为舵机响应指令且有反馈,利用搜索/拆分字符串控件确定当前测试用例指令的帧头,利用字符串截取控件从当前测试用例指令中截取预设指令长度的字符串,得到目标字符串;利用字符串至字节数组转换控件将目标字符串转换为目标字节数组;对目标字节数组的最后两位元素之前的所有元素进行代数和累加,利用数字拆分控件将累计结果按照高低8位数据分开;若拆分的高低位数据与目标字节数组的最后两位元素一致,利用连接字符串工具将含有舵机响应正常和舵机反馈内容与目标字符串连接成新字符串输出。

本发明实施例所述伺服系统控制软件的自动化测试装置的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

由上可知,本发明实施例实现了伺服系统控制软件的全自动化测试,有效提高了伺服系统控制软件的测试效率。

上文中提到的伺服系统控制软件的自动化测试装置是从功能模块的角度描述,进一步的,本申请还提供一种伺服系统控制软件的自动化测试装置,是从硬件角度描述。图17为本申请实施例提供的另一种伺服系统控制软件的自动化测试装置的结构图。如图17所示,该装置包括存储器170,用于存储计算机程序;

处理器171,用于执行计算机程序时实现如上述任一实施例提到的伺服系统控制软件的自动化测试方法的步骤。

其中,处理器171可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器171可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器171也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器171可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器171还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。

存储器170可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器170还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器170至少用于存储以下计算机程序1701,其中,该计算机程序被处理器171加载并执行之后,能够实现前述任一实施例公开的伺服系统控制软件的自动化测试方法的相关步骤。另外,存储器170所存储的资源还可以包括操作系统1702和数据1703等,存储方式可以是短暂存储或者永久存储。其中,操作系统1702可以包括Windows、Unix、Linux等。数据1703可以包括但不限于测试结果对应的数据等。

在一些实施例中,伺服系统控制软件的自动化测试装置还可包括有显示屏172、输入输出接口173、通信接口174、电源175以及通信总线176,例如还可包括传感器57。

本领域技术人员可以理解,图17中示出的结构并不构成对伺服系统控制软件的自动化测试装置的限定,可以包括比图示更多或更少的组件,例如传感器177。

本发明实施例所述伺服系统控制软件的自动化测试装置的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

由上可知,本发明实施例实现了伺服系统控制软件的全自动化测试,有效提高了伺服系统控制软件的测试效率。

可以理解的是,如果上述实施例中的伺服系统控制软件的自动化测试方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random AccessMemory,RAM)、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、磁碟或者光盘等各种可以存储程序代码的介质。

基于此,本发明实施例还提供了一种计算机可读存储介质,存储有伺服系统控制软件的自动化测试程序,所述伺服系统控制软件的自动化测试程序被处理器执行时如上任意一实施例所述伺服系统控制软件的自动化测试方法的步骤。

本发明实施例所述计算机可读存储介质的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

由上可知,本发明实施例实现了伺服系统控制软件的全自动化测试,有效提高了伺服系统控制软件的测试效率。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

以上对本申请所提供的一种伺服系统控制软件的自动化测试方法、装置及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号