CN108664389B - 一种测试方法、装置及终端 - Google Patents

一种测试方法、装置及终端 Download PDF

Info

Publication number
CN108664389B
CN108664389B CN201710208025.4A CN201710208025A CN108664389B CN 108664389 B CN108664389 B CN 108664389B CN 201710208025 A CN201710208025 A CN 201710208025A CN 108664389 B CN108664389 B CN 108664389B
Authority
CN
China
Prior art keywords
installation package
obfuscated
test case
parameters
test
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
CN201710208025.4A
Other languages
English (en)
Other versions
CN108664389A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201710208025.4A priority Critical patent/CN108664389B/zh
Publication of CN108664389A publication Critical patent/CN108664389A/zh
Application granted granted Critical
Publication of CN108664389B publication Critical patent/CN108664389B/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种针对混淆安装包的自动化测试方法、装置及终端。本发明能够根据混淆映射文件,在所述混淆安装包中执行测试用例,从而能够自动对混淆后的安装包进行测试。进一步地,本发明不需要对改变原始安装包的测试用例,即一份原始安装包的测试用例可以对各种各样的混淆后的安装包进行测试,既提升了测试用例的利用率,又简化了测试流程。

Description

一种测试方法、装置及终端
技术领域
本发明涉及测试领域,尤其涉及一种测试方法、装置及终端。
背景技术
现有的自动化测试方案中使用的参量都是固定的,即为未经过混淆的原始安装包中的参量,因此,在测试过程中必须使用非混淆的安装包进行测试,而不能支持对混淆后的安装包进行测试。
然而,由于原始安装包中的参量包含有大量的源文件信息,因此通过原始安装包使用反编译或逆向工程很容易可以获得应用软件完整的源程序代码,从而造成源代码泄露。因此大部分软件公司正式发布的软件版本一般都会使用混淆后的安装包发布。然而,现有的自动化测试方案无法对这种混淆后的安装包进行测试,从而难以保证混淆后的安装包的质量。
发明内容
为了解决上述技术问题,本发明提出了一种测试方法、装置及终端。本发明具体是以如下技术方案实现的:
第一方面,一种测试方法,所述方法包括:
获取原始安装包,构建用于测试所述原始安装包的测试用例,所述测试用例中包括原始安装包中的参量;
获取所述原始安装包对应的混淆安装包以及混淆映射文件;所述混淆映射文件记录有原始安装包中的参量与混淆安装包中的参量的映射关系;
根据所述混淆映射文件,在所述混淆安装包中执行所述测试用例。
第二方面,一种测试装置,所述装置包括:
原始安装包获取模块,用于获取原始安装包,构建用于测试所述原始安装包的测试用例,所述测试用例中包括原始安装包中的参量;
混淆文件获取模块,用于获取所述原始安装包对应的混淆安装包以及混淆映射文件;所述混淆映射文件记录有原始安装包中的参量与混淆安装包中的参量的映射关系;
测试执行模块,用于根据所述混淆映射文件,在所述混淆安装包中执行所述测试用例。
第三方面,一种测试终端,所述终端包括上述的测试装置。
本发明提供了一种测试方法、装置及终端,具有如下有益效果:
本发明提供了一种针对混淆安装包的自动化测试方法、装置及终端,能够自动对混淆后的安装包进行测试。进一步地,本发明不需要对改变原始安装包的测试用例,即一份原始安装包的测试用例可以对各种各样的混淆后的安装包进行测试,既提升了测试用例的利用率,又简化了测试流程。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本发明实施例提供的一种测试方法流程图;
图2是本发明实施例提供的Java应用软件的应用场景示意图;
图3是本发明实施例提供的一种执行所述测试用例的方法的流程图;
图4是本发明实施例提供的通另一种执行所述测试用例的方法的流程图;
图5是本发明实施例提供的强混淆方法的流程图;
图6是本发明实施例提供的通另一种执行所述测试用例的方法的流程图;
图7是本发明实施例提供的通另一种执行所述测试用例的方法的流程图;
图8是本发明实施例提供的一种测试装置框图;
图9是本发明实施例提供的测试执行模块框图;
图10是本发明实施例提供的另一种测试执行模块框图;
图11是本发明实施例提供的另一种测试执行模块框图;
图12是本发明实施例提供的另一种测试执行模块框图;
图13是本发明实施例提供的终端的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种测试方法,所述方法如图1所示,包括:
S101.获取原始安装包,构建用于测试所述原始安装包的测试用例,所述测试用例中包括原始安装包中的参量。
具体地,所述原始安装包中的参量包括原始安装包中的控件标识、类名称、方法名称、变量名称和/或资源路径。
以Java应用软件为例,其安装包中包括类文件,其后缀名为.class和/或资源文件。类文件中包括有控件标识、类名称、方法名称、变量名称和/或资源路径。
如图2所示,其示出了Java应用软件的应用场景示意图。采用Java编写的应用软件源程序代码经过Java编译器编译后,生成Java字节码(.class文件),Java字节码独立于计算机硬件及操作***,在运行时由Java虚拟机的Java解释器负责解释并通过即时编译器生成机器代码而执行。然而,由于Java字节码中包含大量的调试信息,例如:源文件名、行号、字段名、方法名、参数名和变量名等,这些调试信息很容易被反编译和通过逆向工程获得应用软件完整的源程序代码。
S102.获取所述原始安装包对应的混淆安装包以及混淆映射文件;所述混淆映射文件记录有原始安装包中的参量与混淆安装包中的参量的映射关系。
具体地,所述混淆安装包以及混淆映射文件可以分别为两个文件,也可以将两个文件混合为一个特殊的文件,比如将混淆安装包以及混淆映射文打包为一个压缩文件。所述混淆安装包、混淆映射文件和/或混合后的文件均可以被加密。
本步骤中编译所述原始安装包对应的源文件,并在编译过程对于原始安装包中的参量进行代码混淆和/或资源混淆,编译结束后生成混淆后的混淆安装包以及混淆映射文件。具体地,在编译过程中,不论是代码混淆还是资源混淆都可以是随机的。
其中,代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为。代码混淆可以用于程序源代码,也可以用于程序编译而成的中间代码。
将代码中的各种元素,如变量,函数,类的名字改写成无意义的名字。比如改写成单个字母,或是简短的无意义字母组合,甚至改写成“__”这样的符号,使得阅读的人无法根据名字猜测其用途。重写代码中的部分逻辑,将其变成功能上等价,但是更难理解的形式。比如将for循环改写成while循环,将循环改写成递归,精简中间变量,等等。打乱代码的格式。比如删除空格,将多行代码挤到一行中,或者将一行代码断成多行等等。代码混淆虽然并不能真正阻止反向工程,但是能增大其难度从而减少源代码的泄露风险。
其中,资源混淆是为了防止资源文件被别人或者通过反编译直接获取到,从而保证资源文件的相对安全。
S103.根据所述混淆映射文件,在所述混淆安装包中执行所述测试用例。
具体地,在S102之后,即可建立自动化测试任务,所述自动化测试任务中包括了需要执行的测试用例,所述测试用例在S101中即可得到,通过执行所述自动化测试任务,完成对于混淆安装包的测试。
具体地,如图3所示,其示出了本发明实施例提供一种执行所述测试用例的方法,通过逐条执行所述测试用例中的语句完成对于测试用例的执行过程,所述方法具体包括:
S1031.读取测试用例中的语句。
S1032.若所述语句中包括原始安装包中的参量,则根据所述混淆映射文件查找所述参量对应的目标参量,所述目标参量为所述参量对应的混淆安装包中的参量;根据所述目标参量在所述混淆安装包中执行所述语句。
具体地,可以将混淆映射文件提取出来,接收原始安装包中的参量,然后通过对混淆映射文件的查找,返回所述参量对应的目标参量。
以原测试用例的语句为find(titlepath)为例,titlepath为原始安装包中的参量,其对应的目标参量为a;则在所述混淆安装包中执行find(a)即可。
S1033.若所述语句中不包括原始安装包中的参量,则直接在所述混淆安装包中执行所述语句。
具体地,可以在步骤S101中获取原始安装包中的控件的具体布局。比如对于名称为button1的控件,其所在屏幕位置为(30,40)。如若通过模拟点击等自动化操作触发了(30,40)这一位置的控件,则通过预先获取的具体布局可知,这一控件为名称为button1的控件,然后通过步骤S1031-S1033即可对于button1的控件进行测试。
具体地,在实际的测试过程中,可以随机生成对所述混淆安装包的各种模拟操作并执行相关的测试用例。所述模拟操作包括但不限于:鼠标左键点击、鼠标右键点击、鼠标左键长按、鼠标左键滑动或鼠标左右键双击。
具体地,如图4所示,其示出了本发明实施例提供另一种执行所述测试用例的方法,通过生成适用于混淆安装包的测试用例完成对于测试用例的执行过程,所述方法具体包括:
S10310.读取测试用例,并获取所述测试用例中的全部参量。
S10320.根据所述混淆映射文件查找到每一个参量对应的目标参量,所述目标参量为所述参量对应的混淆安装包中的参量。
具体地,可以将混淆映射文件提取出来,接收原始安装包中的参量,然后通过对混淆映射文件的查找,返回所述参量对应的目标参量。
S10330.将测试用例中的参量替换为其对应的目标参量以生成所述测试用例对应的适用于混淆安装包的测试用例。
S10340.在所述混淆安装包中执行所述测试用例对应的适用于混淆安装包的测试用例。
具体地,可以在步骤S101中获取原始安装包中的控件的具体布局。比如对于名称为button1的控件,其所在屏幕位置为(30,40)。如若通过模拟点击等自动化操作触发了(30,40)这一位置的控件,则通过预先获取的具体布局可知,这一控件为名称为button1的控件,然后通过步骤S10310-S10340即可对于button1的控件进行测试。
具体地,在实际的测试过程中,可以随机生成对所述混淆安装包的各种模拟操作并执行相关的测试用例。所述模拟操作包括但不限于:鼠标左键点击、鼠标右键点击、鼠标左键长按、鼠标左键滑动或鼠标左右键双击。
本发明实施例提供了一种测试方法,并具体提供了两种在混淆安装包中执行测试用例的方法。本发明实施例能够自动对混淆安装包进行测试。进一步地,本发明不需要对改变原始安装包的测试用例,即一份原始安装包的测试用例可以对各种各样的混淆安装包进行测试,既提升了测试用例的利用率,又简化了测试流程。
本发明实施例还提供了一种测试方法,包括:
S201.获取原始安装包,构建用于测试所述原始安装包的测试用例,所述测试用例中包括原始安装包中的参量。
S202.获取所述原始安装包对应的混淆安装包以及混淆映射文件;所述混淆映射文件记录有原始安装包中的参量与混淆安装包中的参量的映射关系。
具体地,本步骤中编译所述原始安装包对应的源文件,并在编译过程对于原始安装包中的参量进行代码混淆和/或资源混淆,编译结束后生成混淆后的混淆安装包以及混淆映射文件。
采用代码混淆和/或资源混淆的方法,虽然可以增加逆向难度,在一定程度上降低源代码泄露的风险,但是对于专业的逆向分析人员来说仍然很容易获得Java应用软件完整的源程序代码,为了进一步加强混淆效果,降低源代码泄露风险,本发明实施例在所述获取所述原始安装包对应的混淆安装包以及混淆映射文件之后,还对混淆安装包进行了强混淆,如图5所示,包括下述步骤:
S1.获取混淆安装包中至少一个类文件中能够进行合并的函数。
具体地,每一个类文件中包含至少一个函数,每个函数中包含至少一条指令。其中,类文件具有访问权限、类文件之间具有继承关系,函数具有访问权限,函数中的指令也具有访问权限。
具体地,根据至少一个类文件的访问权限、继承树、至少一个类文件的函数的访问权限和函数的指令的访问权限,获取能够进行合并的函数。能够进行合并的函数还分为能够进行跨类合并的函数和能够进行类里合并的函数。
S2.在所述混淆安装包中将所述能够进行合并的函数进行函数合并处理并生成合并记录文件;所述合并记录文件用于记录对函数进行合并处理的过程。
首先,将能够进行合并的函数的实例方法转为能够进行合并的函数的静态方法。
具体地,根据能够进行合并的函数所在类重新构造参数列表,根据重新构造的参数列表生成能够进行合并的函数的静态方法。
其次,将转化成静态方法的函数进行合并。
具体地,将转成静态方法的函数进行合并包括以下两种实现方式:
其中,第一种实现方式为:根据能够进行合并的函数的静态方法的栈区重新构造一个合并栈区;根据能够进行合并的函数的静态方法生成一个选择运行函数的指令(TABLESWITCH),上述指令用于选择运行的函数,例如:将函数1和函数2合并为函数3,通过上述选择运行函数的指令选择具体运行函数3中函数1的代码还是函数2的代码;修改上述能够进行合并的函数的静态方法中的指令的访问权限;根据上述合并栈区、上述选择运行函数的指令、上述能够进行合并的函数的静态方法中的指令的访问权限和上述能够进行合并的函数的静态方法的指令,生成一个合并函数,将调用上述能够进行合并的函数的代码修改为调用上述合并函数。将能够进行合并的函数的静态方法中的指令的访问权限修改为能够被上述合并函数访问。
第二种实现方式:将能够进行合并的函数的静态方法中的内联函数***到能够进行合并的函数中的静态方法中的调用函数的调用位置;将调用能够进行合并的函数的代码修改为调用合并函数。
步骤S1-S2的目的在于将多个函数的指令合并到同一函数中,产生强混淆的效果,同时减少了总函数数量,增加了通过反编译和通过逆向工程获得应用软件完整的远程代码的难度,从而实现保护Java应用软件。
S203.根据所述混淆映射文件,在所述混淆安装包中执行所述测试用例。
具体地,在S203之前,可建立自动化测试任务,所述自动化测试任务中包括了需要执行的测试用例,所述测试用例在S201中即可得到,通过执行所述自动化测试任务,完成对于混淆安装包的测试。
具体地,如图6所示,其示出了本发明实施例提供一种执行所述测试用例的方法,通过逐条执行所述测试用例中的语句完成对于测试用例的执行过程,所述方法具体包括:
S2031.读取测试用例中的语句。
S2032.若所述语句中包括原始安装包中的参量,则根据所述混淆映射文件查找所述参量对应的目标参量,所述目标参量为所述参量对应的混淆安装包中的参量;根据所述目标参量和所述合并记录文件在所述混淆安装包中执行所述语句。
具体地,可以将混淆映射文件提取出来,接收原始安装包中的参量,然后通过对混淆映射文件的查找,返回所述参量对应的目标参量。
以原测试用例的语句为find(titlepath)为例,titlepath为原始安装包中的参量,其对应的目标参量为a;则在所述混淆安装包中执行find(a)即可。
S2033.若所述语句中不包括原始安装包中的参量,则根据所述合并记录文件在所述混淆安装包中执行所述语句。
具体地,可以在步骤S201中获取原始安装包中的控件的具体布局。比如对于名称为button1的控件,其所在屏幕位置为(30,40)。如若通过模拟点击等自动化操作触发了(30,40)这一位置的控件,则通过预先获取的具体布局可知,这一控件为名称为button1的控件,然后通过步骤S2031-S2033即可对于button1的控件进行测试。
具体地,在实际的测试过程中,可以随机生成对所述混淆安装包的各种模拟操作并执行相关的测试用例。所述模拟操作包括但不限于:鼠标左键点击、鼠标右键点击、鼠标左键长按、鼠标左键滑动或鼠标左右键双击。
具体地,如图7所示,其示出了本发明实施例提供另一种执行所述测试用例的方法,通过生成适用于混淆安装包的测试用例完成对于测试用例的执行过程,所述方法具体包括:
S20310.读取测试用例,并获取所述测试用例中的全部参量
S20320.根据所述混淆映射文件查找到每一个参量对应的目标参量,所述目标参量为所述参量对应的混淆安装包中的参量。
具体地,可以将混淆映射文件提取出来,接收原始安装包中的参量,然后通过对混淆映射文件的查找,返回所述参量对应的目标参量。
S20330.将测试用例中的参量替换为其对应的目标参量以生成所述测试用例对应的适用于混淆安装包的测试用例。
S20340.根据所述合并记录文件在所述混淆安装包中执行所述测试用例对应的适用于混淆安装包的测试用例。
具体地,可以在步骤S201中获取原始安装包中的控件的具体布局。比如对于名称为button1的控件,其所在屏幕位置为(30,40)。如若通过模拟点击等自动化操作触发了(30,40)这一位置的控件,则通过预先获取的具体布局可知,这一控件为名称为button1的控件,然后通过步骤S10310-S10340即可对于button1的控件进行测试。
具体地,在实际的测试过程中,可以随机生成对所述混淆安装包的各种模拟操作并执行相关的测试用例。所述模拟操作包括但不限于:鼠标左键点击、鼠标右键点击、鼠标左键长按、鼠标左键滑动或鼠标左右键双击。
本发明实施例提供了一种测试方法,并具体提供了对于混淆安装包进行强混淆的方法,以及对强混淆后的混淆安装包进行测试的方法。本发明实施例能在混淆安装包中的产生强混淆效果并减少混淆安装包的函数数量,从而进一步减少混淆安装包的大小便于其在硬件资源有限的条件下运行。进一步地,本发明实施例还能够自动对强混淆后的混淆安装包进行测试。进一步地,本发明不需要对改变原始安装包的测试用例,即一份原始安装包的测试用例可以对各种各样的强混淆后的混淆安装包进行测试,既提升了测试用例的利用率,又简化了测试流程。
本发明实施例还提供了一种测试装置,如图8所示,所述装置包括:
原始安装包获取模块301,用于获取原始安装包,构建用于测试所述原始安装包的测试用例,所述测试用例中包括原始安装包中的参量。可用于执行方法实施例步骤S101和S201。
混淆文件获取模块302,用于获取所述原始安装包对应的混淆安装包以及混淆映射文件;所述混淆映射文件记录有原始安装包中的参量与混淆安装包中的参量的映射关系。具体地,所述混淆文件获取模块302用于编译所述原始安装包对应的源文件,并在编译过程对于原始安装包中的参量进行代码混淆和/或资源混淆,编译结束后生成混淆后的混淆安装包以及混淆映射文件。可用于执行方法实施例步骤S102和S202。
测试执行模块303,用于根据所述混淆映射文件,在所述混淆安装包中执行所述测试用例。可用于执行方法实施例步骤S103和S203。
具体地,如图9所示,所述测试执行模块303包括:
第一语句读取单元3031,用于读取测试用例中的语句。可用于执行方法实施例步骤S1031。
第一执行单元3032,用于若所述语句中包括原始安装包中的参量,则根据所述混淆映射文件查找所述参量对应的目标参量,所述目标参量为所述参量对应的混淆安装包中的参量;根据所述目标参量在所述混淆安装包中执行所述语句。可用于执行方法实施例步骤S1032。
第二执行单元3033,用于若所述语句中不包括原始安装包中的参量,则直接在所述混淆安装包中执行所述语句。可用于执行方法实施例步骤S1033。
具体地,如图10所示,所述测试执行模块303包括:
第一测试用例读取单元3034,用于读取测试用例,并获取所述测试用例中的全部参量。可用于执行方法实施例步骤S10310。
第一查找单元3035,用于根据所述混淆映射文件查找到每一个参量对应的目标参量,所述目标参量为所述参量对应的混淆安装包中的参量。可用于执行方法实施例步骤S10320。
第一替换单元3036,用于将测试用例中的参量替换为其对应的目标参量以生成所述测试用例对应的适用于混淆安装包的测试用例。可用于执行方法实施例步骤S10330。
第一测试单元3037,用于在所述混淆安装包中执行所述测试用例对应的适用于混淆安装包的测试用例。可用于执行方法实施例步骤S10340。
进一步地,装置还包括:
函数获取模块304,用于获取混淆安装包中至少一个类文件中能够进行合并的函数。可用于执行方法实施例步骤S1。
合并模块305,用于在所述混淆安装包中将所述能够进行合并的函数进行函数合并处理并生成合并记录文件;所述合并记录文件用于记录对函数进行合并处理的过程。可用于执行方法实施例步骤S2。
具体地,如图11,所述测试执行模块303包括:
第二语句读取单元30310,用于读取测试用例中的语句。可用于执行方法实施例步骤S2031。
第三执行单元30320,用于若所述语句中包括原始安装包中的参量,则根据所述混淆映射文件查找所述参量对应的目标参量,所述目标参量为所述参量对应的混淆安装包中的参量;根据所述目标参量和所述合并记录文件在所述混淆安装包中执行所述语句。可用于执行方法实施例步骤S2032。
第四执行单元30330,用于若所述语句中不包括原始安装包中的参量,则根据所述合并记录文件在所述混淆安装包中执行所述语句。可用于执行方法实施例步骤S2033。
具体地,如图12所示,所述测试执行模块303包括:
第二测试用例读取单元30340,用于读取测试用例,并获取所述测试用例中的全部参量。可用于执行方法实施例步骤S20310。
第二查找单元30350,用于根据所述混淆映射文件查找到每一个参量对应的目标参量,所述目标参量为所述参量对应的混淆安装包中的参量。可用于执行方法实施例步骤S20320。
第二替换单元30360,用于将测试用例中的参量替换为其对应的目标参量以生成所述测试用例对应的适用于混淆安装包的测试用例。可用于执行方法实施例步骤S20330。
第二测试单元30370,用于根据所述合并记录文件在所述混淆安装包中执行所述测试用例对应的适用于混淆安装包的测试用例。可用于执行方法实施例步骤S20340。
本发明的装置实施例与方法实施例均基于同样地发明构思,提供了一种测试装置,本实施例能够用于实现上述实施例中提供的测试方法。
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例用于实现测试方法所执行的程序代码。
可选地,在本实施例中,上述存储介质可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
获取原始安装包,构建用于测试所述原始安装包的测试用例,所述测试用例中包括原始安装包中的参量;
获取所述原始安装包对应的混淆安装包以及混淆映射文件;所述混淆映射文件记录有原始安装包中的参量与混淆安装包中的参量的映射关系;
根据所述混淆映射文件,在所述混淆安装包中执行所述测试用例。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
所述原始安装包中的参量包括原始安装包中的控件标识、类名称、方法名称、变量名称和/或资源路径。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
读取测试用例中的语句;
若所述语句中包括原始安装包中的参量,则根据所述混淆映射文件查找所述参量对应的目标参量,所述目标参量为所述参量对应的混淆安装包中的参量;根据所述目标参量在所述混淆安装包中执行所述语句;
若所述语句中不包括原始安装包中的参量,则直接在所述混淆安装包中执行所述语句。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
读取测试用例,并获取所述测试用例中的全部参量;
根据所述混淆映射文件查找到每一个参量对应的目标参量,所述目标参量为所述参量对应的混淆安装包中的参量;
将测试用例中的参量替换为其对应的目标参量以生成所述测试用例对应的适用于混淆安装包的测试用例;
在所述混淆安装包中执行所述测试用例对应的适用于混淆安装包的测试用例。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
编译所述原始安装包对应的源文件,并在编译过程对于原始安装包中的参量进行代码混淆和/或资源混淆,编译结束后生成混淆后的混淆安装包以及混淆映射文件。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
获取混淆安装包中至少一个类文件中能够进行合并的函数;
在所述混淆安装包中将所述能够进行合并的函数进行函数合并处理并生成合并记录文件;所述合并记录文件用于记录对函数进行合并处理的过程。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
读取测试用例中的语句;
若所述语句中包括原始安装包中的参量,则根据所述混淆映射文件查找所述参量对应的目标参量,所述目标参量为所述参量对应的混淆安装包中的参量;根据所述目标参量和所述合并记录文件在所述混淆安装包中执行所述语句;
若所述语句中不包括原始安装包中的参量,则根据所述合并记录文件在所述混淆安装包中执行所述语句。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
读取测试用例,并获取所述测试用例中的全部参量;
根据所述混淆映射文件查找到每一个参量对应的目标参量,所述目标参量为所述参量对应的混淆安装包中的参量;
将测试用例中的参量替换为其对应的目标参量以生成所述测试用例对应的适用于混淆安装包的测试用例;
根据所述合并记录文件在所述混淆安装包中执行所述测试用例对应的适用于混淆安装包的测试用例。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
参见图13,本发明实施例提供了一种终端,该终端可以用于实施上述实施例中提供的用于实现测试的方法。具体来讲:
所述终端可以包括RF(Radio Frequency,射频)电路110、包括有一个或一个以上计算机可读存储介质的存储器120、输入单元130、显示单元140、传感器150、音频电路160、WiFi(wireless fidelity,无线保真)模块170、包括有一个或者一个以上处理核心的处理器180、以及电源190等部件。本领域技术人员可以理解,图13中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路110可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器180处理;另外,将涉及上行的数据发送给基站。通常,RF电路110包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(LowNoiseAmplifier,低噪声放大器)、双工器等。此外,RF电路110还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System ofMobile communication,全球移动通讯***)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(CodeDivision MultipleAccess,码分多址)、WCDMA(Wideband Code DivisionMultipleAccess,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(Short Messaging Service,短消息服务)等。
存储器120可用于存储软件程序以及模块,处理器180通过运行存储在存储器120的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、功能所需的应用程序等;存储数据区可存储根据所述终端的使用所创建的数据等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器120还可以包括存储器控制器,以提供处理器180和输入单元130对存储器120的访问。
输入单元130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元130可包括触敏表面131以及其他输入设备132。触敏表面131,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面131上或在触敏表面131附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面131可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器180,并能接收处理器180发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面131。除了触敏表面131,输入单元130还可以包括其他输入设备132。具体地,其他输入设备132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元140可用于显示由用户输入的信息或提供给用户的信息以及所述终端的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元140可包括显示面板141,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板141。进一步的,触敏表面131可覆盖显示面板141,当触敏表面131检测到在其上或附近的触摸操作后,传送给处理器180以确定触摸事件的类型,随后处理器180根据触摸事件的类型在显示面板141上提供相应的视觉输出。虽然在图5中,触敏表面131与显示面板141是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面131与显示面板141集成而实现输入和输出功能。
所述终端还可包括至少一种传感器150,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板141的亮度,接近传感器可在所述终端移动到耳边时,关闭显示面板141和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于所述终端还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路160、扬声器161,传声器162可提供用户与所述终端之间的音频接口。音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161转换为声音信号输出;另一方面,传声器162将收集的声音信号转换为电信号,由音频电路160接收后转换为音频数据,再将音频数据输出处理器180处理后,经RF电路110以发送给比如另一终端,或者将音频数据输出至存储器120以便进一步处理。音频电路160还可能包括耳塞插孔,以提供外设耳机与所述终端的通信。
WiFi属于短距离无线传输技术,所述终端通过WiFi模块170可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图13示出了WiFi模块170,但是可以理解的是,其并不属于所述终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器180是所述终端的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器120内的软件程序和/或模块,以及调用存储在存储器120内的数据,执行所述终端的各种功能和处理数据,从而对终端进行整体监控。可选的,处理器180可包括一个或多个处理核心;优选的,处理器180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器180中。
所述终端还包括给各个部件供电的电源190(比如电池),优选的,电源可以通过电源管理***与处理器180逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。电源190还可以包括一个或一个以上的直流或交流电源、再充电***、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,所述终端还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端的显示单元是触摸屏显示器,终端还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行本发明中方法实施例中的指令。
综上,本发明实施例提供的终端,能够自动对混淆后的安装包进行测试。进一步地,本发明不需要对改变原始安装包的测试用例,即一份原始安装包的测试用例可以对各种各样的混淆后的安装包进行测试,既提升了测试用例的利用率,又简化了测试流程。
需要说明的是:上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种测试方法,其特征在于,所述方法包括:
获取原始安装包,构建用于测试所述原始安装包的测试用例,所述测试用例中包括原始安装包中的参量;
获取所述原始安装包对应的混淆安装包以及混淆映射文件;所述混淆映射文件记录有原始安装包中的参量与混淆安装包中的参量的映射关系;
获取混淆安装包中至少一个类文件中能够进行合并的函数;在所述混淆安装包中将所述能够进行合并的函数进行函数合并处理并生成合并记录文件;所述合并记录文件用于记录对函数进行合并处理的过程;
随机生成对所述混淆安装包的各种模拟操作并执行相关的测试用例,所述测试用例执行过程中获取原始安装包中的控件的具体布局,根据所述模拟操作确定所述模拟操作所触发的所述具体布局中的控件;
读取对于所述控件的测试用例,并获取所述测试用例中的全部参量;
根据所述混淆映射文件查找到每一个参量对应的目标参量,所述目标参量为所述参量对应的混淆安装包中的参量;
将测试用例中的参量替换为其对应的目标参量以生成所述测试用例对应的适用于混淆安装包的测试用例;
根据所述合并记录文件在所述混淆安装包中执行所述测试用例对应的适用于混淆安装包的测试用例。
2.根据权利要求1所述的方法,其特征在于,所述原始安装包中的参量包括原始安装包中的控件标识、类名称、方法名称、变量名称和/或资源路径。
3.根据权利要求1所述的方法,其特征在于,所述获取所述原始安装包对应的混淆安装包以及混淆映射文件包括:
编译所述原始安装包对应的源文件,并在编译过程对于原始安装包中的参量进行代码混淆和/或资源混淆,编译结束后生成混淆后的混淆安装包以及混淆映射文件。
4.一种测试装置,其特征在于,所述装置包括:
原始安装包获取模块,用于获取原始安装包,构建用于测试所述原始安装包的测试用例,所述测试用例中包括原始安装包中的参量;
混淆文件获取模块,用于获取所述原始安装包对应的混淆安装包以及混淆映射文件;所述混淆映射文件记录有原始安装包中的参量与混淆安装包中的参量的映射关系;
测试执行模块,用于执行下述操作:
获取混淆安装包中至少一个类文件中能够进行合并的函数;在所述混淆安装包中将所述能够进行合并的函数进行函数合并处理并生成合并记录文件;所述合并记录文件用于记录对函数进行合并处理的过程;
随机生成对所述混淆安装包的各种模拟操作并执行相关的测试用例,所述测试用例执行过程中获取原始安装包中的控件的具体布局,根据所述模拟操作确定所述模拟操作所触发的所述具体布局中的控件;
读取对于所述控件的测试用例,并获取所述测试用例中的全部参量;
根据所述混淆映射文件查找到每一个参量对应的目标参量,所述目标参量为所述参量对应的混淆安装包中的参量;
将测试用例中的参量替换为其对应的目标参量以生成所述测试用例对应的适用于混淆安装包的测试用例;
根据所述合并记录文件在所述混淆安装包中执行所述测试用例对应的适用于混淆安装包的测试用例。
5.根据权利要求4所述的装置,其特征在于,所述原始安装包中的参量包括原始安装包中的控件标识、类名称、方法名称、变量名称和/或资源路径。
6.根据权利要求4所述的装置,其特征在于,所述混淆文件获取模块用于编译所述原始安装包对应的源文件,并在编译过程对于原始安装包中的参量进行代码混淆和/或资源混淆,编译结束后生成混淆后的混淆安装包以及混淆映射文件。
7.一种测试终端,其特征在于,所述终端包括权利要求4至6中任意一项所述的测试装置。
8.一种存储介质,其特征在于,所述存储介质可以用于保存权利要求1至3中任一项所述的测试方法所执行的程序代码。
CN201710208025.4A 2017-03-31 2017-03-31 一种测试方法、装置及终端 Active CN108664389B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710208025.4A CN108664389B (zh) 2017-03-31 2017-03-31 一种测试方法、装置及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710208025.4A CN108664389B (zh) 2017-03-31 2017-03-31 一种测试方法、装置及终端

Publications (2)

Publication Number Publication Date
CN108664389A CN108664389A (zh) 2018-10-16
CN108664389B true CN108664389B (zh) 2023-03-31

Family

ID=63783706

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710208025.4A Active CN108664389B (zh) 2017-03-31 2017-03-31 一种测试方法、装置及终端

Country Status (1)

Country Link
CN (1) CN108664389B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110457209A (zh) * 2019-07-16 2019-11-15 阿里巴巴集团控股有限公司 用于调试应用的方法和***
CN113010364B (zh) * 2019-12-20 2023-08-01 北京奇艺世纪科技有限公司 一种业务数据获取方法、装置及电子设备
CN113094664B (zh) * 2021-04-09 2022-11-04 每日互动股份有限公司 一种防止安卓应用程序被反编译的***

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103699476A (zh) * 2012-09-27 2014-04-02 腾讯科技(深圳)有限公司 覆盖率测试方法及***

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7937693B2 (en) * 2006-04-26 2011-05-03 9Rays.Net, Inc. System and method for obfuscation of reverse compiled computer code
CN105404794B (zh) * 2014-09-04 2019-09-20 腾讯科技(深圳)有限公司 Java应用软件的保护方法和装置
CN106203007B (zh) * 2015-05-08 2020-03-03 腾讯科技(深圳)有限公司 一种代码处理方法、装置及计算设备
CN105701410B (zh) * 2015-12-31 2019-03-01 华为技术有限公司 一种获得源代码中信息的方法、装置及***

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103699476A (zh) * 2012-09-27 2014-04-02 腾讯科技(深圳)有限公司 覆盖率测试方法及***

Also Published As

Publication number Publication date
CN108664389A (zh) 2018-10-16

Similar Documents

Publication Publication Date Title
CN107038112B (zh) 应用界面的调试方法及装置
CN108415739B (zh) 一种动态链接库函数的钩挂方法、装置和存储介质
CN107800651B (zh) 应用程序关闭方法、装置、存储介质和电子设备
US9800609B2 (en) Method, device and system for detecting malware in a mobile terminal
CN105404585B (zh) 获取代码覆盖率的方法及装置
CN106598584B (zh) 一种处理资源文件的方法、装置和***
CN108932429B (zh) 应用程序的分析方法、终端及存储介质
US10186244B2 (en) Sound effect processing method and device, plug-in unit manager and sound effect plug-in unit
CN106502703B (zh) 一种函数调用方法和装置
CN109857403B (zh) 一种页面更新、页面处理方法及装置
CN106502906B (zh) 一种测试应用程序的方法和装置
CN104965722B (zh) 一种显示信息的方法及装置
CN110058850B (zh) 一种应用的开发方法、装置以及存储介质
CN106919458B (zh) Hook目标内核函数的方法及装置
CN105847325B (zh) 应用客户端的调试方法及装置
CN104077184B (zh) 一种应用程序的进程控制方法及计算机***
CN106713608B (zh) 应用的功能状态修改方法、装置及终端
CN107276602B (zh) 射频干扰处理方法、装置、存储介质及终端
CN107622200A (zh) 应用程序的安全性检测方法及装置
CN111723002A (zh) 一种代码调试方法、装置、电子设备及存储介质
CN108664389B (zh) 一种测试方法、装置及终端
CN111966491B (zh) 统计占用内存的方法及终端设备
CN109933381A (zh) 一种内核的加载方法及装置
CN106155717A (zh) 一种将sdk集成到第三方apk的方法和装置
CN108984374B (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