掌桥专利:专业的专利平台
掌桥专利
首页

一种机器人的测试方法、装置、电子设备及介质

文献发布时间:2024-04-18 19:58:26


一种机器人的测试方法、装置、电子设备及介质

技术领域

本发明涉及计算机技术领域,尤其涉及一种机器人的测试方法、装置、电子设备及介质。

背景技术

随着生活水平的提高以及科技的进步,机器人已经成为家居空间和办公室等环境中的常用家电产品。目前常用的机器人包括清洁机器人、保姆机器人等。

由于当前机器人软件版本采取敏捷开发,所以为了提高迭代中测试的效率,在测试版本发布后,需对机器人的原有功能和迭代新功能进行验证并输出测试结果。

在进行机器人版本软件测试时,测试人员手动对新增功能进行验证,并对已修复bug进行回归,从而确保新版本的可用性与稳定性,但是人工测试难以在每次测试时遍历每个功能模块的可用性,或者需要足够长的时间才能够遍历到所有功能模块,无法保证机器人的使用效果,增加版本发布的风险。

发明内容

本申请实施例提供了一种机器人的测试方法、装置、电子设备及介质,用以解决现有技术中无法保证机器人的使用效果,增加版本发布风险的问题。

第一方面,本申请实施例提供了一种机器人的测试方法,所述方法包括:

创建数据订阅节点,采用所述数据订阅节点订阅测试所需的数据;

根据从功能模拟函数工具中获取的目标版本的功能模拟函数和所述数据,采用测试工具进行测试,确定所述功能模拟函数的执行结果;

采用测试工具集对所述执行结果进行判断,确定所述功能模拟函数的测试结果。

进一步地,所述创建数据订阅节点包括:

采用rospy创建数据订阅节点。

进一步地,所述测试工具包括AirCore_test.py,用于回调处理所述功能模拟函数。

进一步地,所述功能模拟函数工具包括rostopic_pub.py,用于模拟机器人运行过程中消息异常上报和/或人际交互消息的函数。

进一步地,所述测试工具集包括AircoreTest_WorkTools.py,用于统一封装测试过程中使用的工具。

进一步地,所述方法还包括:

采用SystemErrorCheck_Robot_Encode.py工具输出所述测试结果对应的异常分析结果。

进一步地,所述功能模拟函数包括以下一种或多种类型:业务逻辑类型函数、协议一致性函数或者稳定性函数。

第二方面,本申请实施例提供了一种机器人的测试装置,其特征在于,所述装置包括:

订阅模块,用于创建数据订阅节点,采用所述数据订阅节点订阅测试所需的数据;

测试模块,用于根据从功能模拟函数工具中获取的目标版本的功能模拟函数和所述数据,采用测试工具进行测试,确定所述功能模拟函数的执行结果;

判断模块,用于采用测试工具集对所述执行结果进行判断,确定所述功能模拟函数的测试结果。

进一步地,所述订阅模块,具体用于采用posoy创建数据订阅节点。

进一步地,所述测试工具包括AirCore_test.py,用于回调处理所述功能模拟函数。

进一步地,所述功能模拟函数工具包括rostopic_pub.py,用于模拟机器人运行过程中消息异常上报和/或人际交互消息的函数。

进一步地,所述测试工具集包括AircoreTest_WorkTools.py,用于统一封装测试过程中使用的工具。

进一步地,所述装置还包括:

输出模块,用于采用SystemErrorCheck_Robot_Encode.py工具输出所述测试结果对应的异常分析结果。

进一步地,所述功能模拟函数包括以下一种或多种类型:业务逻辑类型函数、协议一致性函数或者稳定性函数。

第三方面,本发明实施例提供了一种电子设备,所述电子设备至少包括处理器和存储器,所述处理器用于执行存储器中存储的计算机程序时执行上述任一项所述的机器人的测试方法的步骤。

第四方面,本发明实施例提供了一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时执行上述任一项所述的机器人的测试方法的步骤。

在本申请实施例中,创建数据订阅节点,采用所述数据订阅节点订阅测试所需的数据;根据从功能模拟函数工具中获取的目标版本的功能模拟函数和所述数据,采用测试工具进行测试,确定所述功能模拟函数的执行结果;采用测试工具集对所述执行结果进行判断,确定所述功能模拟函数的测试结果。在该方法中,采用创建的数据订阅节点订阅测试所需的数据,然后采用测试工具,根据该数据对目标版本的功能模拟函数进行测试,得到执行结果,再采用测试工具集确定功能模拟函数的测试结果,通过采用自动测试方式可以缩短测时间,提高测试效率,可以保证机器人的使用效率,降低版本发布的风险。

附图说明

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

图1为本申请的一些实施例提供的一种机器人的测试过程示意图;

图2为本申请的一些实施例提供的一种测试范围的示意图;

图3为本申请的一些实施例提供的一种机器人的测试流程示意图;

图4为本申请的一些实施例提供的一种机器人的测试装置的结构示意图;

图5为本申请的一些实施例提供的一种电子设备的结构示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

为了保证机器人的使用效率,降低版本发布的风险,本申请实施例提供了一种机器人的测试方法、装置、电子设备及介质。在本申请实施例中,创建数据订阅节点,采用数据订阅节点订阅测试所需的数据;根据从功能模拟函数工具中获取的目标版本的功能模拟函数和数据,采用测试工具进行测试,确定功能模拟函数的执行结果;采用测试工具集对执行结果进行判断,确定功能模拟函数的测试结果。因此,采用创建的数据订阅节点订阅测试所需的数据,然后采用测试工具,根据该数据对目标版本的功能模拟函数进行测试,得到执行结果,再采用测试工具集确定功能模拟函数的测试结果,通过采用自动测试方式可以缩短测时间,提高测试效率,可以保证机器人的使用效率,降低版本发布的风险。

下面对本申请实施例提供的机器人的测试过程进行说明。参见图1,为本申请的一些实施例提供的一种机器人的测试过程示意图,该过程包括:

S101:创建数据订阅节点,采用数据订阅节点订阅测试所需的数据。

本申请实施例提供的机器人的测试方法应用于电子设备,该电子设备可以为用户设备、家居设备、或服务器等。其中用户设备包括但不限于手机、电脑、或者穿戴设备,家居设备包括但不限于机器人,如ROS机器人。

电子设备可以创建数据订阅节点,该数据订阅节点可以用于订阅测试所需的数据。示例的,该数据订阅节点可以包括rosnode_sub.py。测试所需的数据可以是订阅用例执行阶段需要的主题(Topic),实时输出Topic数据。在一个实现方式中,可订阅的Topic如:传感器(超声波传感器、wheel_odom、碰撞传感器、IMU等)、状态码、耗材管理(电量、清污水箱水量、清洁机构)等一种或多种。

S102:根据从功能模拟函数工具中获取的目标版本的功能模拟函数和数据,采用测试工具进行测试,确定功能模拟函数的执行结果。

功能模拟函数包括以下一种或多种类型:业务逻辑类型函数、协议一致性函数或者稳定性函数。例如图2所示,业务逻辑类型函数包括:手动任务处理函数、定时任务处理函数、异常处理函数、用户交互函数、清洁模式处理函数、其他函数等,协议一致性函数包括:清洁记录函数、状态码函数、事件码函数等,稳定性函数包括:回充成功率函数、长时间运行稳定性函数等。

功能模拟函数工具中可以模拟机器人运行过程中的功能模拟函数,可选地,可以模拟最新待发布版本的函数,或者各发布版本的函数。

测试工具可以用于回调处理功能模拟函数工具中的功能模拟函数,基于上述步骤中订阅到的数据,对功能模拟函数进行测试。

S103:采用测试工具集对执行结果进行判断,确定功能模拟函数的测试结果。

测试工具集可以统一封装有测试过程中所使用的工具,以根据上述步骤中的执行结果,确定功能模拟函数的测试结果。测试结果可以包括测试通过和/或测试不通过,以说明该功能模拟函数所对应的新增功能/已修复功能是否可用与稳定。

由于在本申请实施例中采用创建的数据订阅节点订阅测试所需的数据,然后采用测试工具,根据该数据对目标版本的功能模拟函数进行测试,得到执行结果,再采用测试工具集确定功能模拟函数的测试结果,通过采用自动测试方式可以缩短测时间,提高测试效率,可以保证机器人的使用效率,降低版本发布的风险。

在上述实施例的基础上,本申请实施例中,创建数据订阅节点包括:

采用rospy创建数据订阅节点。

示例的,使用rospy的方法,首先init一个新节点,再使用新节点订阅用例执行阶段需要的Topic,实时输出Topic数据。一种代码示例如下所示:

Python

rospy.init_node("test_noe",anonymous=False)

rospy.Subscriber("/odom",Odometry,self.odomCallBack)

self.add_thread=threading.Thread(target=self.thread_job)

self.add_thread.setDaemon(True)

self.add_thread.start()

在上述各实施例的基础上,本申请实施例中,测试工具包括AirCore_test.py,用于回调处理功能模拟函数。

AirCore_test.py可以看作是自动化测试的主程序,该实施例中可以将文本用例代码化,文本用例执行中需要执行的动作、异常处理、判断等操作,都在功能模拟函数工具中进行函数封装。AirCore_test.py可以参照文本用例的执行流程对指定函数(即上述目标版本的功能模拟函数)进行回调处理,并输入相应的预期结果供测试工具集进行判断,以最终完成测试,输出测试报告。

一种代码示例如下所示:

Python def COR_test_630_2825(self):

self.case_id='630-2825'

self.case_rank='P2'

self.case_title='电量异常跳变时,应反馈错误码“COR_412”'

self.case_expected_COR='COR_412'

self.file_path='/home/admin1/test/autoTest/app_json_log/Z11.log'

self.pub_task()

print('任务下发成功,等待机器人出站')

time.sleep(30)

print('测试开始,用例编号:'+self.case_id+'^'+'用例标题:'+self.case_title)

self.rospy_sub()

pool=multiprocessing.Pool(processes=4)

pool.apply_async(self.tp.battery_change())

pool.close()

self.judge_CORcode()

self.write_test_log()

在上述各实施例的基础上,本申请实施例中,功能模拟函数工具包括rostopic_pub.py,用于模拟机器人运行过程中消息异常上报和/或人际交互消息的函数。

示例的,电子设备可以使用topic pub的方法,模拟运行中传感器异常、状态码、耗材数据上报、运动底盘上报、回充/暂停等。并将各种方法逐一封装成函数,供测试工具在执行用例过程中进行回调。该工具模拟机器人运行中的一些消息异常、人机交互等。通常较多的应用在业务逻辑和协议一致性测试用例中。

一种代码示例如下所示:

Python def back_BS(self):

self.pub_type="手动返回基站"

back_pub='rostopic pub-1/app_json std_msgs/String\"data:'{\"msg\":{\"id\":-99,'

'\"method\":\"app_charge\",\"params\":\"\"},\"op\":\"publish\",'

'\"topic\":\"/app_json\"}'\"'

SystemErrorCheck_Robot_Encode.send_linux_cmd_once(back_pub)

return self.pub_type

在上述各实施例的基础上,本申请实施例中,测试工具集包括AircoreTest_WorkTools.py,用于统一封装测试过程中使用的工具。

在该实施例中,为了简化自动化测试工具结构,提高代码的复用率,电子设备可以通过AircoreTest_WorkTools对测试过程中使用到的工具或方法统一进行封装。AircoreTest_WorkTools可以对rosnode_sub进行订阅,AircoreTest_WorkTools需要对rosnode_sub进行订阅。

一种代码示例如下所示:

在上述各实施例的基础上,本申请实施例中,上述方法还包括:

采用SystemErrorCheck_Robot_Encode.py工具输出测试结果对应的异常分析结果。

下面以一个具体的实施例对上述各实施例进行说明,参见图3,首先对各py工具的逻辑实现过程进行说明:

1.Rosnode_sub.py工具在ros环境内新init一个ros节点,并订阅测试中所需topic,将topic输出结果存储在全局变量中;

2.使用AircoreTest_WorkTools.py继承Rosnode_sub.py的父类,继承Rosnode_sub.py中的全局变量。并封装方法,对AirCore_test.py中反馈的预期结果进行判断;

3.AirCore_test.py根据用例测试流程,顺序对AircoreTest_WorkTools.py或rostopic_pub.py中的方法进行回调,完成测试;

4.当AirCore_test.py测试结果为不通过或异常超时后,调用SystemErrorcheck_Robot_Encode.py check机器人当前所有传感器数据,节点状态等信息生成日志。

具体而言,电子设备rosnode_sub.py使用rospy的方法,init一个新节点,使用新节点订阅所需的Topic,AircoreTest_WorkTools.py订阅rosnode_sub.py,获取到节点输出的Topic数据,rostopic_pub.py将待测试的模拟功能函数发送(pub)给AirCore_test.py,AirCore_test.py向AircoreTest_WorkTools.py传参并从AircoreTest_WorkTools.py中进行参数回调,以对待测试的模拟功能函数进行测试,测试的执行结果发送给AircoreTest_WorkTools.py进行判断,输出测试结果。然后还可以通过SystemErrorCheck_Robot_Encode.py工具输出测试结果对应的异常分析结果。

SystemErrorCheck_Robot_Encode.py工具主要针对的异常检测如下:

1.机器人软件:节点是否keep_alive,机器人是否在工作模式,机器人当前状态;

2.传感器:超声、碰撞、轮式里程计、雷达、IMU等传感器是否有数值或是否被触发;

3.系统性能:磁盘空间、CPU温度、CPU占用率;

4.日志分析:安卓端交互日志、云端交互日志、机器人运动日志、机器人定位日志、OTA升级日志;

5.配置选项检测:银牛防跌落、金属检测、更新地图等功能是否开启。

6.异常检测分析后会生成一份异常日志信息。

可见,在本申请实施例中设计基于ROSPY实现ROS机器人自动化测试方案,利用ROS系统自身的Publisher、Subscriber的方式模拟上下位机、上位机与安卓端、上位机与云端的通讯,并通过模拟发布的消息执行测试用例,在执行中上报软件是否有异常信息以及是否完成任务的初步结果,完成对版本稳定性与可用性的验证,辅助测试人员完成版本的验证与回归测试,提升工作效率,以便测试人员提前发现问题,降低发布风险。

在上述各实施例的基础上,本申请提供了一种机器人的测试装置,图4为本申请的一些实施例提供的一种机器人的测试装置的结构示意图,该装置包括:

订阅模块401,用于创建数据订阅节点,采用数据订阅节点订阅测试所需的数据;

测试模块402,用于根据从功能模拟函数工具中获取的目标版本的功能模拟函数和数据,采用测试工具进行测试,确定功能模拟函数的执行结果;

判断模块403,用于采用测试工具集对执行结果进行判断,确定功能模拟函数的测试结果。

在一种可能的实施方式中,订阅模块401,具体用于采用posoy创建数据订阅节点。

在一种可能的实施方式中,测试工具包括AirCore_test.py,用于回调处理功能模拟函数。

在一种可能的实施方式中,功能模拟函数工具包括rostopic_pub.py,用于模拟机器人运行过程中消息异常上报和/或人际交互消息的函数。

在一种可能的实施方式中,测试工具集包括AircoreTest_WorkTools.py,用于统一封装测试过程中使用的工具。

在一种可能的实施方式中,装置还包括:

输出模块,用于采用SystemErrorCheck_Robot_Encode.py工具输出测试结果对应的异常分析结果。

在一种可能的实施方式中,功能模拟函数包括以下一种或多种类型:业务逻辑类型函数、协议一致性函数或者稳定性函数。

在上述实施例的基础上,本申请还提供了一种电子设备,图5为本申请实施例提供的一种电子设备结构示意图,如图5所示,包括:处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信;

存储器503中存储有计算机程序,当程序被处理器501执行时,使得处理器501执行如下步骤:

创建数据订阅节点,采用数据订阅节点订阅测试所需的数据;

根据从功能模拟函数工具中获取的目标版本的功能模拟函数和数据,采用测试工具进行测试,确定功能模拟函数的执行结果;

采用测试工具集对执行结果进行判断,确定功能模拟函数的测试结果。

在一种可能的实施方式中,处理器501,具体用于采用rospy创建数据订阅节点。

在一种可能的实施方式中,测试工具包括AirCore_test.py,用于回调处理功能模拟函数。

在一种可能的实施方式中,功能模拟函数工具包括rostopic_pub.py,用于模拟机器人运行过程中消息异常上报和/或人际交互消息的函数。

在一种可能的实施方式中,测试工具集包括AircoreTest_WorkTools.py,用于统一封装测试过程中使用的工具。

在一种可能的实施方式中,处理器501,还用于:

采用SystemErrorCheck_Robot_Encode.py工具输出测试结果对应的异常分析结果。

在一种可能的实施方式中,功能模拟函数包括以下一种或多种类型:业务逻辑类型函数、协议一致性函数或者稳定性函数。

上述电子设备提到的通信总线可以是PCI(Peripheral ComponentInterconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口502用于上述电子设备与其他设备之间的通信。

存储器可以包括RAM(Random Access Memory,随机存取存储器),也可以包括NVM(Non-Volatile Memory,非易失性存储器),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述处理器可以是通用处理器,包括中央处理器、NP(Network Processor,网络处理器)等;还可以是DSP(Digital Signal Processing,数字指令处理器)、专用集成电路、现场可编程门陈列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。

在上述各实施例的基础上,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质内存储有可由电子设备执行的计算机程序,当程序在电子设备上运行时,使得电子设备执行时实现如下步骤:

创建数据订阅节点,采用所述数据订阅节点订阅测试所需的数据;

根据从功能模拟函数工具中获取的目标版本的功能模拟函数和所述数据,采用测试工具进行测试,确定所述功能模拟函数的执行结果;

采用测试工具集对所述执行结果进行判断,确定所述功能模拟函数的测试结果。

在一种可能的实施方式中,所述创建数据订阅节点包括:

采用rospy创建数据订阅节点。

在一种可能的实施方式中,所述测试工具包括AirCore_test.py,用于回调处理所述功能模拟函数。

在一种可能的实施方式中,所述功能模拟函数工具包括rostopic_pub.py,用于模拟机器人运行过程中消息异常上报和/或人际交互消息的函数。

在一种可能的实施方式中,所述测试工具集包括AircoreTest_WorkTools.py,用于统一封装测试过程中使用的工具。

在一种可能的实施方式中,所述方法还包括:

采用SystemErrorCheck_Robot_Encode.py工具输出所述测试结果对应的异常分析结果。

进一步地,所述功能模拟函数包括以下一种或多种类型:业务逻辑类型函数、协议一致性函数或者稳定性函数。

由于上述计算机可读存储介质解决问题的原理与机器人的测试方法相似,因此上述计算机可读存储介质的实施可以参见方法的实施例,重复之处不再赘述。

上述计算机可读存储介质可以是电子设备中的处理器能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器如软盘、硬盘、磁带、MO(磁光盘)等、光学存储器如CD、DVD、BD、HVD等、以及半导体存储器如ROM、EPROM、EEPROM、NAND FLASH(非易失性存储器)、SSD(固态硬盘)等。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

相关技术
  • 一种对象的测试方法、装置、介质及电子设备
  • 一种测试方法、装置、电子设备和存储介质
  • 一种性能测试方法、装置、电子设备以及存储介质
  • 一种应用程序的测试方法、装置、电子设备及存储介质
  • 一种使用机器人赛车的方法、装置、电子设备及存储介质
  • 一种回访机器人的测试方法、装置,电子设备及存储介质
  • 机器人动态精度的测试方法、装置、电子设备及存储介质
技术分类

06120116490091