应用测试的方法、中控服务器、测试终端及系统的制作方法

文档序号:6639663阅读:243来源:国知局
应用测试的方法、中控服务器、测试终端及系统的制作方法
【专利摘要】本发明公开了一种应用测试的方法、中控服务器、测试终端及系统,涉及自动化测试领域,为解决现有测试过程复杂、繁琐、易用性较差的问题而发明。本发明的方法包括:接收用例管理平台下发的测试指令,该测试指令中携带有安APK标识以及使用脚本语言编写的测试用例,根据APK标识获取作为测试对象的APK,生成APK的辅助测试包,并在辅助测试包中封装脚本引擎以及测试所需的基本信息,将APK、测试用例、辅助测试包以及函数库下发给测试终端。本发明主要应用公有云环境下的应用测试过程中。
【专利说明】应用测试的方法、中控服务器、测试终端及系统

【技术领域】
[0001]本发明涉及自动化测试领域,尤其涉及一种应用测试的方法、中控服务器、测试终端及系统。

【背景技术】
[0002]用户界面(User Interface,简称UI)测试一般包括布局测试、内容测试(包括文字和图片)、风格测试、控件测试等内容。对于布局、内容风格、字体等测试对象,通常采用静态方式进行测试,例如使用点检表结合人工观察的方式获得测试结果。而对于用户界面中的控件来说,由于其具有人机交互的特性,能够向用户提供诸如界面跳转、开关控制、文字输入等交互性功能,因此现有技术中往往采用动态方式对UI中的控件进行测试。
[0003]现有的动态测试方式主要包括:通过编写测试用例对被测试对象、测试方式、预期结果等内容进行界定。在日常生产实践的过程中发明人发现,针对安卓(Android)应用的UI测试用例通常是基于JAVA语言编写的。测试人员在编写测试用例前需要下载安装安卓软件开发工具包(Software Development Kit,简称SDK),并搭建安卓开发环境(涉及JDK、EcI ipse、ADT等内容),使用起来较为繁琐,特别是当测试用例的可移植性较差时,大量编写测试用例会极大延长用例开发的周期。此外,JAVA语言本身属于一种较为重量级的语言,相对非专业人士而言较为晦涩难懂,测试人员很难在较短时间内掌握并灵活运用JAVA语言,因此JAVA语言在用例编写方面还存在着易用性较差的问题。


【发明内容】

[0004]鉴于上述问题,提出了一种应用测试的方法、中控服务器、测试终端及系统,能够解决现有测试过程复杂、繁琐、易用性较差的问题。
[0005]为解决上述问题,在第一方面中,本发明提供了一种应用于中控服务器侧的应用测试的方法,该方法包括:
[0006]接收用例管理平台下发的测试指令,测试指令中携带有安卓安装包APK标识以及使用脚本语言编写的测试用例;
[0007]根据APK标识获取作为测试对象的APK ;
[0008]生成APK的辅助测试包,并在辅助测试包中封装脚本引擎以及测试所需的基本信息;
[0009]将APK、测试用例、辅助测试包以及函数库下发给测试终端;
[0010]其中,函数库中包含有具有不同测试功能的脚本文件,脚本文件由测试用例所调用。
[0011]在第二方面中,本发明提供了一种应用于测试终端侧的应用测试的方法,该方法包括:
[0012]接收中控服务器下发的安卓安装包APK、测试用例、辅助测试包以及函数库,其中,APK为测试对象,测试用例使用脚本语言编写,辅助测试包中封装有脚本引擎以及测试所需的基本信息,函数库中包含有具有不同测试功能的脚本文件,脚本文件由测试用例所调用;
[0013]在JAVA环境下运行APK及辅助测试包;
[0014]通过辅助测试包中的脚本引擎解释测试用例,获得JAVA格式的测试用例;
[0015]执行JAVA格式的测试用例,并进一步解释执行JAVA格式的测试用例所调用的脚本文件。
[0016]在第三方面中,本发明提供了一种中控服务器,该中控服务器包括:
[0017]接收单元,用于接收用例管理平台下发的测试指令,测试指令中携带有安卓安装包APK标识以及使用脚本语言编写的测试用例;
[0018]获取单元,用于根据接收单元接收的APK标识获取作为测试对象的APK ;
[0019]生成单元,用于生成获取单元获取的APK的辅助测试包,并在辅助测试包中封装脚本引擎以及测试所需的基本信息;
[0020]发送单元,用于将获取单元获取的APK、测试用例、辅助测试包以及函数库下发给测试终端;
[0021 ] 其中,函数库中包含有具有不同测试功能的脚本文件,脚本文件由测试用例所调用。
[0022]在第四方面中,本发明提供了一种测试终端,该测试终端包括:
[0023]接收单元,用于接收中控服务器下发的安卓安装包APK、测试用例、辅助测试包以及函数库,其中,APK为测试对象,测试用例使用脚本语言编写,辅助测试包中封装有脚本引擎以及测试所需的基本信息,函数库中包含有具有不同测试功能的脚本文件,脚本文件由测试用例所调用;
[0024]测试单元,用于:
[0025]在JAVA环境下运行接收单元接收的APK及辅助测试包;
[0026]通过辅助测试包中的脚本引擎解释测试用例,获得JAVA格式的测试用例;
[0027]执行JAVA格式的测试用例,并进一步解释执行JAVA格式的测试用例所调用的脚本文件。
[0028]在第五方面中,本发明提供了一种应用测试的系统,该系统包括用例管理平台、中控服务器及测试终端;
[0029]用例管理平台,用于为测试人员提供对测试用例进行增、改、删、查的Web页面,接收并向中控服务器发送测试人员触发的测试指令,测试指令中携带有测试人员选择的安卓安装包APK标识以及使用脚本语言编写的测试用例;
[0030]中控服务器,用于接收用例管理平台下发的测试指令,根据APK标识获取作为测试对象的APK,生成APK的辅助测试包,并在辅助测试包中封装脚本引擎以及测试所需的基本信息,将APK、测试用例、辅助测试包以及函数库下发给测试终端,其中,函数库中包含有具有不同测试功能的脚本文件,脚本文件由测试用例所调用;
[0031]测试终端,用于在JAVA环境下运行APK及辅助测试包,通过辅助测试包中的脚本引擎解释测试用例,获得JAVA格式的测试用例,执行JAVA格式的测试用例,并进一步解释执行JAVA格式的测试用例所调用的脚本文件。
[0032]本发明提供的应用测试的方法、中控服务器、测试终端及系统,能够通过用例管理平台向测试人员提供脚本语言编写的测试用例,在测试人员选择出被测试的APK及测试用例后,用例管理平台将中控服务器下发测试指令,由中控服务器为被测APK生成封装有脚本引擎的辅助测试包,并控制测试终端对APK进行测试。与现有技术相比,本发明无需测试人员自行搭建安卓开发环境并编写测试用例,测试人员只需在Web页面中选择好被测APK及测试所需的测试用例即可完成应用测试,使用起来方便快捷。此外,本发明中的测试用例和函数库均采用了更加轻量级的脚本语言进行编写,能够消除JAVA语言晦涩难懂的缺陷,更加适用非专业编程人员使用,拓宽了应用测试的使用范围。
[0033]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。

【专利附图】

【附图说明】
[0034]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0035]图1示出了本发明实施例提供的一种应用测试的方法流程图;
[0036]图2示出了本发明实施例提供的另一种应用测试的方法流程图;
[0037]图3示出了本发明实施例提供的一种应用测试的交互示意图;
[0038]图4示出了本发明实施例提供的中控服务器的结构示意图;
[0039]图5示出了本发明实施例提供的另一种中控服务器的结构示意图;
[0040]图6示出了本发明实施例提供的测试终端的结构示意图;
[0041]图7示出了本发明实施例提供的另一种测试终端的结构示意图;
[0042]图8示出了本发明实施例提供的一种应用测试的系统示意图。

【具体实施方式】
[0043]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0044]为简化应用测试的操作步骤、降低对测试人员的专业性要求,本发明公开了一种应用测试的方法,该方法主要应用于中控服务器一侧。如图1所示,该方法包括:
[0045]101、中控服务器接收用例管理平台下发的测试指令。
[0046]在测试人员通过用例管理平台选择出需要测试的APK以及测试使用的测试用例后,中控服务器接收用例管理平台下发的测试指令,该测试指令中携带有测试人员APK的APK标识以及测试用例。本实施例中,测试用例通过可嵌入式的脚本语言编写,实际应用中,编写测试用例所采用的脚本语言包括但不限于是:Ch(C/C++interpreter)、Dao、ECMAScript、GameMonkeyScript > Guile、IC1、Lua、RBScript (REALbasic Script)、Squirrel、Tcl、Z-Script。在本实施例的一种实现方式中,所述测试用例可以是由测试人员手动编写的测试用例,也可以是用例管理平台提供的测试用例。上述测试用例可以保存在专门的数据库中,由用例管理平台或中控服务器通过特定的数据接口读取或写入,或者,上述测试用例也可以直接保存在用例管理平台或中控服务器中,本实施例不对测试用例的具体来源进行限制。
[0047]102、中控服务器根据APK标识获取作为测试对象的APK。
[0048]在接收到测试指令后,中控服务器根据其中的APK标识查找并获取待测试的APK,该APK用于后续下发给测试终端运行使用。
[0049]103、中控服务器生成APK的辅助测试包,并在辅助测试包中封装脚本引擎以及测试所需的基本信息。
[0050]除作为测试对象的APK外,中控服务器还需为该APK生成一个辅助测试包。由于测试用例是使用脚本语言编写的,而APK在测试终端中的运行环境为安卓操作系统,因此中控服务器需要为测试终端提供一个脚本引擎,该脚本引擎中包含脚本解释器,用于将脚本格式的文件转换为JAVA格式的文件。在本实施例中,该脚本引擎即是封装在辅助测试包中提供给测试终端的。实际应用中,也可以将脚本引擎直接配置在测试终端中,如是操作,本步骤中就不必在辅助测试包中封装脚本引擎了。
[0051]除封装有测试使用的脚本引擎外,中控服务器还可以在辅助测试包中加入被测APK的基本信息,例如APK名称、APK标识、APK版本、启动项Activity的名称/标识等。
[0052]104、中控服务器将APK、测试用例、辅助测试包以及函数库下发给测试终端。
[0053]在获得被测APK及辅助测试包后,中控服务器将其两者连同测试用例以及函数库一同下发给测试终端。其中,该函数库可以是Iib函数库,用于保存一系列具有不同测试功能的脚本文件。在测试过程中,这些脚本文件主要由测试用例所调用,以进行不同目的的测试。实际应用中,测试用例的头部写有脚本文件的调用路径语句,测试终端执行该调用路径语句即可调用并执行相应的脚本文件。
[0054]与测试用例类似,本实施例中的函数库也可以是预先写好的并保存在数据库或中控服务器中的。在一些场景中,函数库也可以在下发给测试终端后,被永久写入到测试终端的存储区域中,在后续的测试过程中,中控服务器就不必再向测试终端下发函数库了。
[0055]下面,本实施例将基于图2所示的流程图,对测试终端如何基于上述数据测试APK进行说明。如图2所示:
[0056]201、测试终端接收中控服务器下发的APK、测试用例、辅助测试包以及函数库。
[0057]在接收到上述数据后,测试终端将其保存在外部存储区域中,以便后续调取使用。实际应用中,当测试终端不具有固定的存取区域时,也可以将上述数据保存在可插拔是存储介质中,例如SD卡。此方式下,需要保证存储介质与测试终端之间通信的稳定性,防止因数据读写中断对测试过程造成影响。
[0058]202、测试终端在JAVA环境下运行APK及辅助测试包。
[0059]在接收到上述数据后,测试终端启动运行被测试APK以及辅助测试包,根据辅助测试包中携带的启动项Activity的名称/标识定位APK的首页面,并从该首页面起始进行测试。
[0060]203、测试终端通过辅助测试包中的脚本引擎解释测试用例,获得JAVA格式的测试用例。
[0061]如前所述,本实施例中的测试用例以及函数库均是由脚本语言编写而成的,因此挡在安卓环境下运行时,需要通过脚本解释器脚本格式的文件进行转换。测试终端通过脚本引擎中携带的脚本解释器(当然,也可以是终端侧配置好的脚本解释器)对测试用例进行解释,获得在安卓环境下执行的JAVA格式的测试用例。
[0062]204、测试终端执行JAVA格式的测试用例,并进一步解释执行JAVA格式的测试用例所调用的脚本文件。
[0063]如前所述,测试用例的头部写有脚本文件的调用路径,在执行测试用例时,测试终端读取该调用路径,从函数库中调用对应的脚本文件。与解释测试用例类似的,测试终端同样需要通过脚本解释器对脚本文件进行解释,转换为JAVA格式的测试文件进行执行,由此完成APK的自动化测试过程。
[0064]本实施例提供的应用测试的方法,能够通过用例管理平台向测试人员提供脚本语言编写的测试用例,在测试人员选择出被测试的APK及测试用例后,用例管理平台将中控服务器下发测试指令,由中控服务器为被测APK生成封装有脚本引擎的辅助测试包,并控制测试终端对APK进行测试。与现有技术相比,本发明无需测试人员自行搭建安卓开发环境并编写测试用例,测试人员只需在Web页面中选择好被测APK及测试所需的测试用例即可完成应用测试,使用起来方便快捷。此外,本发明中的测试用例和函数库均采用了更加轻量级的脚本语言进行编写,能够消除JAVA语言晦涩难懂的缺陷,更加适用非专业编程人员使用,拓宽了应用测试的使用范围。
[0065]进一步的,作为对图1或图2所示方法的细化及扩展,本发明的另一实施例还提供了一种应用测试的方法。为便于理解,本实施例将从用例管理平台、中控服务器以及测试终端三侧进行说明。如图3所示,该方法包括:
[0066]301、用例管理平台接收测试人员触发的测试指令。
[0067]本实施例中,用例管理平台用于存储、管理各种脚本格式的测试用例,并能够通过Web页面实现与测试人员之间的人机交互过程。基于用例管理平台,测试人员可以在Web页面中编写、上传、修改、删除、查看测试用例。在进行应用测试时,测试人员也可以在Web页面上选择被测试的APK以及测试用例。
[0068]在本实施例的一种实现方式中,测试人员在选择APK后,可以在用例列表中选择需要使用的一个或多个预先编写好的测试用例,也可以在特定的编辑页面中编写测试用例。在确定测试用例后,用例管理平台向中控服务器下发测试指令。
[0069]302、中控服务器接收用例管理平台下发的测试指令。
[0070]在获得测试指令后,中控服务器获取预设的映射关系表,该映射关系表用于记录APK标识与APK存储路径之间的对应关系。中控服务器根据测试指令中携带的APK标识遍历该关系表,查找对应该APK标识的存储路径,然后通过该存储路径查找并获取待测试的APK0
[0071]在获得待测试APK后,中控服务器为其生成辅助测试包。本实施例中,测试终端采用Instrumentat1n工具进行应用测试,基于Instrumentat1n机制,中控服务器需要对APK的签名信息和/或辅助测试包的签名信息进行重签名处理,使两者具有相同的签名信息,由此保证测试终端能够将辅助测试包注入到APK的进程中执行。
[0072]除上述APK、测试用例、辅助测试包外,中控服务器还需要将测试用例使用的函数库发送给测试终端。在本实施例的一种实现方式中,当测试终端首次进行应用测试时,中控服务器从数据库中读取函数库并下发给测试终端,由测试终端进行保存。在后续的测试过程中,除函数库存在更新外,中控服务器不再向测试终端下发函数库。
[0073]本实施例中,函数库中包含具有不同测试功能的脚本文件,这些脚本文件功能大致可以分为下述几种类型:
[0074]Π操作类、截图类、断言类、APK管理类、按键模拟类、进程类、文件操作类、时间类、Activity获取类、数据库类、APK配置文件管理类、Root权限获取判断类、配置管理类。
[0075]需要说明的是,上述脚本文件类型仅为示例性说明,不作为对本实施例方案的限制。
[0076]303、中控服务器将APK、测试用例、辅助测试包以及函数库下发给测试终端。
[0077]在本实施例中,中控服务器可以直接连接测试终端,也可以通过中继设备连接测试终端。对于前者方式,在本实施例的一种实现方式中,中控服务器通过wif1、蓝牙等无线网络与测试终端进行数据交互,下发APK、测试用例、辅助测试包、函数库等数据。而对于后者方式而言,中控服务器则可以通过有线或无线网络向诸如代理服务器下发APK、测试用例等数据,并由代理服务器向通过通用串行总线(Universal Serial Bus,简称USB)接口连接于代理服务器的测试终端下发上述数据。本实施例不对中控服务器与测试终端之间的数据交互方式进行限制。
[0078]在数据发送方式上,中控服务器可以通过安卓Debug桥(Android Debug Bridge,简称ADB)工具进行数据推送。借助ADB工具的PUSH命令,中控服务器可以将APK、测试用例等数据直接推送到测试终端的SD卡上。
[0079]在本实施例的一个应用场景中,中控服务器可以连接有多台测试终端。测试人员可以通过不同的测试终端对相同或不同的APK同时进行测试。当对同一 APK进行多终端测试时,中控服务器可以剔除个体测试终端随机产生的因素,使测试结果更加准确。而当对不同APK同时进行测试时,中控服务器向则可以向不同测试终端发送不同的APK及测试用例等数据,从而使各台测试终端可以独立并行的执行不同的测试任务。
[0080]进一步的,作为对本实施例的改进,为降低中控服务器与测试终端之间交互的数据量,中控服务器也可以仅向测试终端下发测试用例调用的脚本文件。具体的,在下发函数库之前,中控服务器对测试用例进行解析,获得测试用例中的函数调用接口,该函数调用接口即为测试用例头部所写入的脚本文件的调用路径。在获取到函数调用接口后,中控服务器访问函数库,查找该函数调用接口所调用的脚本文件,生成脚本文件集合。最后,以脚本文件集合替代函数库下发给测试终端。
[0081]在接收到测试相关的数据后,测试终端构造初始环境,在JAVA环境下运行APK及辅助测试包,并调用Instrumentat1n工具运行APK。本实施例中,由于APK与辅助测试包的签名信息相同,因此测试终端可以根据相同的签名信息,将辅助测试包注入到APK的进程中。
[0082]在同一进程中,测试终端通过辅助测试包中的脚本引擎解释测试用例,获得JAVA格式的测试用例,执行JAVA格式的测试用例,并进一步解释执行JAVA格式的测试用例所调用的脚本文件。
[0083]进一步的,在本实施例的另一种实现方式中,为防止应用测试耗时过长或者陷入死循环,测试终端还可以根据中控服务器的命令设置测试时长。在启动进行应用测试时,测试终端开始进行计时,当测试过程的耗时超过预设时长(例如10分钟)时,如果尚未得到测试结果,测试终端则终止测试过程。
[0084]304、测试测试终端向中控服务器上报测试结果。
[0085]在完成测试后,测试终端将测试结果上报给中控服务器,由中控服务器将测试结果上报给用例管理平台,以便测试人员查看之用。特别的,当使用多个测试终端对同一 APK进行并行测试时,中控服务器还需对接收的多个测试结果进行筛选、去重等处理,获得稳定准确的测试结果。此外,在本实施例中,当测试终端获得测试相关的数据后,也可以与中控服务器断开连接,转为离线模式执行测试任务。或者,测试终端还可以预先通过中控服务器下载待测试的APK及测试工具包(包括脚本引擎、函数库等),当无法连接网络时,启动离线模式执行测试任务。对于离线测试方式,测试终端于本地保存测试结果,不要求向中控服务器进行上报。同时,测试终端还可以通过屏幕、扬声器或指示灯等输出设备输出测试结果,供测试人员查看。
[0086]进一步的,在实际应用中,上述图3所示方式主要应用于私有云环境中,应用测试方建立自身的应用测试系统,对自主开发或第三方委托测试的应用进行自动化测试。而在本发明的另一实施例中,上述图3所示方式也可用于公有云环境下。应用测试方可以向第三方开放自动化测试的接口,由第三方基于该应用测试系统独立进行自动化测试。具体的,中控服务器向第三方开放用例管理平台的应用程序接口(Applicat1n ProgramInterface,简称API)。在鉴权通过后,第三方可以通过独立的账号进入到用例管理平台的Web页面中,使用用例管理平台提供的测试用例,并通过中控服务器及测试终端完成第三方应用的测试。此外,中控服务器还可以将测试终端的API开放给第三方,允许第三方使用自己的测试终端进行测试。实际应用中,第三方的测试终端可以通过USB接口直接连接到第三方测试人员使用的电脑或服务器上,实现与应用测试系统的对接。当测试人员在用例管理平台中下发测试指令后,中控服务器通过API接口将测试相关数据发送给第三方的测试终端,并且可以回收相应的测试结果。
[0087]进一步的,作为对上述各方法实施例的实现,本发明另一实施例还提供了一种中控服务器,用以实现上述各方法实施例。如图4所示,该中控服务器包括:接收单元41、获取单元42、生成单元43以及发送单元44,其中:
[0088]接收单元41,用于接收用例管理平台下发的测试指令,测试指令中携带有安卓安装包APK标识以及使用脚本语言编写的测试用例;
[0089]获取单元42,用于根据接收单元41接收的APK标识获取作为测试对象的APK ;
[0090]生成单元43,用于生成获取单元42获取的APK的辅助测试包,并在辅助测试包中封装脚本引擎以及测试所需的基本信息;
[0091]发送单元44,用于将获取单元42获取的APK、测试用例、辅助测试包以及函数库下发给测试终端;
[0092]其中,函数库中包含有具有不同测试功能的脚本文件,脚本文件由测试用例所调用。
[0093]进一步的,如图5所示,获取单元42,包括:
[0094]查找模块421,用于在预设的映射关系表中查找对应APK标识的存储路径;
[0095]获取模块422,按照查找模块421查找到的存储路径查找并获取APK。
[0096]进一步的,如图5所示,该中控服务器还包括:
[0097]处理单元45,用于在生成单元43生成APK的辅助测试包之后,对APK和/或辅助测试包进行重签名,以使得APK与辅助测试包具有相同的签名信息。
[0098]进一步的,发送单元44用于:
[0099]解析测试用例,获得测试用例中的函数调用接口 ;
[0100]在函数库中查找函数调用接口所调用的脚本文件,生成脚本文件集合;
[0101]将脚本文件集合下发给测试终端。
[0102]进一步的,发送单元44用于:
[0103]通过无线网络将APK、测试用例、辅助测试包以及函数库下发给测试终端。
[0104]进一步的,发送单元44用于:
[0105]将APK、测试用例、辅助测试包以及函数库下发给代理服务器,由代理服务器通过通用串行总线USB接口传输给测试终端。
[0106]进一步的,发送单元44用于:
[0107]通过安卓Debug桥ADB的I3USH命令将APK、测试用例、辅助测试包以及函数库推送给测试终端。
[0108]进一步的,如图5所示,该中控服务器还包括:
[0109]接口管理单元46,用于向第三方开放用例管理平台以及测试终端的应用程序接口API。
[0110]进一步的,发送单元44发送的脚本文件涉及的测试功能包括:
[0111]Π操作类、截图类、断言类、APK管理类、按键模拟类、进程类、文件操作类、时间类、Activity获取类、数据库类、APK配置文件管理类、Root权限获取判断类、配置管理类。
[0112]进一步的,作为对上述各方法实施例的实现,本发明另一实施例还提供了一种测试终端,用以实现上述各方法实施例。如图6所示,该测试终端包括:接收单元61及测试单元62,其中:
[0113]接收单元61,用于接收中控服务器下发的安卓安装包APK、测试用例、辅助测试包以及函数库,其中,APK为测试对象,测试用例使用脚本语言编写,辅助测试包中封装有脚本引擎以及测试所需的基本信息,函数库中包含有具有不同测试功能的脚本文件,脚本文件由测试用例所调用;
[0114]测试单元62,用于:
[0115]在JAVA环境下运行接收单元61接收的APK及辅助测试包;
[0116]通过辅助测试包中的脚本引擎解释测试用例,获得JAVA格式的测试用例;
[0117]执行JAVA格式的测试用例,并进一步解释执行JAVA格式的测试用例所调用的脚本文件。
[0118]进一步的,测试单元62,用于调用Instrumentat1n工具运行APK,并基于相同的签名信息将辅助测试包加载到APK所在的进程中。
[0119]进一步的,如图7所示,该测试终端还包括:
[0120]计时单元63,用于对测试单元62进行的测试过程进行计时,当测试过程的耗时超过预设时长时,终止测试过程。
[0121]进一步的,如图7所示,该测试终端还包括:
[0122]存储单元64,用于在对APK进行测试之后,对测试单元62获得的测试结果进行离线保存;
[0123]发送单元65,用于在对APK进行测试之后,将测试单元62获得的测试结果上报给中控服务器。
[0124]进一步的,作为对上述各方法实施例的实现,本发明另一实施例还提供了一种应用测试的系统,用以实现上述各方法实施例。如图8所示,该系统包括用例管理平台81、中控服务器82及测试终端83。其中,中控服务器82为图4或图5所示的中控服务器,测试终端83为图6或图7所示的测试终端。
[0125]用例管理平台81,用于为测试人员提供对测试用例进行增、改、删、查的Web页面,接收并向中控服务器82发送测试人员触发的测试指令,测试指令中携带有测试人员选择的安卓安装包APK标识以及使用脚本语言编写的测试用例;
[0126]中控服务器82,用于接收用例管理平台81下发的测试指令,根据APK标识获取作为测试对象的APK,生成APK的辅助测试包,并在辅助测试包中封装脚本引擎以及测试所需的基本信息,将APK、测试用例、辅助测试包以及函数库下发给测试终端83,其中,函数库中包含有具有不同测试功能的脚本文件,脚本文件由测试用例所调用;
[0127]测试终端83,用于在JAVA环境下运行APK及辅助测试包,通过辅助测试包中的脚本引擎解释测试用例,获得JAVA格式的测试用例,执行JAVA格式的测试用例,并进一步解释执行JAVA格式的测试用例所调用的脚本文件。
[0128]本发明实施例提供的中控服务器、测试终端及应用测试的系统,能够通过用例管理平台向测试人员提供脚本语言编写的测试用例,在测试人员选择出被测试的APK及测试用例后,用例管理平台将中控服务器下发测试指令,由中控服务器为被测APK生成封装有脚本引擎的辅助测试包,并控制测试终端对APK进行测试。与现有技术相比,本发明无需测试人员自行搭建安卓开发环境并编写测试用例,测试人员只需在Web页面中选择好被测APK及测试所需的测试用例即可完成应用测试,使用起来方便快捷。此外,本发明实施例中的测试用例和函数库均采用了更加轻量级的脚本语言进行编写,能够消除JAVA语言晦涩难懂的缺陷,更加适用非专业编程人员使用,拓宽了应用测试的使用范围。
[0129]进一步的,本发明还公开了:
[0130]Al、一种应用测试的方法,所述方法包括:
[0131]接收用例管理平台下发的测试指令,所述测试指令中携带有安卓安装包APK标识以及使用脚本语言编写的测试用例;
[0132]根据所述APK标识获取作为测试对象的APK ;
[0133]生成所述APK的辅助测试包,并在所述辅助测试包中封装脚本引擎以及测试所需的基本信息;
[0134]将所述APK、所述测试用例、所述辅助测试包以及函数库下发给测试终端;
[0135]其中,所述函数库中包含有具有不同测试功能的脚本文件,所述脚本文件由所述测试用例所调用。
[0136]A2、根据Al所述的方法,所述根据所述APK标识获取作为测试对象的APK,包括:
[0137]在预设的映射关系表中查找对应所述APK标识的存储路径;
[0138]按照所述存储路径查找并获取所述APK。
[0139]A3、根据Al所述的方法,在所述生成所述APK的辅助测试包之后,所述方法进一步包括:
[0140]对所述APK和/或所述辅助测试包进行重签名,以使得所述APK与所述辅助测试包具有相同的签名信息。
[0141]A4、根据Al所述的方法,所述将函数库下发给测试终端,包括:
[0142]解析所述测试用例,获得所述测试用例中的函数调用接口 ;
[0143]在所述函数库中查找所述函数调用接口所调用的脚本文件,生成脚本文件集合;
[0144]将所述脚本文件集合下发给所述测试终端。
[0145]A5、根据Al所述的方法,所述将所述APK、所述测试用例、所述辅助测试包以及函数库下发给测试终端,包括:
[0146]通过无线网络将所述APK、所述测试用例、所述辅助测试包以及函数库下发给所述测试终端。
[0147]A6、根据Al所述的方法,所述将所述APK、所述测试用例、所述辅助测试包以及函数库下发给测试终端,包括:
[0148]将所述APK、所述测试用例、所述辅助测试包以及函数库下发给代理服务器,由所述代理服务器通过通用串行总线USB接口传输给所述测试终端。
[0149]A7、根据A5或A6所述的方法,所述将所述APK、所述测试用例、所述辅助测试包以及函数库下发给测试终端,包括:
[0150]通过安卓Debug桥ADB的I3USH命令将所述APK、所述测试用例、所述辅助测试包以及函数库推送给所述测试终端。
[0151]A8、根据Al所述的方法,所述方法进一步包括:
[0152]向第三方开放所述用例管理平台以及所述测试终端的应用程序接口 API。
[0153]A9、根据A1、A2、A3、A4、A5、A6及A8中任一项所述的方法,所述脚本文件涉及的测试功能包括:
[0154]Π操作类、截图类、断言类、APK管理类、按键模拟类、进程类、文件操作类、时间类、Activity获取类、数据库类、APK配置文件管理类、Root权限获取判断类、配置管理类。
[0155]B10、一种应用测试的方法,所述方法包括:
[0156]接收中控服务器下发的安卓安装包APK、测试用例、辅助测试包以及函数库,其中,所述APK为测试对象,所述测试用例使用脚本语言编写,所述辅助测试包中封装有脚本引擎以及测试所需的基本信息,所述函数库中包含有具有不同测试功能的脚本文件,所述脚本文件由所述测试用例所调用;
[0157]在JAVA环境下运行所述APK及所述辅助测试包;
[0158]通过所述辅助测试包中的脚本引擎解释所述测试用例,获得JAVA格式的测试用例;
[0159]执行所述JAVA格式的测试用例,并进一步解释执行所述JAVA格式的测试用例所调用的脚本文件。
[0160]B11、根据BlO所述的方法,所述在JAVA环境下运行所述APK及所述辅助测试包,包括:
[0161]调用Instrumentat1n工具运行所述APK,并基于相同的签名信息将所述辅助测试包加载到所述APK所在的进程中。
[0162]B12、根据BlO所述的方法,所述方法进一步包括:
[0163]对测试过程进行计时,当所述测试过程的耗时超过预设时长时,终止所述测试过程。
[0164]B13、根据BlO所述的方法,在对所述APK进行测试之后,所述方法进一步包括:
[0165]对测试结果进行离线保存或将所述测试结果上报给所述中控服务器。
[0166]C14、一种中控服务器,所述中控服务器包括:
[0167]接收单元,用于接收用例管理平台下发的测试指令,所述测试指令中携带有安卓安装包APK标识以及使用脚本语言编写的测试用例;
[0168]获取单元,用于根据所述接收单元接收的所述APK标识获取作为测试对象的APK ;
[0169]生成单元,用于生成所述获取单元获取的所述APK的辅助测试包,并在所述辅助测试包中封装脚本引擎以及测试所需的基本信息;
[0170]发送单元,用于将所述获取单元获取的所述APK、所述测试用例、所述辅助测试包以及函数库下发给测试终端;
[0171]其中,所述函数库中包含有具有不同测试功能的脚本文件,所述脚本文件由所述测试用例所调用。
[0172]C15、根据C14所述的中控服务器,所述获取单元,包括:
[0173]查找模块,用于在预设的映射关系表中查找对应所述APK标识的存储路径;
[0174]获取模块,按照所述查找模块查找到的所述存储路径查找并获取所述APK。
[0175]C16、根据C14所述的中控服务器,所述中控服务器还包括:
[0176]处理单元,用于在所述生成单元生成所述APK的辅助测试包之后,对所述APK和/或所述辅助测试包进行重签名,以使得所述APK与所述辅助测试包具有相同的签名信息。
[0177]C17、根据C14所述的中控服务器,所述发送单元用于:
[0178]解析所述测试用例,获得所述测试用例中的函数调用接口 ;
[0179]在所述函数库中查找所述函数调用接口所调用的脚本文件,生成脚本文件集合;
[0180]将所述脚本文件集合下发给所述测试终端。
[0181]C18、根据C14所述的中控服务器,所述发送单元用于:
[0182]通过无线网络将所述APK、所述测试用例、所述辅助测试包以及函数库下发给所述测试终端。
[0183]C19、根据C14所述的中控服务器,所述发送单元用于:
[0184]将所述APK、所述测试用例、所述辅助测试包以及函数库下发给代理服务器,由所述代理服务器通过通用串行总线USB接口传输给所述测试终端。
[0185]C20、根据C18或C19所述的中控服务器,所述发送单元用于:
[0186]通过安卓Debug桥ADB的I3USH命令将所述APK、所述测试用例、所述辅助测试包以及函数库推送给所述测试终端。
[0187]C21、根据C14所述的中控服务器,所述中控服务器还包括:
[0188]接口管理单元,用于向第三方开放所述用例管理平台以及所述测试终端的应用程序接口 API。
[0189]C22、根据C14、C15、C16、C17、C18、C19及C21中任一项所述的中控服务器,所述发送单元发送的所述脚本文件涉及的测试功能包括:
[0190]Π操作类、截图类、断言类、APK管理类、按键模拟类、进程类、文件操作类、时间类、Activity获取类、数据库类、APK配置文件管理类、Root权限获取判断类、配置管理类。
[0191]D23、一种测试终端,所述测试终端包括:
[0192]接收单元,用于接收中控服务器下发的安卓安装包APK、测试用例、辅助测试包以及函数库,其中,所述APK为测试对象,所述测试用例使用脚本语言编写,所述辅助测试包中封装有脚本引擎以及测试所需的基本信息,所述函数库中包含有具有不同测试功能的脚本文件,所述脚本文件由所述测试用例所调用;
[0193]测试单元,用于:
[0194]在JAVA环境下运行所述接收单元接收的所述APK及所述辅助测试包;
[0195]通过所述辅助测试包中的脚本引擎解释所述测试用例,获得JAVA格式的测试用例;
[0196]执行所述JAVA格式的测试用例,并进一步解释执行所述JAVA格式的测试用例所调用的脚本文件。
[0197]D24、根据D23所述的测试终端,所述测试单元,用于调用Instrumentat1n工具运行所述APK,并基于相同的签名信息将所述辅助测试包加载到所述APK所在的进程中。
[0198]D25、根据D23所述的测试终端,所述测试终端还包括:
[0199]计时单元,用于对所述测试单元进行的测试过程进行计时,当所述测试过程的耗时超过预设时长时,终止所述测试过程。
[0200]D26、根据D23所述的测试终端,所述测试终端还包括:
[0201]存储单元,用于在对所述APK进行测试之后,对所述测试单元获得的测试结果进行离线保存;
[0202]发送单元,用于在对所述APK进行测试之后,将所述测试单元获得的所述测试结果上报给所述中控服务器。
[0203]E27、一种应用测试的系统,所述系统包括:用例管理平台、中控服务器及测试终端;
[0204]所述用例管理平台,用于为所述测试人员提供对测试用例进行增、改、删、查的Web页面,接收并向所述中控服务器发送所述测试人员触发的测试指令,所述测试指令中携带有所述测试人员选择的安卓安装包APK标识以及使用脚本语言编写的测试用例;
[0205]所述中控服务器,用于接收所述用例管理平台下发的所述测试指令,根据所述APK标识获取作为测试对象的APK,生成所述APK的辅助测试包,并在所述辅助测试包中封装脚本引擎以及测试所需的基本信息,将所述APK、所述测试用例、所述辅助测试包以及函数库下发给所述测试终端,其中,所述函数库中包含有具有不同测试功能的脚本文件,所述脚本文件由所述测试用例所调用;
[0206]所述测试终端,用于在JAVA环境下运行所述APK及所述辅助测试包,通过所述辅助测试包中的脚本引擎解释所述测试用例,获得JAVA格式的测试用例,执行所述JAVA格式的测试用例,并进一步解释执行所述JAVA格式的测试用例所调用的脚本文件。
[0207]在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0208]可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
[0209]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0210]在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0211]在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0212]类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循【具体实施方式】的权利要求书由此明确地并入该【具体实施方式】,其中每个权利要求本身都作为本发明的单独实施例。
[0213]本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0214]此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0215]本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的发明名称(如确定网站内链接等级的装置)中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0216] 应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
【权利要求】
1.一种应用测试的方法,其特征在于,所述方法包括: 接收用例管理平台下发的测试指令,所述测试指令中携带有安卓安装包APK标识以及使用脚本语言编写的测试用例; 根据所述APK标识获取作为测试对象的APK ; 生成所述APK的辅助测试包,并在所述辅助测试包中封装脚本引擎以及测试所需的基本信息; 将所述APK、所述测试用例、所述辅助测试包以及函数库下发给测试终端; 其中,所述函数库中包含有具有不同测试功能的脚本文件,所述脚本文件由所述测试用例所调用。
2.根据权利要求1所述的方法,其特征在于,所述根据所述APK标识获取作为测试对象的APK,包括: 在预设的映射关系表中查找对应所述APK标识的存储路径; 按照所述存储路径查找并获取所述APK。
3.根据权利要求1所述的方法,其特征在于,在所述生成所述APK的辅助测试包之后,所述方法进一步包括: 对所述APK和/或所述辅助测试包进行重签名,以使得所述APK与所述辅助测试包具有相同的签名信息。
4.根据权利要求1所述的方法,其特征在于,所述将函数库下发给测试终端,包括: 解析所述测试用例,获得所述测试用例中的函数调用接口 ; 在所述函数库中查找所述函数调用接口所调用的脚本文件,生成脚本文件集合; 将所述脚本文件集合下发给所述测试终端。
5.一种应用测试的方法,其特征在于,所述方法包括: 接收中控服务器下发的安卓安装包APK、测试用例、辅助测试包以及函数库,其中,所述APK为测试对象,所述测试用例使用脚本语言编写,所述辅助测试包中封装有脚本引擎以及测试所需的基本信息,所述函数库中包含有具有不同测试功能的脚本文件,所述脚本文件由所述测试用例所调用; 在JAVA环境下运行所述APK及所述辅助测试包; 通过所述辅助测试包中的脚本引擎解释所述测试用例,获得JAVA格式的测试用例; 执行所述JAVA格式的测试用例,并进一步解释执行所述JAVA格式的测试用例所调用的脚本文件。
6.根据权利要求5所述的方法,其特征在于,所述在JAVA环境下运行所述APK及所述辅助测试包,包括: 调用Instrumentat1n工具运行所述APK,并基于相同的签名信息将所述辅助测试包加载到所述APK所在的进程中。
7.根据权利要求5所述的方法,其特征在于,所述方法进一步包括: 对测试过程进行计时,当所述测试过程的耗时超过预设时长时,终止所述测试过程。
8.一种中控服务器,其特征在于,所述中控服务器包括: 接收单元,用于接收用例管理平台下发的测试指令,所述测试指令中携带有安卓安装包APK标识以及使用脚本语言编写的测试用例; 获取单元,用于根据所述接收单元接收的所述APK标识获取作为测试对象的APK ; 生成单元,用于生成所述获取单元获取的所述APK的辅助测试包,并在所述辅助测试包中封装脚本引擎以及测试所需的基本信息; 发送单元,用于将所述获取单元获取的所述APK、所述测试用例、所述辅助测试包以及函数库下发给测试终端; 其中,所述函数库中包含有具有不同测试功能的脚本文件,所述脚本文件由所述测试用例所调用。
9.一种测试终端,其特征在于,所述测试终端包括: 接收单元,用于接收中控服务器下发的安卓安装包APK、测试用例、辅助测试包以及函数库,其中,所述APK为测试对象,所述测试用例使用脚本语言编写,所述辅助测试包中封装有脚本引擎以及测试所需的基本信息,所述函数库中包含有具有不同测试功能的脚本文件,所述脚本文件由所述测试用例所调用; 测试单元,用于: 在JAVA环境下运行所述接收单元接收的所述APK及所述辅助测试包; 通过所述辅助测试包中的脚本引擎解释所述测试用例,获得JAVA格式的测试用例; 执行所述JAVA格式的测试用例,并进一步解释执行所述JAVA格式的测试用例所调用的脚本文件。
10.—种应用测试的系统,其特征在于,所述系统包括:用例管理平台、中控服务器及测试终端; 所述用例管理平台,用于为所述测试人员提供对测试用例进行增、改、删、查的Web页面,接收并向所述中控服务器发送所述测试人员触发的测试指令,所述测试指令中携带有所述测试人员选择的安卓安装包APK标识以及使用脚本语言编写的测试用例; 所述中控服务器,用于接收所述用例管理平台下发的所述测试指令,根据所述APK标识获取作为测试对象的APK,生成所述APK的辅助测试包,并在所述辅助测试包中封装脚本引擎以及测试所需的基本信息,将所述APK、所述测试用例、所述辅助测试包以及函数库下发给所述测试终端,其中,所述函数库中包含有具有不同测试功能的脚本文件,所述脚本文件由所述测试用例所调用; 所述测试终端,用于在JAVA环境下运行所述APK及所述辅助测试包,通过所述辅助测试包中的脚本引擎解释所述测试用例,获得JAVA格式的测试用例,执行所述JAVA格式的测试用例,并进一步解释执行所述JAVA格式的测试用例所调用的脚本文件。
【文档编号】G06F11/36GK104461898SQ201410805330
【公开日】2015年3月25日 申请日期:2014年12月19日 优先权日:2014年12月19日
【发明者】田野 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1