用于基于Android系统的设备的测试方法及系统
技术领域
本发明涉及一种在测试设备情况下使用的测试方法及系统。更具体地说,本发明涉及一种用在测试基于Android系统的设备情况下的测试方法及系统。
背景技术
Android设备,无论是手机还是平板电脑,生产厂家在设备出厂前都需要在工厂做一些基本的功能测试,比如摄像头拍照、麦克风放音、蓝牙搜索设备等等,以确保设备的基本功能完整性。在传统的方案中,主要是在设备端通过人工参与的方式进行功能测试,比如常见的CIT(用户界面测试)程序等,以及一些需要在特殊模式下进行的使用c语言编写的程序进行的测试,基本上都是人工在设备端进行测试的模式。Android设备端的CIT测试模块,一般是作为Android应用模块被开发的,使用平台的应用开发接口或者是通过Java语言调用本地方法的技术来实现,获得相关功能的状态和进行相关的功能验证。上述的测试方法需要投入大量的人工参与测试的时间,人力成本和时间成本较高,并且有的测试需在设备端的工厂模式下进行,或者需对Android设备端的生产软件进行调试版本和用户版本的切换,使得生产线上设备的测试效率较低。
发明内容
本发明的一个目的是解决上述至少一个问题或缺陷,并提供后面将说明的至少一个优点。
本发明还有一个目的是提供一种基于Android系统的设备的测试方法,其能够实现在电脑端通过控制测试项命令,手动或者自动发送测试命令给Android设备端,控制Android设备端进行相关的基本功能测试,最后将测试结果返回电脑端生成单项或者多项测试的结果报告,用于工厂组装线,通过电脑的控制进行自动化测试,解决了生产线上对设备进行测试的效率问题。
本发明还有一个目的还提供了基于Android系统的设备的测试方法的系统,能够将人工参与测试的时间降到最低,节省人力成本和时间成本,同时,能够对测试项进行灵活配置和单项测试,更利于在实际中的应用。
为了实现根据本发明的这些目的和其它优点,提供了一种用于基于Android系统的设备的测试方法,包括以下步骤:
步骤一、在电脑端创建测试项命令列表,所述命令列表中存储的命令对应于基于Android系统的设备端将进行的测试项目;
步骤二、连接设备端的Android系统调试工具adb端口;
步骤三、提取所述电脑端命令列表中命令转化成所述Android系统调试工具adb端口可识别处理的执行命令,通过USB连接发送至所述设备端;
步骤四、所述设备端的Android系统调试工具adb进程的核心子进程获取所述执行命令,调用linux系统的回显echo命令显示所述执行命令,并通过重定向技术输出给busybox-nc程序,所述busybox-nc程序连接并绑定到设备端的本机地址的其中一个网络端口;
步骤五、所述设备端的init进程在设备开机后启动了测试服务模块,所述测试服务模块创建一个套接字Socket连接,所述套接字Socket连接监听所述网络端口的连接请求,所述执行命令写入所述套接字Socket连接;
步骤六、所述测试服务模块接受所述套接字Socket连接请求,从Socket连接的数据缓冲池中读取所述执行命令并执行所述执行命令,输出结果,所述结果通过所述核心子进程传输到所述电脑端,所述电脑端生成测试报告。
优选的是,其中,所述步骤五具体包括:首先所述基于Android系统的设备端的init进程在设备开机后启动了测试服务模块,其次所述测试服务模块获得所述设备端的最高控制权限root权限,创建一个套接字Socket连接并监听所述网络端口的连接请求,所述执行命令写入所述套接字Socket连接的数据缓冲池。
优选的是,其中,所述步骤六具体包括:所述测试服务模块循环等待接受所述套接字Socket连接请求,当接受到所述套接字Socket连接请求,所述测试服务模块会调用fork程序孵化出一个子进程,将所述套接字Socket连接和所述设备端的标准输入模块以及标准输出模块绑定,调用执行脚本先从所述标准输入模块读取所述数据缓存池中的所述执行命令,然后执行所述执行命令,输出结果,所述结果通过所述核心子进程传输到所述电脑端,所述电脑端生成测试报告。
优选的是,其中,所述结果通过所述核心子进程传输到所述电脑端,所述电脑端生成测试报告具体包括:所述套接字Socket连接输出结果回传到所述busybox-nc程序,所述busybox-nc程序回传到所述设备端Android系统调试工具adb进程的核心子进程,进而将所述结果回传到所述电脑端,所述电脑端生成测试报告。
优选的是,其中,所述测试项命令列表中的命令程序为所述Android系统设备中自带的程序或者为为了实现相应功能测试而编写的程序。
本发明的目的还可以进一步由用于基于Android系统的设备的测试方法的测试系统来实现,该系统包括:
电脑端,其包括测试命令存储控制模块与测试结果报告生成模块,所述测试命令存储控制模块用于储存电脑端测试项列表中的命令,并控制将测试命令通过USB连接发送给设备端;所述测试结果报告生成模块负责在所有测试命令执行结束后,统计并分析测试日志数据并生成测试结果报告。
设备端,其安装Android系统并通过USB与所述电脑端连接,所述设备端包括Android系统调试工具adb服务模块与测试服务模块,所述Android系统调试工具adb服务模块用于获取所述电脑端发送的执行命令,调用linux系统的回显echo命令显示所述执行命令,并通过重定向技术输出给busybox-nc程序,所述busybox-nc程序用于连接所述设备端网络端口并传输所述执行命令,所述测试服务模块包括用于与所述busybox-nc程序通讯的的套接字Socket连接以及负责执行所述测试命令的孵化子进程模块,其中所述孵化子进程模块包括具体的命令执行模块,所述命令执行模块负责最终在设备端执行测试程序。
优选的是,其中,所述测试命令存储控制模块还用于提取所述电脑端命令列表中命令并转化成所述Android系统调试工具adb端口可识别处理的执行命令。
优选的是,其中,所述测试命令存储控制模块中包括一个或者多个测试项命令模块,用于编写和存储所述设备端进行测试项目的命令。
本发明至少包括以下有益效果:
1、由于在电脑端通过控制测试项命令,手动或者自动发送测试命令给Android设备端,控制Android设备端进行相关的基本功能测试,最后将测试结果返回电脑端生成单项或者多项测试的结果报告,用于工厂组装线,通过电脑的控制进行自动化测试,解决了生产线上对设备进行测试的效率问题;
2、由于将电脑端纳入测试系统,能够将人工参与测试的时间降到最低,节省人力成本和时间成本,同时,能够对测试项进行灵活配置和单项测试,更利于在实际中的应用;
3、由于使用busybox-nc程序,使得执行命令通过网络端口连接进行传输,实现了数据的跨进程传输和异步传输;
4、由于设备端的测试服务模块创建套接字连接并与设备端的标准输入和标准输出模块绑定,实现了通过同一个套接字连接进行执行命令的输入与结果的输出;
5、由于通过测试服务模块循环等待套接字连接的请求,一旦有请求就执行相应的测试命令,可实现单项或者多项的测试,如果在测试过程中对于有疑问需要复测的项,可以方便地再次进行单次测试进行复检;
6、由于电脑端与设备端通过USB线连接,实现了自动快速传输测试命令。
本发明的其它优点、目标和特征将部分通过下面的说明体现,部分还将通过对本发明的研究和实践而为本领域的技术人员所理解。
附图说明
图1为本发明的一个实施例中用于基于Android系统的设备的测试方法的流程示意图;
图2说明的是用于基于Android系统的设备的测试方法的系统的结构示意图。
具体实施方式
下面结合附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。
图1示出了根据本发明的一种实现形式,示出了用于基于Android系统的设备的测试方法的过程。其中包括:
步骤一、在电脑端创建测试项命令列表,所述命令列表中存储的命令对应于基于Android系统的设备端将进行的测试项目;
在其中一个实施例中,所述测试项命令列表中可以为单项测试命令列表,也可以为多项测试命令列表,所述测试项目为摄像头拍照、麦克风放音、蓝牙搜索设备测试或者其他硬件测试;
步骤二、连接设备端的Android系统调试工具adb端口;
步骤三、提取所述电脑端命令列表中命令转化成所述Android系统调试工具adb端口可识别处理的执行命令,通过USB连接发送至所述设备端,提高自动快速传输测试命令的速率;
步骤四、所述设备端的Android系统调试工具adb进程的核心子进程获取所述执行命令,调用linux系统的回显echo命令显示所述执行命令,并通过重定向技术输出给busybox-nc程序,所述busybox-nc程序连接并绑定到设备端的本机地址的其中一个网络端口,实现了实现网络端口的一致传输;
步骤五、所述设备端的init进程在设备开机后启动了测试服务模块,所述测试服务模块创建一个套接字Socket连接,所述套接字Socket连接监听所述网络端口的连接请求,所述执行命令写入所述套接字Socket连接;
在其中一个实施例中,首先所述基于Android系统的设备端的init进程在设备开机后启动了测试服务模块,其次所述测试服务模块获得所述设备端的最高控制权限root权限,创建一个套接字Socket连接并监听所述网络端口的连接请求,所述执行命令写入所述套接字Socket连接的数据缓冲池,实现了执行命令的输入与结果的输出;
步骤六、所述测试服务模块接受所述套接字Socket连接请求,执行所述执行命令,输出结果,所述结果通过所述核心子进程传输到所述电脑端,所述电脑端生成测试报告。
在其中一个实施例中,相关的输出会被写到设备端的标准输出模块中,也即是写回到套接字连接的缓存池中。套接字连接返回的输出结果又将被回传给busybox-nc进程。busybox-nc程序会将套接字连接的输出结果回传到父进程也即adb shell进程,接着adb shell进程会将输出结果回传给客户端即电脑端,最终该输出结果会被写到该测试项命令对应的日志文件中,实现测试命令与输出结果的一一对应,便于查询和复核。
在其中一个实施例中,所述测试服务模块循环等待接受所述套接字Socket连接请求,当接受到所述套接字Socket连接请求,所述测试服务模块会调用fork程序孵化出一个子进程,将所述套接字Socket连接和所述设备端的标准输入模块以及标准输出模块绑定,调用执行脚本先从所述标准输入模块读取所述数据缓存池中的所述执行命令,然后执行所述执行命令,输出结果,所述结果通过所述核心子进程传输到所述电脑端,所述电脑端生成测试报告,实现了自动循环,将人工参与测试的时间降到最低,节省了人力成本和时间成本。
在另一种实例中,所述测试项命令列表中的命令程序为所述Android系统设备中自带的程序或者为为了实现相应功能测试而编写的程序。并且,这种方式只是一种较佳实例的说明,但并不局限于此。在实施本发明时,可以根据实现功能的需求其他的实施态样。
图2示出了用于基于Android系统的设备的测试方法的测试系统来实现,该系统包括:
电脑端,其包括测试命令存储控制模块与测试结果报告生成模块,所述测试命令存储控制模块用于储存电脑端测试项列表中的命令,并控制将测试命令通过USB连接发送给设备端;所述测试结果报告生成模块负责在所有测试命令执行结束后,统计并分析测试日志数据并生成测试结果报告;
设备端,其安装Android系统并通过USB与所述电脑端连接,所述设备端包括Android系统调试工具adb服务模块与测试服务模块,所述Android系统调试工具adb服务模块用于获取所述电脑端发送的执行命令,调用linux系统的回显echo命令显示所述执行命令,并通过重定向技术输出给busybox-nc程序,所述busybox-nc程序用于连接所述设备端网络端口并传输所述执行命令,所述测试服务模块包括用于与所述busybox-nc程序通讯的的套接字Socket连接以及负责执行所述测试命令的孵化子进程模块,其中所述孵化子进程模块包括具体的命令执行模块,所述命令执行模块负责最终在设备端执行测试程序。
在另一种实例中,所述测试命令存储控制模块还用于提取所述电脑端命令列表中命令并转化成所述Android系统调试工具adb端口可识别处理的执行命令。
在另一种实例中,所述电脑端还包括测试结果报告生成模块,用于根据所述测试项的日志数据统计并分析生成测试结果报告。并且,这种方式只是一种较佳实例的说明,但并不局限于此。在实施本发明时,可以根据测试结果的生成包括其他的实施态样。
在另一种实例中,所述测试命令存储控制模块中包括一个或者多个测试项命令模块,用于编写和存储所述设备端进行测试项目的命令。并且,这种方式只是一种较佳实例的说明,但并不局限于此。在实施本发明时,可以根据测试项目的需求包括其他的实施态样。
这里说明的模块数量和处理规模是用来简化本发明的说明的。对本发明的用于基于Android系统的设备的测试方法及系统的应用、修改和变化对本领域的技术人员来说是显而易见的。
如上所述,根据本发明,由于在电脑端通过控制测试项命令,手动或者自动发送测试命令给Android设备端,控制Android设备端进行相关的基本功能测试,最后将测试结果返回电脑端生成单项或者多项测试的结果报告,用于工厂组装线,通过电脑的控制进行自动化测试,解决了生产线上对设备进行测试的效率问题;能够将人工参与测试的时间降到最低,节省人力成本和时间成本,同时,能够对测试项进行灵活配置和单项测试,更利于在实际中的应用。
尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用。它完全可以被适用于各种适合本发明的领域。对于熟悉本领域的人员而言,可容易地实现另外的修改。因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。