系统性能测试方法、装置及存储介质与流程

文档序号:17536716发布日期:2019-04-29 14:04阅读:151来源:国知局
系统性能测试方法、装置及存储介质与流程

本发明涉及信息技术领域,尤其涉及一种系统性能测试方法、装置及计算机可读存储介质。



背景技术:

软件性能是软件的一种非功能特性,它关注的方面包括在完成该功能时展示出来的及时性。性能测试是通过自动化的测试工具在多种正常或异常条件下对系统的各项性能指标进行测试。在一个示例中,为了与竞品的系统性能指标进行对比,比如为了对比手机百度与竞品qq浏览器信息流中界面绑定数据这个步骤所消耗的时间,需要知道竞品qq浏览器中界面绑定数据这个步骤所消耗的时间。

目前,为了得到竞品中某个步骤执行所消耗的时间,需要对竞品进行如下操作:1.解包;2.反编译;3.加打点代码;4.重新编译打包。上述操作过程比较复杂,不易实现。而且,对于绝大部分成熟的产品而言,其产品本身会有“反重打包”机制。重新打包时需要校验签名,导致重新打包的app(application,应用程序)运行不起来。需要分析竞品的签名校验代码,想要绕过校验签名的步骤,根据竞品校验方式的不同,需要付出不同的努力。

综上,现有技术的系统性能测试方法有以下缺陷:

1.费时耗力,而且可能无法绕过“反重打包”,从而无法进行系统性能测试。

2.灵活性和可扩展性较差。如果想增加性能统计点,所有的操作步骤需要重新执行,包括:解包、反编译、加打点代码,重新编译打包。



技术实现要素:

本发明实施例提供一种系统性能测试方法、装置及计算机可读存储介质,以至少解决现有技术中的一个或多个技术问题。

第一方面,本发明实施例提供了一种系统性能测试方法,包括:

利用独立钩子插件获取与想要统计的系统性能相关的第一目标信息,并对所述第一目标信息进行解析,得到第二目标信息;

利用侵入钩子插件从所述独立钩子插件查询所述第二目标信息,并获取与所述第二目标信息对应的功能执行函数的性能指标信息。

在一种实施方式中,利用独立钩子插件获取与想要统计的系统性能相关的第一目标信息,包括:从配置文件获取所述第一目标信息,所述第一目标信息包括:包名、功能执行函数所在的类名、功能执行函数的函数名和功能执行函数的函数参数类型。

在一种实施方式中,对所述第一目标信息进行解析,得到第二目标信息,包括:

将所述第一目标信息转换成与所述侵入钩子插件适配的格式,得到所述第二目标信息。

在一种实施方式中,利用侵入钩子插件从所述独立钩子插件查询所述第二目标信息,包括:

从所述独立钩子插件通过跨进程通信的方式查询所述第二目标信息。

在一种实施方式中,获取与所述第二目标信息对应的功能执行函数的性能指标信息,包括:

在所述功能执行函数中插入第一钩子程序,利用所述第一钩子程序获取所述功能执行函数的性能指标信息。

在一种实施方式中,在所述功能执行函数中插入第一钩子程序,利用所述第一钩子程序获取所述功能执行函数的性能指标信息,包括:

在初始化函数中插入第二钩子程序,利用所述第二钩子程序在所述初始化函数结束时触发所述第一钩子程序,以获取所述功能执行函数的性能指标信息。

在一种实施方式中,获取所述功能执行函数的性能指标信息,包括:

记录所述功能执行函数的开始执行的时间点和执行结束的时间点;

根据所述开始执行的时间点和执行结束的时间点,统计所述功能执行函数的时间性能。

第二方面,本发明实施例提供了一种系统性能测试装置,包括:

独立钩子插件,用于获取与想要统计的系统性能相关的第一目标信息,并对所述第一目标信息进行解析,得到第二目标信息;

侵入钩子插件,用于从所述独立钩子插件查询所述第二目标信息,并获取与所述第二目标信息对应的功能执行函数的性能指标信息。

在一种实施方式中,所述独立钩子插件还用于:从配置文件获取所述第一目标信息,所述第一目标信息包括:包名、功能执行函数所在的类名、功能执行函数的函数名和功能执行函数的函数参数类型。

在一种实施方式中,所述独立钩子插件还用于:将所述第一目标信息转换成与所述侵入钩子插件适配的格式,得到所述第二目标信息。

在一种实施方式中,所述侵入钩子插件还用于:

从所述独立钩子插件通过跨进程通信的方式查询所述第二目标信息。

在一种实施方式中,所述侵入钩子插件还用于:

在所述功能执行函数中插入第一钩子程序,利用所述第一钩子程序获取所述功能执行函数的性能指标信息。

在一种实施方式中,所述侵入钩子插件还用于:

在初始化函数中插入第二钩子程序,利用所述第二钩子程序在所述初始化函数结束时触发所述第一钩子程序,以获取所述功能执行函数的性能指标信息。

在一种实施方式中,所述第一钩子程序用于:记录所述功能执行函数的开始执行的时间点和执行结束的时间点;

所述侵入钩子插件还用于:根据所述开始执行的时间点和执行结束的时间点,统计所述功能执行函数的时间性能。

第三方面,本发明实施例提供了一种系统性能测试装置,所述装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。

在一个可能的设计中,所述装置的结构中包括处理器和存储器,所述存储器用于存储支持所述装置执行上述方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。所述装置还可以包括通信接口,用于与其他设备或通信网络通信。

第四方面,本发明实施例提供了一种计算机可读存储介质,其存储有计算机程序,该程序被处理器执行时实现上述第一方面中任一所述的方法。

上述技术方案中的一个技术方案具有如下优点或有益效果:在进行系统性能测试时不需要对系统进行任何改动,直接在装有钩子框架的设备上运行即可。

上述技术方案中的另一个技术方案具有如下优点或有益效果:分别设置独立钩子插件和侵入钩子插件,侵入钩子插件从独立钩子插件查询想要统计的信息,可在独立钩子插件先对要统计的信息做预解析,将信息转换成侵入钩子插件需要的格式,减少了侵入钩子插件直接从存储设备查询统计信息的耗时。

上述技术方案中的另一个技术方案具有如下优点或有益效果:如果想要新增和减少性能统计点,只需要修改一下存储设备上的配置文件即可实现,非常灵活方便,具有较好的可扩展性。

上述技术方案中的另一个技术方案具有如下优点或有益效果:在初始化函数结束的时候触发功能执行函数中的钩子程序,可以保证在适当的时间点从功能执行函数获取性能指标信息,以保证能够获取到完整的系统性能参数。

上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本发明进一步的方面、实施方式和特征将会是容易明白的。

附图说明

在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本发明公开的一些实施方式,而不应将其视为是对本发明范围的限制。

图1为本发明实施例提供的系统性能测试方法的流程图。

图2为本发明实施例提供的系统性能测试方法的竞品性能测试示意图。

图3为本发明实施例提供的系统性能测试方法的获取功能执行函数的性能指标信息的流程图。

图4为本发明实施例提供的系统性能测试装置的结构框图。

图5为本发明实施例提供的系统性能测试装置的结构框图。

具体实施方式

在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本发明的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。

图1为本发明实施例提供的系统性能测试方法的流程图。如图1所示,本发明实施例的系统性能测试方法包括:

步骤s110,利用独立钩子插件获取与想要统计的系统性能相关的第一目标信息,并对所述第一目标信息进行解析,得到第二目标信息;

步骤s120,利用侵入钩子插件从所述独立钩子插件查询所述第二目标信息,并获取与所述第二目标信息对应的功能执行函数的性能指标信息。

本发明实施例通过hook(可以称为钩子或挂钩)方式进行系统性能测试。其中,hook方式是在运行时动态将额外代码依附于功能执行函数中,从而实现替换现有处理逻辑或插入额外功能的目的。例如,在android操作系统中系统维护着自己的一套事件分发机制。系统中的应用程序,包括应用触发事件和后台逻辑处理,也是根据事件流程一步步地向下执行。hook可在事件传送到终点前截获并监控事件的传输,像个钩子钩上事件一样,并且能够在钩上事件时,处理一些自己特定的事件。hook能够将自身的代码“融入”被勾住(hook)的程序的进程中,成为目标进程的一个部分。这样当这些被勾住的程序被调用时,也就可以执行hook自身的代码。

本发明实施例通过hook插件进行系统性能测试。hook插件是运行在hook框架上的插件,它能够hook任何app(application,应用程序)的函数,在这个函数的开始和结束运行自己的代码。在本发明实施例的架构设计中,分别设置hook插件的独立app部分和侵入部分,其中,hook插件的独立app部分也称独立钩子插件。独立钩子插件具有自身独立运行的app。hook插件的侵入部分也称侵入钩子插件。侵入钩子插件运行在想要进行性能测试的系统里。

图2为本发明实施例提供的系统性能测试方法的竞品性能测试示意图。如图2所示,在一个示例中,想要对竞品app进行系统性能分析,可将想要统计的系统性能相关的第一目标信息存储在手机sd卡(securedigitalmemorycard/sdcard,安全数码卡)中。hook插件的独立app部分从手机sd卡读入即将被统计信息,也就是想要统计的系统性能相关的第一目标信息。在竞品app中运行的hook插件的侵入部分从hook插件的独立app部分查询即将被统计的信息,也就是第二目标信息。

在上述方法中分别设置hook插件的独立app部分和侵入部分可提高效率。两个进程之间的相互通信比在存储设备上读取文件的方式的通信效率高,速度快。因此,通过hook插件的独立app部分和侵入部分的进程之间的相互通信,比hook插件的侵入部分从存储设备上读取文件的方式的通信效率高。

本发明实施例通过hook的方式,不需要修改竞品的程序代码,可在竞品的要被统计的函数开始执行和执行结束时分别获取当前时间点。然后用这两个时间点做减法,得到竞品的函数对应的操作步骤所消耗的时间。

上述技术方案具有如下优点或有益效果:在进行系统性能测试时不需要对系统进行任何改动,直接在装有钩子框架的设备上运行即可。

在一种实施方式中,利用独立钩子插件获取与想要统计的系统性能相关的第一目标信息,包括:从配置文件获取所述第一目标信息,所述第一目标信息包括:包名、功能执行函数所在的类名、功能执行函数的函数名和功能执行函数的函数参数类型。

参见图2,在一个示例中,可将想要统计的系统性能相关的第一目标信息存储在存储设备中。例如在手机sd卡中存储想要测试的竞品app的若干个操作步骤所消耗的时间。想要测试的若干个操作步骤可能对应着多条第一目标信息。每条第一目标信息中可包括竞品包名、竞品函数所在的类名、函数名和函数参数类型。其中,函数可以包括与想要测试的操作步骤对应的功能执行函数,函数参数类型可以以函数参数类型列表的形式存储。

上述技术方案的具有如下优点或有益效果:如果想要新增和减少性能统计点,只需要修改一下存储设备上的配置文件即可实现,非常灵活方便,具有较好的可扩展性。

在一种实施方式中,对所述第一目标信息进行解析,得到第二目标信息,包括:

将所述第一目标信息转换成与所述侵入钩子插件适配的格式,得到所述第二目标信息。

在一中示例中,第一目标信息和第二目标信息都是想要统计的系统性能相关的信息,两者的内容相同,但格式不同。第一目标信息存储在sd卡等存储设备的配置文件中,可对配置文件进行增删改查等操作。第一目标信息的存储格式需要与增删改查等操作相适配。第二目标信息包括供hook插件的侵入部分查询和使用的信息,hook插件的侵入部分依据第二目标信息对其中的各个函数进行hook。第二目标信息的格式需要与hook插件的侵入部分的使用功能相适配。

另外,本发明实施例将所述第一目标信息转换成所述第二目标信息,如前述,两者的内容相同,但格式不同。也就是说,所述第一目标信息对应的功能执行函数与所述第二目标信息对应的功能执行函数也是相同的。

上述技术方案具有如下优点或有益效果:分别设置独立钩子插件和侵入钩子插件,侵入钩子插件从独立钩子插件查询想要统计的信息,可在独立钩子插件先对要统计的信息做预解析,将信息转换成侵入钩子插件需要的格式,减少了侵入钩子插件直接从存储设备查询统计信息的耗时。

在一个示例中,本发明实施例的性能测试方法主要包括以下步骤:

1.首先hook插件的独立app部分访问存储设备,如sd卡或者服务器,从存储设备读取要被统计的信息。

2.hook插件的独立app部分对读取的信息进行解析,将解析后的信息存到内存,并启动一个用于查询信息的service(服务),等待解析后的信息被hook插件的侵入部分查询。其中,对读取的信息进行解析,是将读取的信息转换成hook插件的侵入部分需要的格式。

在一种实施方式中,利用侵入钩子插件从所述独立钩子插件查询所述第二目标信息,包括:

从所述独立钩子插件通过跨进程通信的方式查询所述第二目标信息。

参见图2,在竞品app中运行的hook插件的侵入部分从hook插件的独立app部分查询即将被统计的信息,也就是第二目标信息。例如,可通过binder这种跨进程通信的方式查询被统计的信息。其中,binder是一种进程间通信机制,从字面上来解释binder有胶水、粘合剂的意思,顾名思义就是粘和不同的进程,使之实现通信。以android系统为例,组成android应用程序的各个组件有时运行在同一进程,有时运行在不同的进程。这些进程依赖于binderipc(inter-processcommunication,进程间通信)机制进行彼此之间的通信。

在一种实施方式中,获取与所述第二目标信息对应的功能执行函数的性能指标信息,包括:

在所述功能执行函数中插入第一钩子程序,利用所述第一钩子程序获取所述功能执行函数的性能指标信息。

在一种实施方式中,在所述功能执行函数中插入第一钩子程序,利用所述第一钩子程序获取所述功能执行函数的性能指标信息,包括:

在初始化函数中插入第二钩子程序,利用所述第二钩子程序在所述初始化函数结束时触发所述第一钩子程序,以获取所述功能执行函数的性能指标信息。

仍以android系统的竞品app性能测试为例,竞品app启动以后,hook插件的侵入部分hook住application类的oncreate函数,以便在oncreate函数结束的时候,从hook插件的独立app部分通过binder这种跨进程通信的方式查询被统计的信息,然后根据查询得到的信息对竞品的各个对应的函数进行hook。

其中,application类代表应用程序(即androidapp)的类,也属于android中的一个系统组件。每个androidapp运行时,会首先自动创建application类并实例化application对象。application对象的生命周期是整个程序中最长的,即等于androidapp的生命周期。oncreate函数是初始化函数。oncreate函数在application实例创建的时候调用,一般用于初始化应用程序级别的资源,如全局对象、环境配置变量、图片资源初始化、推送服务的注册等。

hook住application类的oncreate函数,其目的是为了在oncreate函数结束的时候,在保证竞品app的其他的类(除application类之外的)已经被加载到进程中的时候,去对竞品的各个函数进行hook。也就是在适当的时间点对函数进行hook,以保证能够获取到完整的系统性能参数。

上述方法中,除了application类的oncreate函数之外,也可以通过hook住其他函数实现同样的功能。例如可hook住竞品app的第一个activity(活动组件)的oncreate函数。

上述技术方案具有如下优点或有益效果:在初始化函数结束的时候触发功能执行函数中的钩子程序,可以保证在适当的时间点从功能执行函数获取性能指标信息,以保证能够获取到完整的系统性能参数。

图3为本发明实施例提供的系统性能测试方法的获取功能执行函数的性能指标信息的流程图。如图3所示,在一种实施方式中,获取所述功能执行函数的性能指标信息,包括:

步骤s210,记录所述功能执行函数的开始执行的时间点和执行结束的时间点;

步骤s220,根据所述开始执行的时间点和执行结束的时间点,统计所述功能执行函数的时间性能。

在一个示例中,所有被hook的函数,在函数开始执行时,hook插件代码会先运行,记录下当前时间点s1。在函数执行结束的时候,hook插件代码会再运行,记录下当前时间点s2。然后并计算s2-s1,得到函数的执行时间。将函数的执行时间写入log(日志)。其中,log可存储在sd卡或服务器等持久化存储设备上。

图4为本发明实施例提供的系统性能测试装置的结构框图。如图4所示,本发明实施例的系统性能测试装置包括:

独立钩子插件100,用于获取与想要统计的系统性能相关的第一目标信息,并对所述第一目标信息进行解析,得到第二目标信息;

侵入钩子插件200,用于从所述独立钩子插件查询所述第二目标信息,并获取与所述第二目标信息对应的功能执行函数的性能指标信息。

在一种实施方式中,所述独立钩子插件100还用于:从配置文件获取所述第一目标信息,所述第一目标信息包括:包名、功能执行函数所在的类名、功能执行函数的函数名和功能执行函数的函数参数类型。

在一种实施方式中,所述独立钩子插件100还用于:将所述第一目标信息转换成与所述侵入钩子插件适配的格式,得到所述第二目标信息。

在一种实施方式中,所述侵入钩子插件200还用于:

从所述独立钩子插件通过跨进程通信的方式查询所述第二目标信息。

在一种实施方式中,所述侵入钩子插件200还用于:

在所述功能执行函数中插入第一钩子程序,利用所述第一钩子程序获取所述功能执行函数的性能指标信息。

在一种实施方式中,所述侵入钩子插件200还用于:

在初始化函数中插入第二钩子程序,利用所述第二钩子程序在所述初始化函数结束时触发所述第一钩子程序,以获取所述功能执行函数的性能指标信息。

在一种实施方式中,所述第一钩子程序用于:记录所述功能执行函数的开始执行的时间点和执行结束的时间点;

所述侵入钩子插件200还用于:根据所述开始执行的时间点和执行结束的时间点,统计所述功能执行函数的时间性能。

本发明实施例的系统性能测试装置中各单元的功能可以参见上述方法的相关描述,在此不再赘述。

在一个可能的设计中,系统性能测试装置的结构中包括处理器和存储器,所述存储器用于存储支持系统性能测试装置执行上述系统性能测试方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。所述系统性能测试装置还可以包括通信接口,系统性能测试装置与其他设备或通信网络通信。

图5为本发明实施例提供的系统性能测试装置的结构框图。如图5所示,该装置包括:存储器101和处理器102,存储器101内存储有可在处理器102上运行的计算机程序。所述处理器102执行所述计算机程序时实现上述实施例中的系统性能测试方法。所述存储器101和处理器102的数量可以为一个或多个。

该装置还包括:

通信接口103,用于与外界设备进行通信,进行数据交互传输。

存储器101可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。

如果存储器101、处理器102和通信接口103独立实现,则存储器101、处理器102和通信接口103可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构(isa,industrystandardarchitecture)总线、外部设备互连(pci,peripheralcomponent)总线或扩展工业标准体系结构(eisa,extendedindustrystandardcomponent)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

可选的,在具体实现上,如果存储器101、处理器102及通信接口103集成在一块芯片上,则存储器101、处理器102及通信接口103可以通过内部接口完成相互间的通信。

又一方面,本发明实施例提供了一种计算机可读存储介质,其存储有计算机程序,该程序被处理器执行时实现上述系统性能测试方法中任一所述的方法。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。所述存储介质可以是只读存储器,磁盘或光盘等。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1