一种基于命令行接口的机器人测试系统及测试方法

xiaoxiao2020-10-23  14

一种基于命令行接口的机器人测试系统及测试方法
【技术领域】
[0001]本发明涉及机器人测试领域,具体是一种基于命令行接口的机器人测试系统。
【背景技术】
[0002]近年来,智能机器人技术飞速发展,其构造及软件越来越复杂,多学科交叉的特点也越来越明显。为了保证智能机器人的质量,需要对机器人进行测试。传统主要是由人工测试,人工测试劳动强度大、效率也比较低,并且成本也比较高,因此使用计算机程序来测试智能机器人已成为一种发展趋势。传统机器人测试,是采用测试装置对机器人进行测试,例如中国专利申请CN 102939592A公开的一种测试装置,但是没有提供一个通用的测试系统,可扩展性低,成本高。

【发明内容】

[0003]本发明要解决的问题是提供一种基于命令行接口的机器人测试系统,该测试系统具有可扩展性,可动态添加自动化测试脚本,实现对机器人的自动化测试,稳步地保证了机器人的质量,有效地提高效率和准确度,降低成本。
[0004]本发明公开的一种基于命令行接口的机器人测试系统,包括操作系统、通信模块、命令解析及执行模块、测试脚本的语言、测试脚本语言的环境和命令行接口,所述命令行接口用于为机器人新增的功能添加命令。
[0005]作为上述技术方案的进一步改进,所述通信模块提供一种通信方式,该通信方式用于测试机和被测试机器人之间的通信。
[0006]进一步改进,所述通信方式adb、SSH或telnet。
[0007]另一种改进,所述环境用于执行所述测试脚本。
[0008]利用上述技术方案所述的测试系统进行测试的方法,包括以下步骤:
1)连接测试机与被测试机器人;
2)在测试机登录被测试机器人的运行环境;
3)在被测机器人的运行环境上运行机器人命令行接口的的命令;
4)机器人接收到被测机器人的命令后,查询并调用该命令注册的执行函数,该执行函数与机器人内部系统模块通信,输出被测机器人的状态及各子系统状态,供测试脚本分析;
5)测试脚本分析被测机器人的状态及各子系统状态,输出测试报告。
[0009]利用上述技术方案所述的测试系统增加新的测试功能的方法,包括以下步骤:
1)利用被测机器人子系统实现新功能;
2)定义新功能命令格式;
3)调用由子系统实现的新功能接口,实现新功能的命令;
4)添加新功能的命令到被测机器人命令接口系统。
[0010]进一步的,在所述步骤4)添加新功能的命令到被测机器人命令接口系统后,利用上述技术方案所述的测试方法验证新功能的命令是否添加成功。
[0011]本发明的一种基于命令行接口的机器人测试系统及测试方法,提供了一个通用的测试系统及配套的测试、增加新功能测试的方法,可扩展性强,大大提高了测试效率和测试系统的适用范围,降低了测试成本。
【附图说明】
[0012]图1是本发明的机器人测试系统的框图;
图2是新增功能加入测试系统的流程图。
【具体实施方式】
[0013]下面结合附图,对本发明提出的一种基于命令行接口的机器人测试系统进行详细说明。
[0014]如图1所示,为实现本发明所述的机器人测试系统,使用一台测试机I和一台被测机器人2。所述测试机I优选具有命令行接口、通信模块、测试脚本、测试脚本语言的环境的一台计算机,该计算机可以安装Windows或者Linux。通过命令行接口开发人员可以为机器人新增的功能添加命令,测试人员可以通过在命令行终端输入命令,对机器人进行测试。通信模块提供一种通信方式(比如:adb,telnet等),使得运行在测试机I上测试脚本可以向被测机器人2发送命令,并且该命令的执行结果可以通过这种通信方式返回给测试机上的测试脚本。提供一个书写这些测试脚本的语言(比如:dos/bat, tcl/expect, Python等),通过这些脚本语言根据测试用例书写自动化测试脚本程序。提供运行这些脚本语言运行的环境,执行这些自动化测试脚本,完成对机器人一些功能的自动化测试。通信模块包括,测试机I和被测试机器人2通过通信模块客户端5和服务端6进行通信。启动测试机I和被测试机器人2之后,机器人2开启通信服务监听测试机I测试脚本发送过来的连接。在测试机I运行一些测试脚本3,这些测试脚本3将通过通信模块5发送命令到机器人2端。机器人2通过通信模块6接收到命令后,交由命令解析及执行模块4对命令进行解析,匹配到相应的命令并调用相应命令执行函数,该执行函数与机器人内部各系统通信,对机器人进行操作,并将操作结果通过通信模块返回给测试机I端。测试机I通过通信模块5接收到来自机器人2执行的结果,并交由测试脚本3对其分析,如果机器人如期望的在执行命令,就说明测试是通过的,否则测试失败。最终的测试结果以报告的形式打印出来。
[0015]为了更加清晰地描述图1的过程,以自动测试机器人是否进入工作状态为例,具体如下:
1.一台安装了 Windows系统的计算机,默认提供DOS BAT脚本语言及运行环境,通信方式采用ADB (调试桥),准备好ADB客户端程序,如adb.exe。
[0016]2.机器人系统是基于Android系统,默认提供Linux Shell运行环境及ADB通信服务。对于基于其他移动操作系统的机器人也可适用。
[0017]3.让测试机计算机与被测机器人连接到同一局域网内(使用广域网,比如国际互联网Internet,也可实现,并可以实现远程测试,本实施例优选局域网),并且可以互相连通,测试机运行adb connect〈host〉与被测机器人建立连接,通过ADB devices列出连接设备,再使用adb shell登录到被测机器人shell运行环境上,或者直接在adb shell后加机器人命令执行,格式为:adb shell〈机器人命令〉。
[0018]4.在被测机器人shell运行环境上运行机器人命令行接口的查询机器人的状态的命令 robot—cli show—system—status 或 DOS 环境下直接 adb shell robot—cli show—system—status。
[0019]机器人命令有两种模式,一种是SHELL模式,一种是交互模式。SHELL模式运行robot—cli〈机器人命令〉。交互模式只运行robot—cli进入交互界面“>”,再输入〈机器人命令>。
[0020]机器人命令之查询机器人的状态的命令robot—cli show—system—status。
[0021]命令格式:show—system—status [search string]
命令描述:show whole system and all of sub-systems status 实例:显示系统状态
>show—system—status State
[State] Work [SubState] Busy [State] Work [SubState] Idle [State] Work [SubState] Busy [State] Work [SubState] Busy [State] Work [SubState] Idle [State] Work [SubState] Idle
>
机器人接收到机器人的状态查询命令后,在所有机器人命令数组中查询,如果找到,调用该命令注册的执行函数,该执行函数与机器人内部系统模块通信,并将机器人的状态及各子系统状态打印出来,供测试脚本分析。
[0022]机器人命令接口数据结构: struct robot_cli_cmd {
const char ^c md;
int (木handler) (struct robot_ctrl ^ctrlj int argc, char ^argvt]);char 木木(^complet1n)(const char ^strj int pos);enum robot_cli_cmd—flags flags;const char 氺usage;
};
机器人的状态查询命令定义:
static struct robot_cli_cmd robot_cli_commands[] = {{ 〃show—system—status", robot_cli_cmd—show—status, NULL,cIi_cmd_fIag—none,
"[search string] = show whole system and all of sub-systems^
〃\n status, the search string is opt1nal" },
}
机器人的状态查询命令实现:
static int robot_cli_cmd—show—status(struct robot_ctrl *ctrl, int argc,char 5^argv [])
{
//打印机器人状态及各子系统状态
}
机器人的命令解析及调用:
static int robot_cli_analysis (int argc, char 5^argv [])
{
struct robot_cli_cmd *cmd, *match = NULL;
int ret = -1;
cmd = robot_cli_commands;
while (cmd->cmd) {
if (cmp (cmd_>cmd,argv[0]) == 0)
{
match = cmd; break;
}
cmd++;
}
if (match)
ret = match->handler(argc - 1, &argv[l]);return ret;
}
5.在运行完机器人的状态查询命令后,所有系统状态都为工作(Work)状态后,表明被测机器人进入了工作状态。
[0023]6.以上自动化检测,通过DOS BAT管道“ | ”及find (或findstr)既完成与机器人连接的判断,又完成对测试结果与预期的结果匹配,如果正如预期,则测试成功,否则失败。如果find (或findstr)不够智能,可以编写Linux Shell脚本使用grep命令,通过将该脚本adb push到被测机器人端,在被测机器人端的Linux Shell运行环境下运行,测试机计算机只是等待结果,用adb shell cat〈result〉| find “result”即完成判断。该测试脚本可以命名为test_robot_work.bat。
[0024] 如图2所示,一个新增的功能加入机器人测试系统的过程如下:对于机器人来说,在迭代的过程中,会有些新的功能性的需求加进来,测试系统有义务要对这个新功能进行递归性地测试,那么对该功能的自动化测试需求也就应运而生。定义命令行格式7并添加到机器人系统8中,供测试人员使用,测试人员在命令行终端手动输入该命令,查看输出结果,判断是否该功能已经实现,一旦实现,使用脚本语言对该功能测试用例进行编程,自动化该新增功能9并由测试机I对其定期自动化测试。
[0025]为了更加清晰地描述图2的过程,以新增一个微笑的功能为例,具体如下:
1.实现微笑功能,由表情子系统实现微笑的功能,并提供接口供系统调用。
[0026]2.定义微笑命令格式命令格式:smile〈speed〉
命令描述:smile
实例:快速地微笑 >smile fast
>
3.实现微笑命令
static int robot_cli_cmd_express1n_smile(int argc, char 氺argv[])
{
//调用由表情子系统实现的微笑功能接口
}
4.添加微笑命令到机器人命令接口系统
static struct robot_cli_cmd robot_cli_commands[] = {
{ 〃smile〃, robot_cli_cmd_express1n_smile, NULL, cli_cmd_flag_none,
”:smile" },
}
5.自动化测试该功能。首先,完成与被测机器人的连接。其次,发送微笑命令。再次,发送查询机器人表情状态命令。最后,获取表情状态数据,进行分析,是否机器人处于微笑状态,来判决微笑功能测试是否成功。
[0027]以上实施例仅用以说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,其均应涵盖在本发明的权利要求范围当中。
【主权项】
1.一种基于命令行接口的机器人测试系统,其特征在于:包括操作系统、通信模块、命令解析及执行模块、测试脚本、测试脚本语言的环境和命令行接口,所述命令行接口用于为机器人新增的功能添加命令。2.根据权利要求1所述的基于命令行接口的机器人测试系统,其特征在于:所述通信模块提供一种通信方式,该通信方式用于测试机和被测试机器人之间的通信。3.根据权利要求2所述的基于命令行接口的机器人测试系统,其特征在于:所述通信方式包括adb、SSH或telnet。4.根据权利要求1所述的基于命令行接口的机器人测试系统,其特征在于:所述环境用于执行所述测试脚本。5.利用权利要求3至4任意一项所述的测试系统进行测试的方法,其特征在于:包括以下步骤: 1)连接测试机与被测试机器人; 2)在测试机登录被测试机器人的运行环境; 3)在被测机器人的运行环境上运行机器人命令行接口的命令; 4)机器人接收到被测机器人的命令后,查询并调用该命令注册的执行函数,该执行函数与机器人内部系统模块通信,输出被测机器人的状态及各子系统状态,供测试脚本分析; 5)测试脚本分析被测机器人的状态及各子系统状态,输出测试报告。6.利用权利要求3至4任意一项所述的测试系统增加新的测试功能的方法,其特征在于:包括以下步骤: 1)利用被测机器人子系统实现新功能; 2)定义新功能命令格式; 3)调用由子系统实现的新功能接口,实现新功能的命令; 4)添加新功能的命令到被测机器人命令接口系统。7.根据权利要求6所述的增加新的测试功能的方法,其特征在于:在所述步骤4)添加新功能的命令到被测机器人命令接口系统后,利用权利要求5所述的测试方法验证新功能的命令是否添加成功。
【专利摘要】本发明公开的一种基于命令行接口的机器人测试系统,包括操作系统、通信模块、命令解析及执行模块、测试脚本的语言、测试脚本语言的环境和命令行接口,所述命令行接口用于为机器人新增的功能添加命令。本发明的一种基于命令行接口的机器人测试系统及测试方法,提供了一个通用的测试系统及配套的测试、增加新功能测试的方法,可扩展性强,大大提高了测试效率和测试系统的适用范围,降低了测试成本。
【IPC分类】G05B17/02
【公开号】CN104898459
【申请号】CN201510172033
【发明人】王坤
【申请人】南京阿凡达机器人科技有限公司
【公开日】2015年9月9日
【申请日】2015年4月13日

最新回复(0)