应用程序性能测试方法及装置的制造方法_3

文档序号:9787312阅读:来源:国知局
再解析并测试第二类函数,在第二类函数中也没有发现拖慢应用程序启动时间的函数的情况下,再解析并测试第三类函数。通过这种分级策略,提高了测试效率。当然,本发明不仅限于此,也可以是同时测试三类函数,或者在这三类函数中随机选择函数进行测试。
[0052]对于第一类函数,以Android系统为例,应用程序中涉及操作系统框架的组件有Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器等组件,这些组件中涉及开发人员编写的函数是需要测试的函数,例如组件中重写的函数。举例来说,BroadcastReceiver广播接收器是Android应用中一个重要的组件。BroadcastReceiver非常类似于事件编程中的监听器。与普通事件监听器不同的是:普通事件监听器监听的事件源是程序中的对象;而BroadcastReceiver监听的事件源是Android应用中的其他组件。当需要使用BroadcastReceiver组件接收广播消息时,开发人员需要实现自己的BroadcastReceiver子类,并重写onReceiveO函数。这里,onReceiveO函数就是需要测试的函数之一。
[0053]对于第二类函数,由JAVA语言派生出来的类和方法,指的是继承或重载JAVA已有类的类和方法。JAVA语言包含许多已实现的类和方法,继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。重载用于创建完成一组任务相似但参数的类型或参数的个数不同的方法。
[0054]对于第三类函数,开发人员自定义的类和方法。开发人员根据实际需求自定义的类和方法,用以实现特定功能,这些自定义的类和方法与JAVA已有类无继承关系,但可能具有引用关系。
[0055]对于线程,解析模块301解析得到应用程序中继承线程基类的线程,或者,解析得到应用程序中实现:runable接口的线程。
[0056]接管模块302,适于在应用程序启动过程中,接管函数和/或线程,记录函数和/或线程的执行时间和调用次数。接管模块302进一步适于:对于线程,接管线程的run方法,记录线程的执行时间和调用次数。
[0057]具体的,对于函数,接管模块302通过hook方法接管函数本身,记录函数的执行时间和调用次数。对于线程,接管模块302通过hook方法接管线程的run()方法,记录线程的执行时间和调用次数。具体的,在需要测试的函数和/或线程run()方法中设置hook事件,该hook事件用于监测函数和/或线程run()方法的执行时间和调用次数。在应用程序启动过程中,一旦某个需要测试的函数和/或线程run O方法执行完成,触发hook事件,接管模块302就会得到通知,继而得到被测试函数和/或线程run()方法的执行时间和调用次数。
[0058]排序模块303,适于根据函数和/或线程的执行时间和调用次数,对所有被测试的函数和/或线程进行排序,以供按照排序结果进行应用程序的调试。
[0059]排序模块303进一步包括:第一计算单元304,第二计算单元305,排序单元306。
[0060]第一计算单元304,适于根据函数和/或线程的单次调用的执行时间和调用次数,计算函数和/或线程的总执行时间。
[0061]第二计算单元305,适于根据函数和/或线程的总执行时间计算单次调用的平均执行时间。
[0062]排序单元306,适于根据函数和/或线程的总执行时间和/或单次调用的平均执行时间,对所有被测试的函数和/或线程进行排序。
[0063]根据本实施例提供的应用程序性能测试装置,首先通过解析确定需要测试的函数和/或线程,然后启动应用程序,通过hook方法接管函数和/或线程,记录函数和/或线程的执行时间和调用次数,根据函数和/或线程的执行时间和调用次数,对所有被测试的函数和/或线程进行排序,以供按照排序结果进行应用程序的调试。本装置深入到应用程序内部,对应用程序内部的函数和/或线程进行测试,测试出哪个函数和/或线程的执行时间最长,调用次数最多。根据测试结果,开发人员可有针对性的对这些函数和/或线程进行调试,以解决应用程序启动时间过长的技术问题。在解析需要测试的函数时,可按照分级策略进行解析,提高了测试效率。
[0064]在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0065]在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0066]类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循【具体实施方式】的权利要求书由此明确地并入该【具体实施方式】,其中每个权利要求本身都作为本发明的单独实施例。
[0067]本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0068]此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0069]本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的应用程序性能测试装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0070]应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1