著录项信息
专利名称 | 自动化测试的方法及装置 |
申请号 | CN201310299087.2 | 申请日期 | 2013-07-16 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2013-11-20 | 公开/公告号 | CN103399814A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F11/36 | IPC分类号 | G;0;6;F;1;1;/;3;6查看分类表>
|
申请人 | 西安TCL软件开发有限公司 | 申请人地址 | 陕西省西安市高新区锦业一路50号英华达研发楼五层
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 西安TCL软件开发有限公司 | 当前权利人 | 西安TCL软件开发有限公司 |
发明人 | 张宁;张永峰;张艳宝;沈艺群 |
代理机构 | 深圳市世纪恒程知识产权代理事务所 | 代理人 | 胡海国 |
摘要
本发明涉及一种自动化测试的方法及装置,自动化测试的方法包括以下步骤:导入解析类,并建立所述解析类下的解析器;当接收到测试指令后,选择待测设备的各个测试项目的对应的脚本;将预先封装的接口函数导入所述解析器,运行脚本调用与各个测试项目相关的接口函数对相应的测试项目进行测试,本发明能够提高对智能设备进行测试的测试效率及测试质量。
1.一种自动化测试的方法,其特征在于,包括以下步骤:
导入解析类,并建立所述解析类下的解析器,所述解析器设置有扩展项,通过扩展项建立实现其他计算机语言的接口,定义命令和接口函数,提供开发的测试脚本;
当接收到测试指令后,选择待测设备的各个测试项目的对应的脚本;
将预先封装的接口函数导入所述解析器,运行脚本调用与各个测试项目相关的接口函数对相应的测试项目进行测试。
2.根据权利要求1所述的方法,其特征在于,所述将预先封装的接口函数导入所述解析器,运行脚本调用与各个测试项目相关的接口函数对相应的测试项目进行测试的步骤包括:
将预先封装的接口函数置于测试文件中;
通过预先建立的调用接口从所述测试文件中调用接口函数,将接口函数导入所述解析器,运行脚本调用与各个测试项目相关的接口函数对相应的测试项目进行测试。
3.根据权利要求1所述的方法,其特征在于,所述建立所述解析类下的解析器的步骤包括:
设置所述解析器对应的脚本的语言环境;
将所述脚本的语言环境初始化到所述解析类中;
导入应用程序接口的数据包,创建所述解析类下的解析器。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述将预先封装的接口函数导入所述解析器,运行脚本调用与各个测试项目相关的接口函数对相应的测试项目进行测试的步骤之后包括:
将所述测试项目的测试结果输出到图形化的输出窗口中,并将测试结果存储于与所述待测设备对应的目录数据库中。
5.一种自动化测试装置,其特征在于,包括建立模块、选择模块及测试模块,其中:
所述建立模块,用于导入解析类,并建立所述解析类下的解析器,所述解析器设置有扩展项,通过扩展项建立实现其他计算机语言的接口,定义命令和接口函数,提供开发的测试脚本;
所述选择模块,用于当接收到测试指令后,选择待测设备的各个测试项目的对应的脚本;
所述测试模块,用于将预先封装的接口函数导入所述解析器,运行脚本调用与各个测试项目相关的接口函数对相应的测试项目进行测试。
6.根据权利要求5所述的装置,其特征在于,所述测试模块包括存放单元及测试单元,存放单元,用于将预先封装的接口函数置于测试文件中;
测试单元,用于通过预先建立的调用接口从所述测试文件中调用接口函数,将接口函数导入所述解析器,运行脚本调用与各个测试项目相关的接口函数对相应的测试项目进行测试。
7.根据权利要求5所述的装置,其特征在于,所述建立模块包括设置单元、初始化单元及创建单元,
设置单元,用于设置所述解析器对应的脚本的语言环境;
初始化单元,用于将所述脚本的语言环境初始化到所述解析类中;
创建单元,用于导入应用程序接口的数据包,创建所述解析类下的解析器。
8.根据权利要求5至7任一项所述的装置,其特征在于,还包括输出模块,用于将所述测试项目的测试结果输出到图形化的输出窗口中,并将测试结果存储于与所述待测设备对应的目录数据库中。
自动化测试的方法及装置\n技术领域\n[0001] 本发明涉及自动化测试技术领域,尤其涉及一种自动化测试的方法及装置。\n背景技术\n[0002] 目前的智能设备越来越多,当产品进入系统测试阶段后,为了保证产品的质量,需要对其在模拟实际的环境下的功能和性能进行全面的测试,并根据在测试过程中所发现的缺陷,对其进行修正。\n[0003] 现有技术中还有部分在使用手工的方式进行智能设备的测试,但是手工测试需要执行大量重复的工作,测试效率低,必须要引入自动化测试。然而现有的自动化工具很少,一般只能用多个测试系统进行单项性能的测试,并且不少还存在不够完善的问题,甚至一些最基本的录制及播放功能也没有提供,造成测试效率及测试质量的降低。\n发明内容\n[0004] 本发明的主要目的在于提供一种自动化测试的方法及装置,旨在提高对智能设备进行测试的测试效率及测试质量。\n[0005] 为了达到上述目的,本发明提出一种自动化测试的方法,包括以下步骤:\n[0006] 导入解析类,并建立所述解析类下的解析器;\n[0007] 当接收到测试指令后,选择待测设备的各个测试项目的对应的脚本;\n[0008] 将预先封装的接口函数导入所述解析器,运行脚本调用与各个测试项目相关的接口函数对相应的测试项目进行测试。\n[0009] 优选地,所述将预先封装的接口函数导入所述解析器,运行脚本调用与各个测试项目相关的接口函数对相应的测试项目进行测试的步骤包括:\n[0010] 将预先封装的接口函数置于测试文件中;\n[0011] 通过预先建立的调用接口从所述测试文件中调用接口函数,将接口函数导入所述解析器,运行脚本调用与各个测试项目相关的接口函数对相应的测试项目进行测试。\n[0012] 优选地,所述建立所述解析类下的解析器的步骤包括:\n[0013] 设置所述解析器对应的脚本的语言环境;\n[0014] 将所述脚本的语言环境初始化到所述解析类中;\n[0015] 导入应用程序接口的数据包,创建所述解析类下的解析器。\n[0016] 优选地,所述将预先封装的接口函数导入所述解析器,运行脚本调用与各个测试项目相关的接口函数对相应的测试项目进行测试的步骤之后包括:\n[0017] 将所述测试项目的测试结果输出到图形化的输出窗口中,并将测试结果存储于与所述待测设备对应的目录数据库中。\n[0018] 本发明还提出一种自动化测试装置,包括建立模块、选择模块及测试模块,其中:\n[0019] 所述建立模块,用于导入解析类,并建立所述解析类下的解析器;\n[0020] 所述选择模块,用于当接收到测试指令后,选择待测设备的各个测试项目的对应的脚本;\n[0021] 所述测试模块,用于将预先封装的接口函数导入所述解析器,运行脚本调用与各个测试项目相关的接口函数对相应的测试项目进行测试。\n[0022] 优选地,所述测试模块包括存放单元及测试单元,\n[0023] 存放单元,用于将预先封装的接口函数置于测试文件中;\n[0024] 测试单元,用于通过预先建立的调用接口从所述测试文件中调用接口函数,将接口函数导入所述解析器,运行脚本调用与各个测试项目相关的接口函数对相应的测试项目进行测试。\n[0025] 优选地,所述建立模块包括设置单元、初始化单元及创建单元,[0026] 设置单元,用于设置所述解析器对应的脚本的语言环境;\n[0027] 初始化单元,用于将所述脚本的语言环境初始化到所述解析类中;\n[0028] 创建单元,用于导入应用程序接口的数据包,创建所述解析类下的解析器。\n[0029] 优选地,还包括输出模块,用于将所述测试项目的测试结果输出到图形化的输出窗口中,并将测试结果存储于与所述待测设备对应的目录数据库中。\n[0030] 本发明提供一种功能全面且操作简单的自动化测试的方法,通过导入解析类并建立解析类下的解析器,解析器提供了基本的内建指令及基本的接口函数,可以覆盖大部分的自动化测试,当该测试的方法应用于测试系统时,能够在单个测试系统中完成多项性能的测试;当接收到测试指令后,选择对应的脚本并运行,可以替代一些复杂或频繁的测试,提高测试效率及测试质量。\n附图说明\n[0031] 图1是本发明自动化测试的方法第一实施例的流程示意图;\n[0032] 图2是本发明自动化测试的方法第二实施例的流程示意图;\n[0033] 图3是图2中进行测试的流程示意图;\n[0034] 图4是图2中建立解析器的流程示意图;\n[0035] 图5是本发明自动化测试的装置第一实施例的结构示意图;\n[0036] 图6是本发明自动化测试的装置第二实施例的结构示意图;\n[0037] 图7是图6中测试模块的结构示意图;\n[0038] 图8是图6中建立模块的结构示意图。\n[0039] 为了使发明的技术方案更加清楚、明了,下面将结合附图作进一步详述。\n具体实施方式\n[0040] 具体地,如图1所示,图1是本发明自动化测试的方法第一实施例的流程示意图,包括:\n[0041] 步骤S101,导入解析类,并建立所述解析类下的解析器;\n[0042] 具体的,实施本实施例中主体可以是测试终端,测试终端可以是电脑或者其他的智能设备。还可以在测试终端中建立一测试系统,该测试系统中嵌入Monkeyrunner测试工具或Python测试工具等测试工具。\n[0043] 其中,解析类是对某种类型的对象定义变量和方法的原型,其表示对一类具有共同特征的事物的抽象。\n[0044] 其中,解析器是脚本语言工作的核心,所有具体指令或是函数的执行都由解析器来完成。解析器提供了基本的内建指令或基本的接口函数,不同厂商或版本的解析器所提供的内建命令或接口函数可能不同。解析器的扩展项实现了与其它计算机语言的接口,例如可以使脚本语言运行C语言或者C++语言或者java语言等语言的接口函数,在具体应用中可以定义命令和其他接口函数,使应用更加灵活。\n[0045] 其中,解析类下的解析器可以创建一个,也可以创建多个。\n[0046] 步骤S102,当接收到测试指令后,选择待测设备的各个测试项目的对应的脚本;\n[0047] 其中,当对待测设备的各个需要测试的测试项目进行测试时,选择待测设备的各个测试项目的对应的脚本,具体地,例如可以从测试终端的脚本管理界面中选择待测设备的各个测试项目的对应的脚本,或者通过其他的方式得到待测设备的各个测试项目的对应的脚本。\n[0048] 其中,待测设备可以是Android系统平台的设备,也可以是其他系统平台的设备。\n[0049] 其中,待测设备的测试项目的数量可以是一个,也可以是多个。\n[0050] 步骤S103,将预先封装的接口函数导入所述解析器,运行脚本调用与各个测试项目相关的接口函数对相应的测试项目进行测试。\n[0051] 其中,接口函数可以是测试开发人员所开发的接口函数,也可以是现有的一些常用的接口函数。常用的一些接口函数包括报表接口函数、录制接口函数等回放接口函数等。\n[0052] 其中,可以将预先封装的全部接口函数导入解析器,以使在运行脚本的过程中能够识别所用到的接口函数,降低运行过程中报错的几率。\n[0053] 本实施例可以看成测试终端上的一个测试系统的工作流程,该测试系统为自动化测试系统,且具备可拓展性,能够提供底层操作的一些函数库,如Python中的库可以导入到测试系统中,能够较为方便地开发一些性能或功能的测试脚本,如UI压力测试、稳定性测试或者apk批量安装测试等等。\n[0054] 其中,以测试终端为例,当测试终端与待测设备建立连接后,测试终端可以通过待测设备的系统提供的通讯工具与待测设备进行通信,例如当待测设备的系统为Android系统时,可通过monkeyrunner API、标准Python os及subprocess等模块调用Android Debug Bridge与待测设备进行通信。\n[0055] 与现有技术相比,本实施例自动化测试的方法,通过导入解析类并建立解析类下的解析器,解析器提供了基本的内建指令及基本的接口函数,而扩展项实现了与其它计算机语言的接口,在具体应用中可以定义命令和其他接口函数,使应用更加灵活。\n[0056] 通过上述描述可以看出:本实施例提供一种功能全面且操作简单的自动化测试的方法,通过导入解析类并建立解析类下的解析器,解析器提供了基本的内建指令及基本的接口函数,可以覆盖大部分的自动化测试;当接收到测试指令后,选择对应的脚本并运行,可以替代一些复杂或频繁的测试,提高测试效率及测试质量。\n[0057] 如图2所示,图2是本发明自动化测试的方法第二实施例的流程示意图,在上述第一实施例的基础上,在步骤S103之后还包括步骤S104,其中:\n[0058] 步骤S104,将所述测试项目的测试结果输出到图形化的输出窗口,并将测试结果存储于与所述待测设备对应的目录数据库中。\n[0059] 其中,测试结果包含的信息包括脚本名称及运行时间等等。\n[0060] 其中,当使用的是Python中的输出函数或者其他类似输出函数进行输出时,可以重新对输出函数进行图形化设置,在脚本执行过程中,当调用输出函数打印测试信息(包括每运行一步输出的测试结果和提示信息等)时,将测试信息发送到输出窗口,输出窗口接收到指令后,调用窗口内部函数将测试结果输出到图形化的输出窗口中。\n[0061] 进一步地,在将测试项目的测试结果输出到图形化的输出窗口之前,检测是否存在与待测设备对应的目录数据库,若存在与待测设备对应的目录数据库,则将测试结果存储于目录数据库中;若不存在与待测设备对应的目录数据库,则创建与待测设备对应的目录数据库并将测试结果存储于目录数据库中。\n[0062] 如图3所示,图3是本发明自动化测试的方法第二实施例中进行测试的流程示意图,在上述图2所示的实施例的基础上,步骤S103包括:\n[0063] 步骤S1031,将预先封装的接口函数置于测试文件中;\n[0064] 步骤S1032,通过预先建立的调用接口从所述测试文件中调用接口函数,将接口函数导入所述解析器,运行脚本调用与各个测试项目相关的接口函数对相应的测试项目进行测试。\n[0065] 其中,将预先封装的接口函数置于测试文件中,当对待测设备的各个需要测试的测试项目进行测试时,可以从测试文件中调用接口函数进行测试。\n[0066] 进一步地,可以在解析器中设置变量,比如设置只读变量或者公用的全局变量;也可以修改解析器中的变量。当运行脚本并对所述测试项目进行测试完成后,可以读取这些变量的值。\n[0067] 如图4所示,图4是本发明自动化测试的方法第二实施例中建立解析器的流程示意图。在上述图2所示的实施例的基础上,步骤S101包括:\n[0068] 步骤S1011,设置所述解析器对应的脚本的语言环境;\n[0069] 步骤S1012,将所述脚本的语言环境初始化到所述解析类中;\n[0070] 步骤S1013,导入应用程序接口的数据包,创建所述解析类下的解析器。\n[0071] 比如,可以修改python中的搜索默认库路径和verbose,executable,其代码如下所示:\n[0072] Properties prop = new Properties();\n[0073] Prop.setProperty("python.path",sb.toString());\n[0074] prop.setProperty("python.verbose","error");\n[0075] prop.setProperty("python.executable",executablePath);\n[0076] PythonInterpreter.initialize(System.getProperties(),prop,argv);\n[0077] PythonInterpreter python = new PythonInterpreter()。\n[0078] 其中,PythonInterpreter.initialize(System.getProperties(),prop,argv)为将上述修改后的设置初始化到解析类中;PythonInterpreter python = new PythonInterpreter()为创建解析器。\n[0079] 其中,可以导入自动化通讯的API数据包,导入后就能使用这些自动化接口。例如,待测设备的系统为Android系统时,可以导入monkeyrunner API的数据包,当导入monkeyrunner API的数据包后,可以使用控制待测设备的接口。\n[0080] 如图5所示,图5是本发明自动化测试的装置第一实施例的结构示意图,包括建立模块201、选择模块202及测试模块203,其中,\n[0081] 建立模块201,用于导入解析类,并建立所述解析类下的解析器;\n[0082] 其中,本实施例中的装置可以是测试终端,测试终端可以是电脑或者其他的智能设备。还可以在测试终端中建立一测试系统,该测试系统中嵌入Monkeyrunner测试工具或Python测试工具等测试工具。\n[0083] 其中,解析类是对某种类型的对象定义变量和方法的原型,其表示对一类具有共同特征的事物的抽象。\n[0084] 其中,解析器是脚本语言工作的核心,所有具体指令或是函数的执行都由解析器来完成。解析器提供了基本的内建指令或基本的接口函数,不同厂商或版本的解析器所提供的内建命令或接口函数可能不同。解析器的扩展项实现了与其它计算机语言的接口,例如可以使脚本语言运行C语言或者C++语言或者java语言等语言的接口函数,在具体应用中可以定义命令和其他接口函数,使应用更加灵活。\n[0085] 其中,解析类下的解析器可以创建一个,也可以创建多个。\n[0086] 选择模块202,用于当接收到测试指令后,选择待测设备的各个测试项目的对应的脚本;\n[0087] 其中,当对待测设备的各个需要测试的测试项目进行测试时,选择待测设备的各个测试项目的对应的脚本,具体地,例如可以从测试终端的脚本管理界面中选择待测设备的各个测试项目的对应的脚本,或者通过其他的方式得到待测设备的各个测试项目的对应的脚本。\n[0088] 其中,待测设备可以是Android系统平台的设备,也可以是其他系统平台的设备。\n[0089] 其中,待测设备的测试项目的数量可以是一个,也可以是多个。\n[0090] 测试模块203,用于将预先封装的接口函数导入所述解析器,运行脚本调用与各个测试项目相关的接口函数对相应的测试项目进行测试。\n[0091] 其中,接口函数可以是测试开发人员所开发的接口函数,也可以是现有的一些常用的接口函数。常用的一些接口函数包括报表接口函数、录制接口函数等回放接口函数等。\n[0092] 其中,可以将预先封装的全部接口函数导入解析器,以使在运行脚本的过程中能够识别所用到的接口函数,降低运行过程中报错的几率。\n[0093] 本实施例可以看成测试终端上的一个测试装置,该测试装置为自动化测试装置,且具备可拓展性,能够提供底层操作的一些函数库,如Python中的库可以导入到测试装置中,能够较为方便地开发一些性能或功能的测试脚本,如UI压力测试、稳定性测试或者apk批量安装测试等等。\n[0094] 其中,以测试终端为例,当测试终端与待测设备建立连接后,测试终端可以通过待测设备的系统提供的通讯工具与待测设备进行通信,例如当待测设备的系统为Android系统时,可通过monkeyrunner API、标准Python os及subprocess等模块调用Android Debug Bridge与待测设备进行通信。\n[0095] 与现有技术相比,本实施例自动化测试的装置,建立模块201导入解析类并建立解析类下的解析器,解析器提供了基本的内建指令及基本的接口函数,而扩展项实现了与其它计算机语言的接口,在具体应用中可以定义命令和其他接口函数,使应用更加灵活。\n[0096] 如图6所示,图6是本发明自动化测试的装置第二实施例的结构示意图,在上述图5实施例的基础上,本发明的自动化测试的装置还包括输出模块204,其中:\n[0097] 输出模块204,用于将所述测试项目的测试结果输出到图形化的输出窗口,并将测试结果存储于与所述待测设备对应的目录数据库中。\n[0098] 其中,测试结果包含的信息包括脚本名称及运行时间等等。\n[0099] 其中,当使用的是Python中的输出函数或者其他类似输出函数进行输出时,可以重新对输出函数进行图形化设置,在脚本执行过程中,当调用输出函数打印测试信息(包括每运行一步输出的测试结果和提示信息等)时,将测试信息发送到输出窗口,输出窗口接收到指令后,调用窗口内部函数将测试结果输出到图形化的输出窗口中。\n[0100] 进一步地,在将测试项目的测试结果输出到图形化的输出窗口之前,检测是否存在与待测设备对应的目录数据库,若存在与待测设备对应的目录数据库,则将测试结果存储于目录数据库中;若不存在与待测设备对应的目录数据库,则创建与待测设备对应的目录数据库并将测试结果存储于目录数据库中。\n[0101] 如图7所示,图7是本发明自动化测试的装置第二实施例中测试模块的结构示意图,测试模块203包括存放单元2031及测试单元2032。\n[0102] 存放单元2031,用于将预先封装的接口函数置于测试文件中;\n[0103] 测试单元2032,用于通过预先建立的调用接口从所述测试文件中调用接口函数,将接口函数导入所述解析器,运行脚本调用与各个测试项目相关的接口函数对相应的测试项目进行测试。\n[0104] 其中,存放单元2031将预先封装的接口函数置于测试文件中,当对待测设备的各个需要测试的测试项目进行测试时,可以从测试文件中调用接口函数进行测试。\n[0105] 进一步地,可以在解析器中设置变量,比如设置只读变量或者公用的全局变量;也可以修改解析器中的变量。当运行脚本并对所述测试项目进行测试完成后,可以读取这些变量的值。\n[0106] 如图8所示,图8是本发明自动化测试的装置第二实施例中建立模块的结构示意图,建立模块201包括设置单元2011、初始化单元2012及创建单元2013。\n[0107] 设置单元2011,用于设置所述解析器对应的脚本的语言环境;\n[0108] 初始化单元2012,用于将所述脚本的语言环境初始化到所述解析类中;\n[0109] 创建单元2013,用于导入应用程序接口的数据包,创建所述解析类下的解析器。\n[0110] 比如,可以修改python中的搜索默认库路径和verbose,executable,其代码如下所示:\n[0111] Properties prop = new Properties();\n[0112] Prop.setProperty("python.path",sb.toString());\n[0113] prop.setProperty("python.verbose","error");\n[0114] prop.setProperty("python.executable",executablePath);\n[0115] PythonInterpreter.initialize(System.getProperties(),prop,argv);\n[0116] PythonInterpreter python = new PythonInterpreter()。\n[0117] 其中,PythonInterpreter.initialize(System.getProperties(),prop,argv)为将上述修改后的设置初始化到解析类中;PythonInterpreter python = new PythonInterpreter()为创建解析器。\n[0118] 其中,可以导入自动化通讯的API数据包,导入后就能使用这些自动化接口。例如,待测设备的系统为Android系统时,可以导入monkeyrunner API的数据包,当导入monkeyrunner API的数据包后,可以使用控制待测设备的接口。\n[0119] 通过上述描述可以看出:本发明提供一种功能全面且操作简单的自动化测试的方法,通过导入解析类并建立解析类下的解析器,解析器提供了基本的内建指令及基本的接口函数,可以覆盖大部分的自动化测试,当该测试的方法应用于测试系统时,能够在单个测试系统中完成多项性能的测试;当接收到测试指令后,选择对应的脚本并运行,可以替代一些复杂或频繁的测试,提高测试效率及测试质量。\n[0120] 以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
法律信息
- 2018-01-19
- 2014-10-29
实质审查的生效
IPC(主分类): G06F 11/36
专利申请号: 201310299087.2
申请日: 2013.07.16
- 2013-11-20
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2008-07-02
|
2006-12-26
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |