CN111290940B - 针对app的自动化测试方法、装置、设备和介质 - Google Patents

针对app的自动化测试方法、装置、设备和介质 Download PDF

Info

Publication number
CN111290940B
CN111290940B CN201811504456.6A CN201811504456A CN111290940B CN 111290940 B CN111290940 B CN 111290940B CN 201811504456 A CN201811504456 A CN 201811504456A CN 111290940 B CN111290940 B CN 111290940B
Authority
CN
China
Prior art keywords
node
test
tested
page
child
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
Application number
CN201811504456.6A
Other languages
English (en)
Other versions
CN111290940A (zh
Inventor
刘波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Mobile Communications Group Co Ltd
China Mobile Group Jiangxi Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Group Jiangxi Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Mobile Communications Group Co Ltd, China Mobile Group Jiangxi Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN201811504456.6A priority Critical patent/CN111290940B/zh
Publication of CN111290940A publication Critical patent/CN111290940A/zh
Application granted granted Critical
Publication of CN111290940B publication Critical patent/CN111290940B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks

Abstract

本发明公开了针对APP的自动化测试方法、装置、设备和介质。该方法包括:响应于由测试设备发送的测试启动指令,获取被测试手机程序APP主页面的多个元素,并向主页面的多个元素发送测试指令;针对主页面的每一元素,元素响应于测试指令,获取元素的元素树,其中,元素树的根节点为元素,元素树的叶节点为主页面的下级页面的元素;基于深度优先遍历测试方案,依次测试元素树上的每一节点,深度优先遍历测试方案包括深度优先遍历算法和预设的测试策略;元素树上的所有节点均完成测试,输出元素树的测试结果。根据本发明实施例提供的针对APP的自动化测试方法、装置、设备和介质,可以提高测试的全面性。

Description

针对APP的自动化测试方法、装置、设备和介质
技术领域
本发明涉及互联网领域,尤其涉及针对APP的自动化测试方法、装置、设备和介质。
背景技术
随着互联网浪潮的推进,手机软件(Application,APP)已经正式由粗狂推广进入到精细运营的时代。而在APP产品的后期运营过程中,不仅仅要求APP的功能强大,更重要的是要尽可能的保证产品质量始终稳定,从而让用户能够有较好的使用体验。为此需要有一个支撑平台来对APP进行测试,即APP测试系统。
常见的APP测试系统中对实现了对应用的安装、启动、执行搞怪测试(Monkey测试)和卸载等操作。针对测试过程中的手机的设备性能数据方面(cpu,内存,流量等),可以通过在手机上部署代理(AGENT)应用的方式以实现信息采集。
现有的测试平台,主要运用到以下技术方案点:
1,对手机系统中APP应用执行Monkey测试。Monkey是一个可以运行在模拟器或设备上的程序,它可以生成用户时间的伪随机序列,如点击,触屏,或者抓取,也包含一系列的系统级的事件。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。
2,我们可以使用Monkey对APP应用程序做压力测试,使用随机且可重复的操作。也可以对Monkey设定些特定的操作限制。比如,基础设置选项(如设置将做事件的数目),操作限制(如限制某个单一包的测试),事件类型和频率,调试选项等。
上述方案针对APP执行的是随机无序操作,导致对APP的测试不够全面。
发明内容
本发明实施例提供的针对APP的自动化测试方法、装置、设备和介质,可以提高测试的全面性。
根据本发明实施例的一方面,提供一种针对APP的自动化测试的方法,包括:
响应于由测试设备发送的测试启动指令,获取被测试手机程序APP主页面的多个元素,并向主页面的多个元素发送测试指令;
针对主页面的每一元素,元素响应于测试指令,获取元素的元素树,其中,元素树的根节点为元素,元素树的叶节点为主页面的下级页面的元素;
基于深度优先遍历测试方案,依次测试元素树上的每一节点,深度优先遍历测试方案包括深度优先遍历算法和预设的测试策略;
元素树上的所有节点均完成测试,输出元素树的测试结果。
在一种可选的实施方式中,基于深度优先遍历测试方案,依次测试元素树上的每一节点,具体包括:
依据深度优先遍历方法,将元素树的根节点作为当前节点;
基于当前节点的测试策略,测试当前节点;
当前节点的测试完成之后,判断当前节点的子节点是否包含待测试的子节点;
若当前节点的子节点包含待测试的子节点,从待测试的子节点中选择一个节点作为新的当前节点;
若当前节点的子节点不包含待测试的子节点,将当前节点的父节点作为中转节点,并判断中转节点的子节点是否包含待测试的子节点;
若中转节点的子节点包含待测试的子节点,从包含的待测试的子节点中选择一个节点作为新的当前节点作为新的当前节点;
若中转节点的子节点不包含待检测的子节点,将中转节点的父节点作为新的中转节点;
当根节点为中转节点,且根节点不包含待测试的子节点时,确定元素树的所有节点均完成测试。
在一种可选的实施方式中,若包含待测试的子节点,从待测试的子节点中选择一个节点作为新的当前节点,具体包括:
若当前节点的子节点包含多个待测试的子节点,确定多个待测试的子节点的深度值;
从多个待测试的子节点中,选取深度值最大的待测试的子节点作为新的当前节点。
在一种可选的实施方式中,响应于由测试设备发送的测试启动指令,获取被测试手机程序APP主页面的多个元素,具体包含:
响应于测试启动指令,通过JAVA反射的方式,获取被测试APP主页面的多个元素,其中,主页面的多个元素包括主页面的控件元素和主页面的功能元素。
在一种可选的实施方式中,获取元素的元素树包括:
将元素作为当前元素,并将主页面作为基准页面;
基于当前元素的测试策略,对当前元素执行测试动作;
响应于测试动作,激活基准页面的下一级页面,获取基准页面的下一级页面的元素;
将基准页面的下一级页面的元素作为当前元素的子节点,将当前元素的子节点作为新的当前元素,并将基准页面的下一级页面作为新的基准页面;
直到对当前元素执行测试动作,基准页面不存在下一级页面。
在一种可选的实施方式中,响应于由测试设备发送的测试启动指令,获取被测试手机程序APP主页面的多个元素,并向主页面的多个元素发送测试指令,具体包括
响应于由测试设备发送的测试启动指令,获取被测试APP的主页面的多个元素的布局信息;
基于主页面的多个元素的布局信息,对多个主页面的元素进行排序;
按照主页面的多个元素的排序结果,依次向主页面的多个元素发送测试指令。
在一种可选的实施方式中,预设的测试策略包括针对每一元素的测试策略;
测试策略包括以下的一种或多种:
测试动作、测试动作的触发次数、测试动作的持续时长和测试动作的触发频率。
在一种可选的实施方式中,元素树的测试结果包括:元素树的每一节点的测试结果,每一节点的测试结果包括每一节点被测试时,节点对应的页面的变化。
在一种可选的实施方式中,深度优先遍历测试方案还包括特定遍历规则。
在一种可选的实施方式中,特定遍历规则包括以下规则的一种或多种:
优先遍历规则、最后遍历规则、节点黑名单规则、特定节点的遍历规则;
其中,优点遍历规则表示元素树中的一个或多个节点优先遍历,
最后遍历规则表示元素树中的一个或多个节点最后遍历,
节点黑名单规则表示元素树种的一个或多个节点跳过遍历,
特定节点的遍历规则表示仅对元素树中的一个或多个节点遍历。
根据本发明实施例的另一方面,提供一种针对APP的自动化测试的装置,包括:
发送模块,用于响应于由测试设备发送的测试启动指令,获取被测试手机程序APP主页面的多个元素,并向主页面的多个元素发送测试指令;
获取模块,用于针对主页面的每一元素,元素响应于测试指令,获取元素的元素树,其中,元素树的根节点为元素,元素树的叶节点为主页面的下级页面的元素;
测试模块,用于基于深度优先遍历测试方案,依次测试元素树上的每一节点,深度优先遍历测试方案包括深度优先遍历算法和预设的测试策略;
输出模块,用于元素树上的所有节点均完成测试,输出元素树的测试结果。
在一种可选的实施方式中,测试模块,具体用于:
依据深度优先遍历方法,将元素树的根节点作为当前节点;
基于当前节点的测试策略,测试当前节点;
当前节点的测试完成之后,判断当前节点的子节点是否包含待测试的子节点;
若当前节点的子节点包含待测试的子节点,从待测试的子节点中选择一个节点作为新的当前节点;
若当前节点的子节点不包含待测试的子节点,将当前节点的父节点作为中转节点,并判断中转节点的子节点是否包含待测试的子节点;
若中转节点的子节点包含待测试的子节点,从包含的待测试的子节点中选择一个节点作为新的当前节点作为新的当前节点;
若中转节点的子节点不包含待检测的子节点,将中转节点的父节点作为新的中转节点;
当根节点为中转节点,且根节点不包含待测试的子节点时,确定元素树的所有节点均完成测试。
在一种可选的实施方式中,测试模块,具体用于:
若当前节点的子节点包含多个待测试的子节点,确定多个待测试的子节点的深度值;
从多个待测试的子节点中,选取深度值最大的待测试的子节点作为新的当前节点。
根据本发明实施例的又一方面,提供一种针对APP的自动化测试设备,包括:
存储器,用于存储程序;
处理器,用于运行存储器中存储的程序,以执行本发明实施例提供的针对APP的自动化测试方法。
根据本发明实施例的再一方面,提供一种计算机存储介质,其特征在于,计算机存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现本发明实施例提供的针对APP的自动化测试方法。
根据本发明实施例中的针对APP的自动化测试方法、装置、设备和介质,主页面的每一元素,能够基于深度优先遍历算法和预设的测试策略,依次测试元素对应的元素树上的每一节点。由于依据深度优先遍历算法,对测试元素的元素树上的每一节点均能够进行测试,提高测试的全面性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是示出根据本发明一实施例的针对APP的自动化测试方法的流程图;
图2示出了本发明实施例中示例性的元素树的示意图;
图3示出了根据本发明一实施例提供的针对APP的自动化测试装置的结构示意图;
图4是本发明实施例中针对APP的自动化测试设备的示例性硬件架构的结构图。
具体实施方式
下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明实施例中,需要利用自动化测试框架对APP进行自动化测试。自动化测试框架包括:测试设备和被测试设备。
测试设备,用于向被测试设备发布各种自动化测试指令,包括:服务端(Client端)和客户端(Server端)。
其中,测试人员可以在服务端编写测试脚本。服务端可以基于测试脚本,向客户端发送各种自动化测试命令。其中,自动化测试指令可以以JASON格式发送至客户端。
客户端,用于将接受到的自动化测试指令转发至被测试设备,以及将测试设备发送的数据文件转发至服务端。具体地,客户端上设置了两个端口:第一端口和第二端口。其中,第一端口用于接收服务模块的各种自动化测试指令。例如4723端口。第二端口用于和被测试端进行通信。例如4724端口。
被测试设备,用于响应自动化测试指令,按照预设的控制策略执行各种自动化测试动作,包括:连接端(Bootstrap端)和自动化测试端(UiAutomator端)。其中,被测试设备可以是安装了自动化测试模块的移动通信设备。
连接端,用于接收测试设备的客户端的测试指令。并将自动化测试端生成的数据文件发送至测试设备,以供测试设备的服务端对下一步的测试动作进行指示。具体地,当测试设备的服务端与连接端进行通信时,可以建立以供socket连接。当接受到自动化测试指令时,需要将自动化测试指令转换为UiAutomator命令后,发送至自动化测试端。
自动化测试端,用于根据接受到的自动化测试指令,对被测试APP进行自动化测试。本发明的实施例中的自动化测试端可以是被测试设备预装的,也可以是在后续过程中安装的。
为了更好的理解本发明,下面将结合附图,详细描述根据本发明实施例的针对APP的自动化测试方法、装置和系统,应注意,这些实施例并不是用来限制本发明公开的范围。
图1是示出根据本发明实施例的针对APP的自动化测试方法的流程图。其中,本发明实施例中的各个步骤的执行主体可以是被测试设备中的自动化测试端。如图1所示,本实施例中的针对APP的自动化测试方法100包括以下步骤:
S110,响应于由测试设备发送的测试启动指令,获取被测试APP主页面的多个元素,并向主页面的多个元素发送测试指令。
在本发明的一些实施例中,测试启动指令用于启动被测试APP的自动化测试程序。其中,测试启动指令可以包括被测试APP的标识信息。
在本发明的一些实施例中,APP主页面表示打开被测试APP之后,呈现的第一个用户界面。例如,设置某度为浏览器的主页面,则打开浏览器后,看到的某度的页面即为浏览器的主页面。
在一些实施例中,主页面的元素表示主界面上具有特定属性、一定功能的事物。例如,主页面上的文本框等。
在本发明的一些实施例中,为了能够准确而全面的获取APP主页面的全部元素,S110,具体包括:
响应于测试启动指令,通过JAVA反射的方式,获取被测试APP主页面的多个元素,其中,主页面的多个元素包括主页面的控件元素和主页面的功能元素。
其中,控件元素表示为用户界面上的功能相对独立的、可重复使用的组件。例如,控件元素包括文本输入框、按钮控件、日期控件和TAB控件等。
功能控件表示为用户界面上的功能独立的功能模块。例如,用户注册接口、商品购物车功能等。
JAVA反射的方式,用于获取多个元素的所有属性和方法。
在本发明的一些实施例中,S110,具体包括S111至S113:
S111,响应于由测试设备发送的测试启动指令,获取被测试APP的主页面的多个元素的布局信息。
在S111中,通过JAVA反射的方式,可以获取主页面的控件元素的布局属性和主页面的功能元素的布局属性。
其中,控件元素的布局属性表征控件元素在主页面上的位置。功能元素的布局属性表征功能元素在主页面上的位置。
在一个实施例中,可以响应于测试启动指令,生成一个数据文件。该数据文件包含了主页面的控件元素及控件元素的布局属性、主页面的功能元素及功能元素的布局属性。
通过将包含多个元素的布局属性的数据文件发送至测试设备的客户端,方便客户端根据数据文件,对多个元素进行指令,从而保证了测试的全面性。
S112,基于主页面的多个元素的布局信息,对多个主页面的元素进行排序。
在一些实施例中,可以按照这些元素在手机上的位置进行排列。例如,位于主页面的左上角的元素可以排在第一位,位于主页面右下角的元素可以排列在最后一位。
S113,按照主页面的多个元素的排序结果,依次向主页面的多个元素发送测试指令。
在一个实施例中,发送的测试指令包括被测试元素的标识信息和测试策略。
在一个实施例中,若主页面包括元素A、元素B和元素C。当元素A的元素树完成测试,且将元素A的元素树的测试结果返回至测试设备的客户端后,向元素B发送测试指令。
S120,针对主页面的每一元素,该元素响应于测试指令,获取该元素的元素树。
在S120中,该元素树的根节点为该元素,元素树的叶节点为主页面的下级页面的元素。
在一些实施例中,当对主界面上的某一元素执行相应的操作时,可能会激活一个新的界面,可称为主界面的下一级界面。同时,主界面上的不同元素可能会激发不同的界面,因此,主界面可能同时具有多个下一级界面。
当对主界面的下一级界面的某一元素执行相应的操作时,可能会激发一个新的界面,新的界面可能还会激发新的界面,直到某一级界面上的所有元素均无法激活更下一级界面。此时,则可以将上述激活的界面和主界面的下一级界面统称为主界面的下级界面。
示例性的,若主界面包括表征商品购物车功能的元素A1,单击元素A1后激活商品购物车界面。则激活的商品购物车界面即为主页面的下一级页面。商品购物车界面上的各元素可称为元素A1的子元素,也可称为A1的元素树上的叶节点。
继续点击商品购物车界面的购买按钮,则可以激活付款界面。付款界面可以继续激活付款成功界面。付款界面为商品购物车界面的下一级界面,商品购物车界面、付款界面和付款成功界面均为主界面的下级界面。
相应地,商品购物车界面上的各元素可称为元素A1的子元素。商品购物车界面、付款界面和付款成功界面的元素均可称为A1的元素树上的叶节点
在本发明的实施例中,通过获取主页面的元素的元素树的方式,能够获取被测试APP内的全部能够被测试的节点,从而实现对被测试APP的深度而全面的测试。
在一些实施例中,元素树可以包括根节点和叶节点。同一棵元素树中,根节点是除本身外所有节点的祖先,根节点没有父结点。其中,本发明实施例中的根节点为主页面的元素。
作一个示例,图2示出了本发明实施例中示例性的元素树的示意图。如图2所示,主页面的元素A1为根节点,主页面的下一级界面上的元素B1和B2为A1的子节点。
在本发明的一些实施例中,S120中的获取元素的元素树,具体包括S121至S124:
S121,将元素作为当前元素,并将主页面作为基准页面。
在S121中的元素,表示为响应于测试指令的、主页面上的元素。
S122,基于当前元素的测试策略,对当前元素执行测试动作。
在S122中,当前元素的测试策略包括对当前元素的测试内容。具体地,可包括测试动作。还可以包括测试动作的触发频率。
在一些实施例中,测试策略可以是根据当前元素的属性设定的。例如,若当前元素是按钮,测试策略可设置为单击7次,长按5秒等。
S123,响应于测试动作,激活基准页面的下一级页面,获取基准页面的下一级页面的元素。
示例性的,若响应于商品购物车界面的购买按钮B1的单击动作,激活了付款界面,则获取付款界面上的所有元素。例如,输入密码的文本框。
S124,将基准页面的下一级页面的元素作为当前元素的子节点,将当前元素的子节点作为新的当前元素,并将基准页面的下一级页面作为新的基准页面。
示例性的,可以将付款界面上的所有元素作为购买按钮B1的子节点,并将付款界面上的元素作为新的当前元素,将付款界面作为新的基准界面。
S125,直到对当前元素执行测试动作,基准页面不存在下一级页面。
在S125中,若新的基准界面不存在下一级界面,则确定生成了S121中的元素的元素树。若存在下一级界面,则返回S122。
S130,基于深度优先遍历测试方案,依次测试元素树上的每一节点。其中,深度优先遍历测试方案包括深度优先遍历算法和预设的测试策略。
在本发明的一些实施例中,为了全面的测试被测试APP,预设的测试策略可以测试人员根据实际需求设定的。例如,被测试设备的性能、被测试APP的预期性能等。
预设的测试策略包括以下的一种或多种:
测试动作、测试动作的触发次数、测试动作的持续时长和测试动作的触发频率。
其中,测试动作表示与用户操作行为相关的动作。可以根据元素的属性而设定。示例性的,可以为单击、双击、长按、拖动、滑动等。
测试动作的触发频率表示当某一测试动作的触发次数不小于2次时,两次测试动作之间的时间间隔。
通过预设的控制测试,可以对被检测软件的各项性能进行检测,例如,被测试软件的健壮性、适用性、兼容性和稳定性等。
同时,可以人工预置对UI界面的测试策略,提高了人工干预程度与功能检测能力。
在本发明的一些实施例中,元素树上各节点可以执行相同的测试策略。例如,对元素树上的所有节点均单击7次。
或者,为了进一步提高测试精度,元素树上的各元素执行针对该元素的测试策略。例如,针对元素A1,执行针对元素A1设置的测试策略。
在本发明的一些实施例中,S130,具体包括S131至S138:
S131,依据深度优先遍历方法,将元素树的根节点作为当前节点。
在S131中,按照深度优先遍历方法,需要先对元素树的根节点进行测试。因此,需要将根节点作为初始的当前节点。
S132,基于当前节点的测试策略,测试当前节点。
参照图2,对元素A1执行测试策略。其中,测试策略可以是根据元素A1的属性而预先设置的。
在一些实施例中,当测试完当前节点时,可以将当前节点标记为已测试节点。
S133,当前节点的测试完成之后,判断当前节点的子节点是否包含待测试的子节点。
继续参照图2,当前节点A1测试完成后,需要判断当前节点A1的子节点B1和B2是否未被测试。
S134,若当前节点的子节点包含待测试的子节点,从待测试的子节点中选择一个节点作为新的当前节点。
继续参照图2,若B1和B2均未被测试,则可以从中任选一个节点作为新的当前节点。
在一些实施例中,为了能够有次序的对各节点进行测试,S134,具体包括S1341和S1342:
S1341,若当前节点的子节点包含多个待测试的子节点,确定多个待测试的子节点的深度值。
某一节点的深度值表示:从该节点开始往下,最长的遍历路径上的节点的个数。
继续参照图2,以元素B1为例,从B1向下,总共有四条遍历路径:B1至C1、B1至D1、B1至E1和B1至C3。其中,B1至E1为最长的遍历路径,该路径上总共有4个节点,因此,元素B1为的深度值为4。
S1342,从多个待测试的子节点中,选取深度值最大的待测试的子节点作为新的当前节点。
继续参照图2,若待测试子节点包括B1和B2,B1的深度值为4,B2的的深度值为3,可选择B1作为新的当前节点。
S135,若当前节点的子节点不包含待测试的子节点,将当前节点的父节点作为中转节点,并判断中转节点的子节点是否包含待测试的子节点。
继续参照图2,若元素D1、元素D2和元素E1的均已完成测试,且元素D2为当前节点,可将C2作为中转节点,判断C2的子节点是否包含待测试的子节点。
S136,若中转节点的子节点包含待测试的子节点,从包含的待测试的子节点中选择一个节点作为新的当前节点作为新的当前节点。
继续参照图2,中转节点为B2,B2的子节点C1和C3为待测试子节点,则可以从两者中任选其一作为新的当前节点。并返回S132。
S137,若中转节点的子节点不包含待检测的子节点,将中转节点的父节点作为新的中转节点。
在S137中,若新的中转节点为叶节点,还需继续判断新的中转节点的子节点是否包含待测试的子节点,若包含,则返回S136,若不包含,则返回S137。若新的中转节点为根节点,则执行S138。
S138,当根节点为中转节点,且根节点不包含待测试的子节点时,确定元素树的所有节点均完成测试。
继续参照图2,若中转节点为A1,且B1、B2均已完成测试,则确定A1的元素树的全部节点均已完成测试。
在本发明的一些实施例中,基于S131至S138,S130的具体实施方式可包括:
第一步,根据baseURL,将元素树的根节点确定为当前节点,并将根节点的子节点的URL放入待测试队列。
其中,根节点的统一资源定位符(Uniform Resource Locator,URL)具有baseURL。示例性的,baseURL支持的类型可以包括:http、https、ftp或file。
第二步,当确定了当前节点,并对当前节点进行测试后,解析出当前节点对应的界面上的所有节点或所有产生变化的节点的属性放入堆栈中。其中,属性可包括:name、attribute、label等。
第三步,可以从待测试队列中任选一个的URL,将该URL对应的节点作为新的当前节点,并返回第二步。直到完成对元素树上所有节点的测试,堆栈内的数据为当前元素树的测试结果。此时,将堆栈内的数据返回至测试设备的客户端,并清空堆栈,以便于对下一棵元素树进行遍历。
在一些实施例中,若遍历完最下端的节点之后,例如图2中的元素E1。则会将元素E1的父节点放入待测试队列,依次类推,直到当前元素树遍历结束时,会将根节点的URL放入待测试队列。因此,若在待测试队列中检测到baseURL,则判定当前元素树遍历结束。
在本发明的一些实施例中,为了兼顾全面性和灵活性,深度优先遍历测试方案还包括特定遍历规则。
在一些实施例中,特定遍历规则包括以下规则的一种或多种:
优先遍历规则、最后遍历规则、节点黑名单规则、特定节点的遍历规则。
其中,优点遍历规则表示元素树中的一个或多个节点优先遍历。例如,继续参照图2,当B1完成测试后,可以优选遍历节点C3
最后遍历规则表示元素树中的一个或多个节点最后遍历。例如,继续参照图2,当B1完成测试后,可以最后遍历节点C3
节点黑名单规则表示元素树种的一个或多个节点跳过遍历。例如,继续参照图2,当B1完成测试后,可以选择不对节点C2进行遍历,跳过C2,直接对C2的子节点进行遍历。或许,不对C2以及其下级节点D1、D2和E1进行遍历。
特定节点的遍历规则表示仅对元素树种的一个或多个节点遍历。例如,继续参照图2,当A1完成测试后,可以仅对B1及其下级节点进行遍历。
通过本发明实施例,可通过设置特定的深度优先遍历测试方案,遍历深度覆盖较全。解决Monkey等工具可控性差的缺点,可以发现APP深层次的UI兼容性问题。
S140,元素树上的所有节点均完成测试,输出元素树的测试结果。
根据本发明实施例中的针对APP的自动化测试方法、装置、设备和介质,主页面的每一元素,能够基于深度优先遍历算法和预设的测试策略,依次测试元素对应的元素树上的每一节点。由于依据深度优先遍历算法,对测试元素的元素树上的每一节点均能够进行测试,提高测试的全面性。
同时,有效避免杂乱无序的测试,增加了用户主动干预程度,取得了可以对手机应用系统中全部应用进行遍历操作,提高了适用性。
在本发明的一些实施例中,元素树的测试结果包括:元素树的每一节点的测试结果。
每一节点的测试结果:包括该节点被测试时,该节点对应的页面的变化。
在本发明的一些实施例中,元素树的测试结果包括:元素树上的每一节点的测试结果。
在一些实施例中,每一节点的测试结果可以是对该节点执行测试策略时,该节点对应的页面的所有元素的属性变化。
在一些实施例中,当对某一节点执行测试策略,触发了下一级页面时,每一节点的测试结果包括:由该节点对应的页面加载至下一级页面的加载时长,以及加载成功率。
下面结合附图,详细介绍根据本发明实施例的装置。
图3示出了根据本发明一实施例提供的针对APP的自动化测试装置的结构示意图。如图3所示,针对APP的自动化测试装置300包括:
发送模块310,用于响应于由测试设备发送的测试启动指令,获取被测试手机程序APP主页面的多个元素,并向主页面的多个元素发送测试指令。
获取模块320,用于针对主页面的每一元素,元素响应于测试指令,获取元素的元素树。
其中,元素树的根节点为元素,元素树的叶节点为主页面的下级页面的元素。
测试模块330,用于基于深度优先遍历测试方案,依次测试元素树上的每一节点,深度优先遍历测试方案包括深度优先遍历算法和预设的测试策略。
输出模块340,用于元素树上的所有节点均完成测试,输出元素树的测试结果。
在本发明的一些实施例中,测试模块330,具体用于:
依据深度优先遍历方法,将元素树的根节点作为当前节点。
基于当前节点的测试策略,测试当前节点。
当前节点的测试完成之后,判断当前节点的子节点是否包含待测试的子节点。
若当前节点的子节点包含待测试的子节点,从待测试的子节点中选择一个节点作为新的当前节点。
若当前节点的子节点不包含待测试的子节点,将当前节点的父节点作为中转节点,并判断中转节点的子节点是否包含待测试的子节点。
若中转节点的子节点包含待测试的子节点,从包含的待测试的子节点中选择一个节点作为新的当前节点作为新的当前节点。
若中转节点的子节点不包含待检测的子节点,将中转节点的父节点作为新的中转节点。
当根节点为中转节点,且根节点不包含待测试的子节点时,确定元素树的所有节点均完成测试。
在一些实施例中,测试模块330,具体用于:
若当前节点的子节点包含多个待测试的子节点,确定多个待测试的子节点的深度值。
从多个待测试的子节点中,选取深度值最大的待测试的子节点作为新的当前节点。
在本发明的一些实施例中,获取模块320,具体用于:
响应于测试启动指令,通过JAVA反射的方式,获取被测试APP主页面的多个元素,其中,主页面的多个元素包括主页面的控件元素和主页面的功能元素。
在本发明的一些实施例中,获取模块320,具体用于:
将元素作为当前元素,并将主页面作为基准页面。
基于当前元素的测试策略,对当前元素执行测试动作。
响应于测试动作,激活基准页面的下一级页面,获取基准页面的下一级页面的元素。
将基准页面的下一级页面的元素作为当前元素的子节点,将当前元素的子节点作为新的当前元素,并将基准页面的下一级页面作为新的基准页面。
直到对当前元素执行测试动作,基准页面不存在下一级页面。
在本发明的一些实施例中,发送模块310,具体用于:
响应于由测试设备发送的测试启动指令,获取被测试APP的主页面的多个元素的布局信息。
基于主页面的多个元素的布局信息,对多个主页面的元素进行排序。
按照主页面的多个元素的排序结果,依次向主页面的多个元素发送测试指令。
在本发明的一些实施例中,预设的测试策略包括针对每一元素的测试策略;
测试策略包括以下的一种或多种:
测试动作、测试动作的触发次数、测试动作的持续时长和测试动作的触发频率。
在本发明的一些实施例中,元素树的测试结果包括:元素树的每一节点的测试结果,每一节点的测试结果包括每一节点被测试时,节点对应的页面的变化。
在本发明的一些实施例中,深度优先遍历测试方案还包括特定遍历规则。
在一些实施例中,特定遍历规则包括以下规则的一种或多种:
优先遍历规则、最后遍历规则、节点黑名单规则、特定节点的遍历规则;
其中,优点遍历规则表示元素树中的一个或多个节点优先遍历,
最后遍历规则表示元素树中的一个或多个节点最后遍历,
节点黑名单规则表示元素树种的一个或多个节点跳过遍历,
特定节点的遍历规则表示仅对元素树中的一个或多个节点遍历。
根据本发明实施例的针对APP的自动化测试装置的其他细节与以上结合图1至图2描述的根据本发明实施例的针对APP的自动化测试方法类似,在此不再赘述。
图4是本发明实施例中针对APP的自动化测试设备的示例性硬件架构的结构图。
如图4所示,针对APP的自动化测试设备400包括输入设备401、输入接口402、中央处理器403、存储器404、输出接口405、以及输出设备406。其中,输入接口402、中央处理器403、存储器404、以及输出接口405通过总线410相互连接,输入设备401和输出设备406分别通过输入接口402和输出接口405与总线410连接,进而与针对APP的自动化测试设备400的其他组件连接。
具体地,输入设备401接收来自外部的输入信息,并通过输入接口402将输入信息传送到中央处理器403;中央处理器403基于存储器404中存储的计算机可执行指令对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器404中,然后通过输出接口405将输出信息传送到输出设备406;输出设备406将输出信息输出到针对APP的自动化测试设备400的外部供用户使用。
也就是说,图4所示的针对APP的自动化测试设备也可以被实现为包括:存储有计算机可执行指令的存储器;以及处理器,该处理器在执行计算机可执行指令时可以实现结合图1至图3描述的针对APP的自动化测试设备的方法和装置。
在一个实施例中,图4所示的针对APP的自动化测试设备400可以被实现为一种设备,该设备可以包括:存储器,用于存储程序;处理器,用于运行所述存储器中存储的所述程序,以执行本发明实施例的针对APP的自动化测试方法。
本发明实施例还提供了一种计算机存储介质,计算机存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现本发明实施例的路段连接方法。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

Claims (10)

1.一种针对APP的自动化测试的方法,其特征在于,所述方法包括:
响应于由测试设备发送的测试启动指令,获取被测试手机程序APP主页面的多个元素,并向所述主页面的所述多个元素发送测试指令;
针对主页面的每一元素,所述元素响应于所述测试指令,获取所述元素的元素树,其中,所述元素树的根节点为所述元素,所述元素树的叶节点为所述主页面的下级页面的元素;
基于深度优先遍历测试方案,依次测试所述元素树上的每一节点,所述深度优先遍历测试方案包括深度优先遍历算法和预设的测试策略;
所述元素树上的所有节点均完成测试,输出所述元素树的测试结果;
所述基于深度优先遍历测试方案,依次测试所述元素树上的每一节点,具体包括:
依据所述深度优先遍历算法,将所述元素树的所述根节点作为当前节点;
基于所述当前节点的测试策略,测试所述当前节点;
当前节点的测试完成之后,判断所述当前节点的子节点是否包含待测试的子节点;
若所述当前节点的子节点包含待测试的子节点,从所述待测试的子节点中选择一个节点作为新的当前节点;
若所述当前节点的子节点不包含待测试的子节点,将所述当前节点的父节点作为中转节点,并判断所述中转节点的子节点是否包含待测试的子节点;
若所述中转节点的子节点包含待测试的子节点,从包含的所述待测试的子节点中选择一个节点作为新的当前节点作为新的当前节点;
若所述中转节点的子节点不包含待检测的子节点,将中转节点的父节点作为新的中转节点;
当所述根节点为中转节点,且所述根节点不包含待测试的子节点时,确定所述元素树的所有节点均完成测试;
所述若包含待测试的子节点,从所述待测试的子节点中选择一个节点作为新的当前节点,具体包括:
若所述当前节点的子节点包含多个待测试的子节点,确定所述多个待测试的子节点的深度值;
从所述多个待测试的子节点中,选取深度值最大的待测试的子节点作为新的当前节点;
所述获取所述元素的元素树包括:
将所述元素作为当前元素,并将所述主页面作为基准页面;
基于所述当前元素的测试策略,对所述当前元素执行测试动作;
响应于所述测试动作,激活所述基准页面的下一级页面,获取所述基准页面的下一级页面的元素;
将所述基准页面的下一级页面的元素作为所述当前元素的子节点,将所述当前元素的子节点作为新的当前元素,并将所述基准页面的下一级页面作为新的基准页面;
直到对所述当前元素执行测试动作,所述基准页面不存在下一级页面。
2.根据权利要求1所述的方法,其特征在于,所述响应于由测试设备发送的测试启动指令,获取被测试手机程序APP主页面的多个元素,具体包含:
响应于所述测试启动指令,通过JAVA反射的方式,获取所述被测试APP主页面的多个元素,其中,所述主页面的多个元素包括所述主页面的控件元素和所述主页面的功能元素。
3.根据权利要求1所述的方法,其特征在于,所述响应于由测试设备发送的测试启动指令,获取被测试手机程序APP主页面的多个元素,并向所述主页面的多个元素发送测试指令,具体包括:
响应于由测试设备发送的测试启动指令,获取所述被测试APP的主页面的多个元素的布局信息;
基于所述主页面的多个元素的布局信息,对所述多个主页面的元素进行排序;
按照所述主页面的多个元素的排序结果,依次向所述主页面的多个元素发送所述测试指令。
4.根据权利要求1所述的方法,其特征在于,所述预设的测试策略包括针对每一元素的测试策略;
所述测试策略包括以下的一种或多种:
测试动作、测试动作的触发次数、测试动作的持续时长和测试动作的触发频率。
5.根据权利要求1所述的方法,其特征在于,所述元素树的测试结果包括:所述元素树的每一节点的测试结果,所述每一节点的测试结果包括所述每一节点被测试时,所述节点对应的页面的变化。
6.根据权利要求1所述的方法,其特征在于,
所述深度优先遍历测试方案还包括特定遍历规则。
7.根据权利要求6所述的方法,其特征在于,所述特定遍历规则包括以下规则的一种或多种:
优先遍历规则、最后遍历规则、节点黑名单规则、特定节点的遍历规则;
其中,优点遍历规则表示元素树中的一个或多个节点优先遍历,
最后遍历规则表示元素树中的一个或多个节点最后遍历,
节点黑名单规则表示元素树种的一个或多个节点跳过遍历,
特定节点的遍历规则表示仅对元素树中的一个或多个节点遍历。
8.一种针对APP的自动化测试的装置,其特征在于,所述装置包括:
发送模块,用于响应于由测试设备发送的测试启动指令,获取被测试手机程序APP主页面的多个元素,并向所述主页面的所述多个元素发送测试指令;
获取模块,用于针对主页面的每一元素,所述元素响应于所述测试指令,获取所述元素的元素树,其中,所述元素树的根节点为所述元素,所述元素树的叶节点为所述主页面的下级页面的元素;
测试模块,用于基于深度优先遍历测试方案,依次测试所述元素树上的每一节点,所述深度优先遍历测试方案包括深度优先遍历算法和预设的测试策略;
输出模块,用于所述元素树上的所有节点均完成测试,输出所述元素树的测试结果;
所述测试模块,具体用于:
依据所述深度优先遍历算法,将所述元素树的所述根节点作为当前节点;
基于所述当前节点的测试策略,测试所述当前节点;
当前节点的测试完成之后,判断所述当前节点的子节点是否包含待测试的子节点;
若所述当前节点的子节点包含待测试的子节点,从所述待测试的子节点中选择一个节点作为新的当前节点;
若所述当前节点的子节点不包含待测试的子节点,将所述当前节点的父节点作为中转节点,并判断所述中转节点的子节点是否包含待测试的子节点;
若所述中转节点的子节点包含待测试的子节点,从包含的所述待测试的子节点中选择一个节点作为新的当前节点作为新的当前节点;
若所述中转节点的子节点不包含待检测的子节点,将中转节点的父节点作为新的中转节点;
当所述根节点为中转节点,且所述根节点不包含待测试的子节点时,确定所述元素树的所有节点均完成测试;
所述测试模块,具体用于:
若所述当前节点的子节点包含多个待测试的子节点,确定所述多个待测试的子节点的深度值;
从所述多个待测试的子节点中,选取深度值最大的待测试的子节点作为新的当前节点;
所述获取模块,还用于:
将所述元素作为当前元素,并将所述主页面作为基准页面;
基于所述当前元素的测试策略,对所述当前元素执行测试动作;
响应于所述测试动作,激活所述基准页面的下一级页面,获取所述基准页面的下一级页面的元素;
将所述基准页面的下一级页面的元素作为所述当前元素的子节点,将所述当前元素的子节点作为新的当前元素,并将所述基准页面的下一级页面作为新的基准页面;
直到对所述当前元素执行测试动作,所述基准页面不存在下一级页面。
9.一种针对APP的自动化测试设备,其特征在于,所述设备包括:
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,以执行权利要求1-7任一权利要求所述的针对APP的自动化测试方法。
10.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现权利要求1-7任一权利要求所述的针对APP的自动化测试方法。
CN201811504456.6A 2018-12-10 2018-12-10 针对app的自动化测试方法、装置、设备和介质 Active CN111290940B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811504456.6A CN111290940B (zh) 2018-12-10 2018-12-10 针对app的自动化测试方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811504456.6A CN111290940B (zh) 2018-12-10 2018-12-10 针对app的自动化测试方法、装置、设备和介质

Publications (2)

Publication Number Publication Date
CN111290940A CN111290940A (zh) 2020-06-16
CN111290940B true CN111290940B (zh) 2023-04-28

Family

ID=71029832

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811504456.6A Active CN111290940B (zh) 2018-12-10 2018-12-10 针对app的自动化测试方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN111290940B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111694754B (zh) * 2020-07-30 2023-04-07 抖音视界有限公司 应用程序的测试方法、装置、电子设备及计算机介质
CN117349178A (zh) * 2023-10-30 2024-01-05 新华三科技服务有限公司 用户页面测试方法及装置

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8196112B1 (en) * 2008-02-15 2012-06-05 Amazon Technologies, Inc. Systems and methods for testing widgets in computer environments
CN103853649A (zh) * 2012-11-28 2014-06-11 百度在线网络技术(北京)有限公司 一种应用程序的测试方法及系统
CN104052845A (zh) * 2013-03-11 2014-09-17 腾讯科技(深圳)有限公司 测试移动终端应用的方法及装置
CN106649100A (zh) * 2016-11-16 2017-05-10 福建天晴数码有限公司 一种自动化测试方法及系统
CN106776319A (zh) * 2016-12-15 2017-05-31 广州酷狗计算机科技有限公司 自动测试方法及装置
CN106961362A (zh) * 2017-03-09 2017-07-18 杭州铜板街互联网金融信息服务有限公司 自动化测试方法及移动云测试系统
US9723489B1 (en) * 2016-04-19 2017-08-01 Synack, Inc. Automated vulnerability discovery in mobile device applications
CN107451062A (zh) * 2017-08-09 2017-12-08 百度在线网络技术(北京)有限公司 一种用户界面遍历测试方法、装置、服务器、存储介质
CN107506300A (zh) * 2017-08-09 2017-12-22 百度在线网络技术(北京)有限公司 一种用户界面测试方法、装置、服务器和存储介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8196112B1 (en) * 2008-02-15 2012-06-05 Amazon Technologies, Inc. Systems and methods for testing widgets in computer environments
CN103853649A (zh) * 2012-11-28 2014-06-11 百度在线网络技术(北京)有限公司 一种应用程序的测试方法及系统
CN104052845A (zh) * 2013-03-11 2014-09-17 腾讯科技(深圳)有限公司 测试移动终端应用的方法及装置
US9723489B1 (en) * 2016-04-19 2017-08-01 Synack, Inc. Automated vulnerability discovery in mobile device applications
CN106649100A (zh) * 2016-11-16 2017-05-10 福建天晴数码有限公司 一种自动化测试方法及系统
CN106776319A (zh) * 2016-12-15 2017-05-31 广州酷狗计算机科技有限公司 自动测试方法及装置
CN106961362A (zh) * 2017-03-09 2017-07-18 杭州铜板街互联网金融信息服务有限公司 自动化测试方法及移动云测试系统
CN107451062A (zh) * 2017-08-09 2017-12-08 百度在线网络技术(北京)有限公司 一种用户界面遍历测试方法、装置、服务器、存储介质
CN107506300A (zh) * 2017-08-09 2017-12-22 百度在线网络技术(北京)有限公司 一种用户界面测试方法、装置、服务器和存储介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Ritu Khare等.Understanding deep web search interfaces:a survey.《ACM SIGMOD Record》.2010,第39卷33-40. *
叶佳等.规则驱动的Android应用DFS测试技术.《计算机科学》.2018,第45卷(第09期),99-103+118. *
袁文超.基于元素树的Linux GUI自动化测试方法研究.《中国优秀硕士学位论文全文数据库 信息科技辑 》.2018,(第08期),I138-164. *
陈巧灵等.基于DOM树层次特征的多记录网页抽取.《模式识别与人工智能》.2015,第28卷(第28期),125-131. *

Also Published As

Publication number Publication date
CN111290940A (zh) 2020-06-16

Similar Documents

Publication Publication Date Title
CN111290940B (zh) 针对app的自动化测试方法、装置、设备和介质
CN110990255B (zh) 一种埋点测试方法及服务器
CN104598380A (zh) 一种基于控件的自动化测试方法及系统
CN108845930A (zh) 界面操作测试方法和装置、存储介质及电子装置
CN105302706B (zh) 应用程序测试方法和装置
KR20190032569A (ko) 모바일 브라우저를 통해 애플리케이션을 어웨이크하기 위한 방법 및 장치
CN108780048A (zh) 一种确定检测设备的方法、检测装置及可读存储介质
WO2017198015A1 (zh) 软件升级方法及装置
CN109992283B (zh) 一种批量同步下载升级测试固件的方法及系统
CN113127323A (zh) 一种测试方法、装置、终端设备及存储介质
CN104346279A (zh) 一种软件测试方法及装置
CN109117368A (zh) 一种接口测试方法、电子设备及存储介质
CN112115049B (zh) 应用程序测试方法、装置、设备和计算机可读存储介质
CN111628927A (zh) 邮件管理方法及装置、存储介质及电子终端
CN106776266B (zh) 测试工具的配置方法及终端设备
CN110704311B (zh) 一种应用程序测试方法、装置、电子设备及可读存储介质
CN111352612A (zh) 用于代码部署的调度方法、装置、电子设备和存储介质
CN107786869B (zh) 一种电视设备菜单路径生成方法、装置及存储介质
CN110297749B (zh) 一种测试新功能的方法及终端
CN114205141A (zh) 一种ipc算法部署准入方法、系统、介质及电子终端
CN112596814B (zh) 项目的集成打包方法、装置、设备、介质和程序产品
CN105591842A (zh) 一种获取移动终端操作系统版本的方法和装置
US20090132079A1 (en) System and method for reducing toxic waste in manufacturing processes
CN109800330A (zh) 一种数据处理方法及装置
CN102867145A (zh) 染毒应用的处理方法、处理装置及处理系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant