CN104898459B - 一种基于命令行接口的机器人测试系统及测试方法 - Google Patents
一种基于命令行接口的机器人测试系统及测试方法 Download PDFInfo
- Publication number
- CN104898459B CN104898459B CN201510172033.9A CN201510172033A CN104898459B CN 104898459 B CN104898459 B CN 104898459B CN 201510172033 A CN201510172033 A CN 201510172033A CN 104898459 B CN104898459 B CN 104898459B
- Authority
- CN
- China
- Prior art keywords
- robot
- test
- tested
- command
- adb
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开的一种基于命令行接口的机器人测试系统,包括操作系统、通信模块、命令解析及执行模块、测试脚本的语言、测试脚本语言的环境和命令行接口,所述命令行接口用于为机器人新增的功能添加命令。本发明的一种基于命令行接口的机器人测试系统及测试方法,提供了一个通用的测试系统及配套的测试、增加新功能测试的方法,可扩展性强,大大提高了测试效率和测试系统的适用范围,降低了测试成本。
Description
技术领域
本发明涉及机器人测试领域,具体是一种基于命令行接口的机器人测试系统。
背景技术
近年来,智能机器人技术飞速发展,其构造及软件越来越复杂,多学科交叉的特点也越来越明显。为了保证智能机器人的质量,需要对机器人进行测试。传统主要是由人工测试,人工测试劳动强度大、效率也比较低,并且成本也比较高,因此使用计算机程序来测试智能机器人已成为一种发展趋势。传统机器人测试,是采用测试装置对机器人进行测试,例如中国专利申请CN 102939592A公开的一种测试装置,但是没有提供一个通用的测试系统,可扩展性低,成本高。
发明内容
本发明要解决的问题是提供一种基于命令行接口的机器人测试系统,该测试系统具有可扩展性,可动态添加自动化测试脚本,实现对机器人的自动化测试,稳步地保证了机器人的质量,有效地提高效率和准确度,降低成本。
本发明公开的一种基于命令行接口的机器人测试系统,包括操作系统、通信模块、命令解析及执行模块、测试脚本的语言、测试脚本语言的环境和命令行接口,所述命令行接口用于为机器人新增的功能添加命令。
作为上述技术方案的进一步改进,所述通信模块提供一种通信方式,该通信方式用于测试机和被测试机器人之间的通信。
进一步改进,所述通信方式adb、SSH或telnet。
另一种改进,所述环境用于执行所述测试脚本。
利用上述技术方案所述的测试系统进行测试的方法,包括以下步骤:
1)连接测试机与被测试机器人;
2)在测试机登录被测试机器人的运行环境;
3)在被测机器人的运行环境上运行机器人命令行接口的的命令;
4)机器人接收到被测机器人的命令后,查询并调用该命令注册的执行函数,该执行函数与机器人内部系统模块通信,输出被测机器人的状态及各子系统状态,供测试脚本分析;
5)测试脚本分析被测机器人的状态及各子系统状态,输出测试报告。
利用上述技术方案所述的测试系统增加新的测试功能的方法,包括以下步骤:
1)利用被测机器人子系统实现新功能;
2)定义新功能命令格式;
3)调用由子系统实现的新功能接口,实现新功能的命令;
4)添加新功能的命令到被测机器人命令接口系统。
进一步的,在所述步骤4)添加新功能的命令到被测机器人命令接口系统后,利用上述技术方案所述的测试方法验证新功能的命令是否添加成功。
本发明的一种基于命令行接口的机器人测试系统及测试方法,提供了一个通用的测试系统及配套的测试、增加新功能测试的方法,可扩展性强,大大提高了测试效率和测试系统的适用范围,降低了测试成本。
附图说明
图1 是本发明的机器人测试系统的框图;
图2是新增功能加入测试系统的流程图。
具体实施方式
下面结合附图,对本发明提出的一种基于命令行接口的机器人测试系统进行详细说明。
如图1所示,为实现本发明所述的机器人测试系统,使用一台测试机1和一台被测机器人2。所述测试机1优选具有命令行接口、通信模块、测试脚本、测试脚本语言的环境的一台计算机,该计算机可以安装Windows或者Linux。通过命令行接口开发人员可以为机器人新增的功能添加命令,测试人员可以通过在命令行终端输入命令,对机器人进行测试。通信模块提供一种通信方式(比如:adb,telnet等),使得运行在测试机1上测试脚本可以向被测机器人2发送命令,并且该命令的执行结果可以通过这种通信方式返回给测试机上的测试脚本。提供一个书写这些测试脚本的语言(比如:dos/bat, tcl/expect, Python等),通过这些脚本语言根据测试用例书写自动化测试脚本程序。提供运行这些脚本语言运行的环境,执行这些自动化测试脚本,完成对机器人一些功能的自动化测试。通信模块包括通信模块客户端5和通信模块服务端6,测试机1和被测试机器人2通过通信模块客户端5和通信模块服务端6进行通信。启动测试机1和被测试机器人2之后,机器人2开启通信服务监听测试机1测试脚本发送过来的连接。在测试机1运行一些测试脚本3,这些测试脚本3将通过通信模块客户端5发送命令到机器人2端。机器人2通过通信模块服务端6接收到命令后,交由命令解析及执行模块4对命令进行解析,匹配到相应的命令并调用相应命令执行函数,该执行函数与机器人内部各系统通信,对机器人进行操作,并将操作结果通过通信模块返回给测试机1端。测试机1通过通信模块客户端5接收到来自机器人2执行的结果,并交由测试脚本3对其分析,如果机器人如期望的在执行命令,就说明测试是通过的,否则测试失败。最终的测试结果以报告的形式打印出来。
为了更加清晰地描述图1的过程,以自动测试机器人是否进入工作状态为例,具体如下:
1. 一台安装了Windows系统的计算机,默认提供DOS BAT脚本语言及运行环境,通信方式采用ADB(调试桥),准备好ADB客户端程序,如adb.exe。
2. 机器人系统是基于Android系统,默认提供Linux Shell运行环境及ADB通信服务。对于基于其他移动操作系统的机器人也可适用。
3.让测试机计算机与被测机器人连接到同一局域网内(使用广域网,比如国际互联网Internet,也可实现,并可以实现远程测试,本实施例优选局域网),并且可以互相连通,测试机运行adb connect <host>与被测机器人建立连接,通过ADB devices列出连接设备,再使用adb shell登录到被测机器人shell运行环境上,或者直接在adb shell后加机器人命令执行,格式为:adb shell <机器人命令>。
4.在被测机器人shell运行环境上运行机器人命令行接口的查询机器人的状态的命令robot_cli show_system_status或DOS环境下直接adb shell robot_cli show_system_status。
机器人命令有两种模式,一种是SHELL模式,一种是交互模式。SHELL模式运行robot_cli <机器人命令>。交互模式只运行robot_cli进入交互界面“>”,再输入<机器人命令>。
机器人命令之查询机器人的状态的命令robot_cli show_system_status。
命令格式: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
>
机器人接收到机器人的状态查询命令后,在所有机器人命令数组中查询,如果找到,调用该命令注册的执行函数,该执行函数与机器人内部系统模块通信,并将机器人的状态及各子系统状态打印出来,供测试脚本分析。
机器人命令接口数据结构:
struct robot_cli_cmd {
const char *cmd;
int (*handler)(struct robot_ctrl *ctrl, int argc, char *argv[]);
char ** (*completion)(const char *str, 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,
cli_cmd_flag_none,
"[search string] = show whole system and all of sub-systems"
"\n status, the search string is optional" },
…
}
机器人的状态查询命令实现:
static int robot_cli_cmd_show_status(struct robot_ctrl *ctrl, intargc, char *argv[])
{
//打印机器人状态及各子系统状态
}
机器人的命令解析及调用:
static int robot_cli_analysis (int argc, char *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[1]);
return ret;
}
5.在运行完机器人的状态查询命令后,所有系统状态都为工作(Work)状态后,表明被测机器人进入了工作状态。
6. 以上自动化检测,通过DOS BAT 管道“|”及find(或findstr)既完成与机器人连接的判断,又完成对测试结果与预期的结果匹配,如果正如预期,则测试成功,否则失败。如果find(或findstr)不够智能,可以编写Linux Shell脚本使用grep命令,通过将该脚本adb push 到被测机器人端,在被测机器人端的Linux Shell运行环境下运行,测试机计算机只是等待结果,用adb shell cat <result> | find “result”即完成判断。该测试脚本可以命名为test_robot_work.bat。
如图2所示,一个新增的功能加入机器人测试系统的过程如下:对于机器人来说,在迭代的过程中,会有些新的功能性的需求加进来,测试系统有义务要对这个新功能进行递归性地测试,那么对该功能的自动化测试需求也就应运而生。定义命令行格式7并添加到机器人系统8中,供测试人员使用,测试人员在命令行终端手动输入该命令,查看输出结果,判断是否该功能已经实现,一旦实现,使用脚本语言对该功能测试用例进行编程,自动化该新增功能9并由测试机1对其定期自动化测试。
为了更加清晰地描述图2的过程,以新增一个微笑的功能为例,具体如下:
1.实现微笑功能,由表情子系统实现微笑的功能,并提供接口供系统调用。
2.定义微笑命令格式
命令格式:smile <speed>
命令描述:smile
实例:快速地微笑
>smile fast
>
3.实现微笑命令
static int robot_cli_cmd_expression_smile(int argc, char *argv[])
{
//调用由表情子系统实现的微笑功能接口
}
4.添加微笑命令到机器人命令接口系统
static struct robot_cli_cmd robot_cli_commands[] = {
…,
{ "smile", robot_cli_cmd_expression_smile, NULL,
cli_cmd_flag_none,
"= smile" },
…
}
5.自动化测试该功能。首先,完成与被测机器人的连接。其次,发送微笑命令。再次,发送查询机器人表情状态命令。最后,获取表情状态数据,进行分析,是否机器人处于微笑状态,来判决微笑功能测试是否成功。
以上实施例仅用以说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,其均应涵盖在本发明的权利要求范围当中。
Claims (3)
1.利用基于命令行接口的机器人测试系统进行测试的方法,其特征在于:包括以下步骤:
1)连接测试机与被测试机器人;所述基于命令行接口的机器人测试系统包括操作系统、通信模块、命令解析及执行模块、测试脚本、测试脚本语言的环境和命令行接口,所述命令行接口用于为机器人新增的功能添加命令;所述测试机为安装了Windows系统的计算机,默认提供DOS BAT脚本语言及运行环境,通信方式采用ADB调试桥,准备好ADB客户端程序adb.exe;
所述被测机器人系统是基于Android系统,默认提供Linux Shell运行环境;
所述通信模块提供一种通信方式,该通信方式用于测试机和被测试机器人之间的通信;所述通信方式包括adb、SSH或telnet;
2)在测试机登录被测试机器人的运行环境,所述环境用于执行所述测试脚本,
具体过程为:让测试机与被测机器人连接到同一网络中,并且可以互相连通,测试机运行adb connect <host>与被测机器人建立连接,通过ADB devices列出连接设备,再使用adb shell登录到被测机器人shell运行环境上,或者直接在adb shell后加机器人命令执行,格式为:adb shell <机器人命令>;
3)在被测机器人的运行环境上运行机器人命令行接口的命令,具体过程为:
在被测机器人shell运行环境上运行机器人命令行接口的查询机器人的状态的命令robot_cli show_system_status或DOS环境下直接adb shell robot_cli show_system_status;
机器人命令有两种模式,一种是SHELL模式,一种是交互模式;
SHELL模式运行robot_cli <机器人命令>;
交互模式只运行robot_cli进入交互界面“>”,再输入<机器人命令>;
机器人命令之查询机器人的状态的命令robot_cli show_system_status;
命令格式:show_system_status [search string];
命令描述:show whole system and all of sub-systems status;
4)机器人接收到被测机器人的命令后,查询并调用该命令注册的执行函数,该执行函数与机器人内部系统模块通信,输出被测机器人的状态及各子系统状态,供测试脚本分析;
5)测试脚本分析被测机器人的状态及各子系统状态,输出测试报告;所述测试是通过DOS BAT 管道“|”及find或findstr既完成与机器人连接的判断,又完成对测试结果与预期的结果匹配,如果正如预期,则测试成功,否则失败;如果find或findstr不够智能,则编写Linux Shell脚本使用grep命令,通过将该脚本adb push 到被测机器人端,在被测机器人端的Linux Shell运行环境下运行,测试机只是等待结果,用adb shell cat <result> |find “result”即完成判断,该测试脚本可以命名为test_robot_work.bat。
2.一种利用权利要求1所述的测试系统增加新的测试功能的方法,其特征在于:包括以下步骤:
1)利用被测机器人子系统实现新功能;
2)定义新功能命令格式;
3)调用由子系统实现的新功能接口,实现新功能的命令;
4)添加新功能的命令到被测机器人命令接口系统;
所述基于命令行接口的机器人测试系统包括操作系统、通信模块、命令解析及执行模块、测试脚本、测试脚本语言的环境和命令行接口,所述命令行接口用于为机器人新增的功能添加命令;所述通信模块提供一种通信方式,该通信方式用于测试机和被测试机器人之间的通信;
所述通信方式包括adb、SSH或telnet;
所述环境用于执行所述测试脚本。
3.根据权利要求2所述的增加新的测试功能的方法,其特征在于:在所述步骤4)添加新功能的命令到被测机器人命令接口系统后,利用权利要求1所述的测试方法验证新功能的命令是否添加成功。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510172033.9A CN104898459B (zh) | 2015-04-13 | 2015-04-13 | 一种基于命令行接口的机器人测试系统及测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510172033.9A CN104898459B (zh) | 2015-04-13 | 2015-04-13 | 一种基于命令行接口的机器人测试系统及测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104898459A CN104898459A (zh) | 2015-09-09 |
CN104898459B true CN104898459B (zh) | 2018-10-23 |
Family
ID=54031178
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510172033.9A Active CN104898459B (zh) | 2015-04-13 | 2015-04-13 | 一种基于命令行接口的机器人测试系统及测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104898459B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105467978B (zh) * | 2016-01-13 | 2018-11-30 | 北京光年无限科技有限公司 | 多模态激活数据处理方法、系统和智能机器人 |
CN105824757B (zh) * | 2016-03-18 | 2018-05-01 | 北京光年无限科技有限公司 | 基于机器人操作系统的测试方法及系统 |
CN108121221B (zh) * | 2016-11-26 | 2020-05-01 | 沈阳新松机器人自动化股份有限公司 | 一种机器人命令接口控制系统及方法 |
CN109671428A (zh) * | 2017-10-17 | 2019-04-23 | 富欣实业股份有限公司 | 分段式智能型语音控制整合系统及其操作方法 |
CN107942723B (zh) * | 2017-11-07 | 2021-01-15 | 芜湖赛宝信息产业技术研究院有限公司 | 一种基于工业机器人的仿真测试方法 |
CN110266701B (zh) * | 2019-06-24 | 2021-11-09 | 博普乐科技(北京)有限公司 | 智能设备数据传输方法、装置、介质及电子设备 |
CN110275787B (zh) * | 2019-06-24 | 2021-10-22 | 博普乐科技(北京)有限公司 | 在线平台数据传输方法、装置、介质及电子设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5905856A (en) * | 1996-02-29 | 1999-05-18 | Bankers Trust Australia Limited | Determination of software functionality |
CN1767453A (zh) * | 2004-10-31 | 2006-05-03 | 中兴通讯股份有限公司 | 自动测试方法和系统 |
CN1877544A (zh) * | 2005-06-06 | 2006-12-13 | 华为技术有限公司 | 关键字驱动的自动化测试系统及方法 |
CN101197734A (zh) * | 2007-12-27 | 2008-06-11 | 华为技术有限公司 | 命令行接口的测试方法及装置 |
CN101252471A (zh) * | 2008-03-20 | 2008-08-27 | 中兴通讯股份有限公司 | 一种分布式自动化测试系统及其方法 |
CN101916221A (zh) * | 2010-07-23 | 2010-12-15 | 中兴通讯股份有限公司 | 一种针对设备进行单元测试的方法和系统 |
CN102103538A (zh) * | 2011-02-22 | 2011-06-22 | 南京航空航天大学 | 一种基于Agent的码垛机器人控制软件测试方法 |
CN102939592A (zh) * | 2010-01-21 | 2013-02-20 | 杜尔系统有限责任公司 | 用于测试机器人装置的控制程序的测试装置 |
CN104331358A (zh) * | 2014-10-30 | 2015-02-04 | 上海斐讯数据通信技术有限公司 | 一种测试管理系统及方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7844349B2 (en) * | 2006-10-20 | 2010-11-30 | Rockwell Automation Technologies, Inc. | Standard MES interface for discrete manufacturing |
EP2452298A4 (en) * | 2009-07-10 | 2014-08-27 | Certicom Corp | SYSTEM AND METHOD FOR IMPLEMENTING DEVICE SELECTION |
US8930769B2 (en) * | 2010-08-13 | 2015-01-06 | International Business Machines Corporation | Managing operating system deployment failure |
CN102637036A (zh) * | 2012-05-08 | 2012-08-15 | 北京理工大学 | 一种复合式仿生四足机器人控制器 |
-
2015
- 2015-04-13 CN CN201510172033.9A patent/CN104898459B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5905856A (en) * | 1996-02-29 | 1999-05-18 | Bankers Trust Australia Limited | Determination of software functionality |
CN1767453A (zh) * | 2004-10-31 | 2006-05-03 | 中兴通讯股份有限公司 | 自动测试方法和系统 |
CN1877544A (zh) * | 2005-06-06 | 2006-12-13 | 华为技术有限公司 | 关键字驱动的自动化测试系统及方法 |
CN101197734A (zh) * | 2007-12-27 | 2008-06-11 | 华为技术有限公司 | 命令行接口的测试方法及装置 |
CN101252471A (zh) * | 2008-03-20 | 2008-08-27 | 中兴通讯股份有限公司 | 一种分布式自动化测试系统及其方法 |
CN102939592A (zh) * | 2010-01-21 | 2013-02-20 | 杜尔系统有限责任公司 | 用于测试机器人装置的控制程序的测试装置 |
CN101916221A (zh) * | 2010-07-23 | 2010-12-15 | 中兴通讯股份有限公司 | 一种针对设备进行单元测试的方法和系统 |
CN102103538A (zh) * | 2011-02-22 | 2011-06-22 | 南京航空航天大学 | 一种基于Agent的码垛机器人控制软件测试方法 |
CN104331358A (zh) * | 2014-10-30 | 2015-02-04 | 上海斐讯数据通信技术有限公司 | 一种测试管理系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104898459A (zh) | 2015-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104898459B (zh) | 一种基于命令行接口的机器人测试系统及测试方法 | |
CN110221962B (zh) | 一种集中式软件测试管理系统及方法 | |
US8589881B2 (en) | Web-based software debugging apparatus and method for remote debugging | |
CN109740222B (zh) | 一种针对汽车网联化场景的测试装置和系统 | |
CN107135390A (zh) | 一种电视应用的自动化测试方法及系统 | |
CN104424095A (zh) | 一种移动终端的自动化测试方法和系统 | |
CN105868111A (zh) | 移动终端游戏自动测试方法和装置 | |
CN1832433A (zh) | 分布式架构测试系统和该测试系统的测试方法 | |
CN110781085A (zh) | 一种游戏自动化测试方法、装置、终端和计算机存储介质 | |
CN110362490B (zh) | 融合iOS与Android移动应用的自动化测试方法及系统 | |
CN1627254A (zh) | 嵌入式系统的调试方法及其装置 | |
CN114817028B (zh) | 一种基于软件开发平台中多目标交叉调试系统 | |
CN105740147A (zh) | 智能终端自动化接口测试方法 | |
CN107844486B (zh) | 一种用于客户端的分析网页问题的方法和系统 | |
CN111193638A (zh) | 一种基于Linux平台的网卡自动化测试方法及装置 | |
CN108009086B (zh) | 基于用例分解和功能学习的系统自动化测试方法 | |
CN110209565A (zh) | 一种元数据模型调试方法及其装置 | |
CN116028367A (zh) | 自动化测试系统及方法 | |
CN109634856A (zh) | 基于云服务的iOS智能终端远程真机调试系统及方法 | |
CN109032607A (zh) | 基于lua脚本的机房监控实时数据解析引擎及脚本调试工具 | |
Long et al. | A case study in testing distributed systems | |
CN114661536A (zh) | 一种处理器自动测试控制平台、控制方法及操作方法 | |
CN100337215C (zh) | 测试执行器 | |
CN111708568B (zh) | 一种组件化开发解耦方法及终端 | |
CN113641575A (zh) | 一种测试方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: No. 3 Gu Tan Road in Gaochun Economic Development Zone of Nanjing city in Jiangsu province 211316 Applicant after: Nanjing Science and Technology Ltd. of A Fanda robot Address before: 210012, 1-A2 building, Nanhai biological garden, No. 180, software Avenue, Yuhuatai District, Jiangsu, Nanjing Applicant before: Nanjing Science and Technology Ltd. of A Fanda robot |
|
COR | Change of bibliographic data | ||
GR01 | Patent grant | ||
GR01 | Patent grant |