CN104685473B - 一种软件测试方法及装置 - Google Patents

一种软件测试方法及装置 Download PDF

Info

Publication number
CN104685473B
CN104685473B CN201380003956.0A CN201380003956A CN104685473B CN 104685473 B CN104685473 B CN 104685473B CN 201380003956 A CN201380003956 A CN 201380003956A CN 104685473 B CN104685473 B CN 104685473B
Authority
CN
China
Prior art keywords
time
measuring
object function
code
residence time
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
CN201380003956.0A
Other languages
English (en)
Other versions
CN104685473A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN104685473A publication Critical patent/CN104685473A/zh
Application granted granted Critical
Publication of CN104685473B publication Critical patent/CN104685473B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • 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

Abstract

本发明实施例提供了一种软件测试方法,包括:获取待测软件中目标函数的代码地址区间;运行所述待测软件,并统计预置的测量时间内PC程序计数器指针在所述代码地址区间内的停留时间,所述测量时间为处理器时钟周期的整数倍;根据所述停留时间计算所述目标函数的负载信息。本发明实施例还提供了一种软件测试装置,采用本发明,可以准确的估计待测软件中目标函数的负载情况。

Description

一种软件测试方法及装置
技术领域
本发明涉及测试领域,尤其涉及一种软件测试方法及装置。
背景技术
在软件的开发设计阶段,通常需要测试软件中关注的目标函数的负载情况,以便软件开发人员根据目标函数的负载情况对软件进行优化。
在现有技术中,为了软件中目标函数的负载情况,采用的方案是:1、在目标函数入口和出口插入测试桩代码,计算打点获得的目标函数出口和入口时间差值,可以得到目标函数执行消耗的时间,如此就可以获得目标函数的负载情况。2、提取硬件时钟,计算程序开始目标函数开始时间和结束时间的差值,通过该差值获得目标函数的负载情况。
申请人发现,采用方案1测试目标函数的负载情况,需要在软件中插入测试转代码得专门的测试桩版本软件,因此测试时实现不方便,同时测试桩代码对目标函数的负载有干扰和影响。
采用方案2测试时,如果系统在运行其他的后台程序,可能在运行过程中切换到其他进程中,会影响到最终结果的值,不能准确的反映目标函数的负载情况。
发明内容
本发明实施例提供了一种软件测试方法及装置,可以准确的估计目标函数的负载情况。
本发明实施例第一方面提供了一种软件测试方法,包括:
获取待测软件中目标函数的代码地址区间;
运行所述待测软件,并统计预置的测量时间内PC程序计数器指针在所述代码地址区间内的停留时间,所述测量时间为处理器时钟周期的整数倍;
根据所述停留时间计算所述目标函数的负载信息。
在第一种可能的实现方式中,所述统计预置的测量时间内所述目标函数的代码地址区间的停留时间的步骤包括:
在所述测量时间内检测到每个处理器时钟周期到来时,获取所述PC指针的地址信息;
若所述地址信息位于所述目标函数的代码地址区间内,则将所述停留时间增加一个处理器时钟周期,所述停留时间的初始值为0。
结合第一方面和第一种可能的实现方式,在第二种可能的实现方式中,所述获待测软件中目标函数的代码地址区间的步骤包括:
将所述待测软件编译成汇编代码,根据所述汇编代码获取所述目标函数的代码地址区间。
结合第一方面至第二种可能的实现方式中的任一种,在第三种可能的实现方式中,还包括:
若所述目标函数为IDLE任务函数,根据IDLE函数的停留时间与所述测量时间计算运行所述被测软件的处理器的利用率。
结合第一方面至第三种可能的实现方式中的任一种,在第四种可能的实现方式中,所述获取待测软件中目标函数的代码地址区间的步骤之前,还包括:
通过定时器设置测量时间。
本发明第二方面提供了一种软件测试装置,包括:
获取模块,用于获取被测软件中目标函数的代码地址区间;
统计模块,用于运行所述被测代码,并统计预置的测量时间内PC程序计数器指针在所述代码地址区间内的停留时间,所述测量时间为处理器时钟周期的整数倍;
计算模块,用于根据所述停留时间计算所述目标函数的负载信息。
在第一种可能的实现方式中,所述统计模块包括:
第一单元,用于在所述测量时间内检测到每个处理器时钟周期到来时,获取所述PC指针的地址信息;
第二单元,用于若所述地址信息位于所述目标函数的代码地址区间内,则将所述停留时间增加一个处理器时钟周期,所述停留时间的初始值为0。
结合第二方面和第一种可能的实现方式,在第二种可能的实现方式中,所述获取模块用于将所述待测软件编译成汇编代码,根据所述汇编代码获取所述目标函数的代码地址区间。
结合第二方面至第二种可能的实现方式中的任一种,在第三种可能的实现方式中,还包括:
处理器利用率计算模块,用于若所述目标函数为IDLE任务函数,根据IDLE函数的停留时间与所述测量时间计算运行所述被测代码的处理器的利用率。
结合第二方面至第三种可能的实现方式中的任一种,在第三种可能的实现方式中,还包括:
配置模块,用于通过处理器的定时器设置测量时间。
本发明第三方面提供了一种软件测试装置,包括:
协处理器,所述写处理器包括存储器和定时器
所述存储器存储待测软件中目标函数的代码地址区间和测量时间,所述测量时间为处理器时钟周期的整数倍,所述定时器读取所述存储器存储的测量时间作为定时时长,所述协处理器统计预置的测量时间内PC程序计数器指针在所述代码地址区间内的停留时间,并将所述停留时间存储至所述存储器中。
在第一种可能的实现方式中,所述协处理器执行统计预置的测量时间内所述目标函数的代码地址区间的停留时间的步骤包括:
在所述测量时间内检测到每个处理器时钟周期到来时,获取所述PC指针的地址信息;
若所述地址信息位于所述目标函数的代码地址区间内,则将所述停留时间增加一个处理器时钟周期,所述停留时间的初始值为0。
结合第三方面和第一种可能的实现方式,在第二种可能的实现方式中,所述协处理器用于:
将所述待测软件编译成汇编代码,根据所述汇编代码获取所述目标函数的代码地址区间。
结合第三方面至第二种可能的实现方式中的任一种,在第三种可能的实现方式中,所述协处理器还用于:
若所述目标函数为IDLE任务函数,根据IDLE函数的停留时间与所述测量时间计算运行所述被测软件的中央处理器的利用率。
实施本发明实施例,具有如下有益效果:
通过获取待测软件中目标函数的代码地址区间,在预置的测量时间内统计PC指针在该代码地址区间的停留时间,根据停留时间确定目标函数的负载信息,可以准确的估计目标函数的负载情况。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种软件测试方法的第一实施例的流程示意图;
图2为本发明一种软件测试方法的第二实施例的流程示意图;
图3为本发明一种软件测试方法的第三实施例的流程示意图;
图4为本发明一种软件测试装置的第一实施例的组成示意图;
图5为本发明一种软件测试装置的第二实施例的组成示意图;
图6为图5中统计模块的组成示意图;
图7和图8为本发明的一种软件测试装置的第三实施例的组成示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参照图1,为本发明调一种软件测试方法的第一实施例的流程示意图;在本实施例中,所述方法包括以下步骤:
S101,获取待测软件中目标函数的代码地址区间。
代码地址区间为目标函数的代码段的首地址和尾地址之间的区域,目标函数以二进制代码存储在内存中时,代码段和数据段需要占用一定的内存空间,代码段中包括至少一个指令,在待测软件初始化时,程序计数器PC指针指向待测软件的第一条指令。测试装置内存中获取目标函数的代码地址区间。
可选的,测试装置将获取的目标函数的首地址和尾地址存储在独立配置的地址区间寄存器中,测试装置在后续的测试过程中可以直接从该地址区间寄存器中读取目标函数的代码地址区间。
在本发明的实施例中,测试装置为独立于运行待测软件的处理器的硬件装置,例如为包括处理器或DSP的协处理器或定制的集成电路芯片的硬件装置,测试装置对软件测量时不占用处理器的硬件或软件资源。
S102,运行所述待测软件,并统计预置的测量时间内PC程序计数器指针在所述代码地址区间内的停留时间。
具体的,预先通过定时器设置测量时间,测量时间为处理器时钟周期的整数倍,处理器时钟周期为处理器主频的倒数,设置测量时间远远大于处理器时钟周期。处理器运行待测软件时,向定时器发送一个启动指令,指示定时器开始计数,测试装置统计在预置的测量时间内,PC指针在目标函数代码地址区间内的停留时间,当预置的测量时间到达时,定时器向测试装置发送一个中断信号,指示测试停止统计停留时间。
例如,为了便于理解,举例中的地址均用十六进制表示,假设目标函数的代码地址区间用十六进制表示为0x10000000至0x10000500,处理器的主频为1GHz,则处理器时钟周期为10-9S,假设预置的测量时间为1S,测量时间远远大于处理器时钟周期,在定时器中设置测量时间为1S,处理器运行待测软件时指示定时器启动,同时测试装置检测处理器的时钟周期,检测处理器时钟周期可采用检测处理器时钟信号的电平或上升沿或下降沿,每来一个时钟周期,测试装置就读取PC指针的地址信息,假设在第一个时钟周期到来时,测试装置读取PC指针的地址信息为0x10000008,判断该地址信息在目标函数的代码地址区间内,则PC指针在目标函数的代码地址区间内的停留时间加1个时钟周期,停留时间的初始值为0;假设在第2个时钟周期到来时,测试装置读取PC指针的地址信息为0x20000016,判断该地址信息不在目标函数的代码地址区间内,在停留时间不增加,以此类推,每来一个处理器时钟周期,测试装置就读取PC指针的地址信息,判断是否在目标函数的代码地址区间内,若在,停留时间加1个处理器时钟周期,否则停留时间不变,直到定时器的设置的测量时间到达时,发送中断信号至测试装置,测试装置停止停留时间的测量,最终得到的累加的停留时间即为测量时间内PC程序计数器指针在目标函数的代码地址区间内的停留时间。假设在设置的测量时间1S内PC指针停留在目标函数的代码地址区间为100000000个处理器时钟周期,则停留时间计算为0.1S。
S103,根据所述停留时间计算所述目标函数的负载信息。
根据停留时间与测量时间的比值计算目标函数的负载信息,例如,在S102中,目标函数的负载信息为:0.1/1*100%=10%,停留时间所占测量时间的比值越大,表明该目标函数的负载越大。
可选的,测试装置可以选取待测软件中若干个目标函数进行负载信息的计算,根据每个目标函数的负载信息对待测软件的代码进行优化。
在本实施例中,通过获取待测软件中目标函数的代码地址区间,在预置的测量时间内统计PC指针在该代码地址区间的停留时间,根据停留时间确定目标函数的负载信息,可以准确的估计目标函数的负载情况。
请参照图2,为本发明的一种软件测试方法的第二实施例的流程示意图;在本实施例中,所述方法包括以下步骤:
S201,获取待测软件中IDLE函数的代码地址区间。
IDLE函数是每个协处理器都会执行的一个进程,该函数的特点是优先级最低,当协处理器执行完其它任务退出后就会执行IDLE函数。
代码地址区间为IDLE函数的代码段的首地址和尾地址之间的区域,IDLE函数以二进制代码存储在内存中时,代码段和数据段需要占用一定的内存空间,代码段中包括至少一个指令,在待测软件初始化时,程序计数器PC指针指向待测软件的第一条指令。测试装置从内存中获取IDLE函数的代码地址区间。
可选的,测试装置将获取的目标函数的首地址和尾地址存储在独立配置的地址区间寄存器中,测试装置在后续的测试过程中可以直接从该地址区间寄存器中读取目标函数的代码地址区间。
S202,运行待测软件,并统计预置的测量时间内PC程序计数器指针在代码地址区间内的停留时间。
具体的,预先通过定时器设置测量时间,测量时间为处理器时钟周期的整数倍,处理器时钟周期为处理器主频的倒数,设置测量时间远远大于处理器时钟周期。处理器运行待测软件时,向定时器发送一个启动指令,指示定时器开始计数,测试装置统计在预置的测量时间内,PC指针在IDLE函数代码地址区间内的停留时间,当预置的测量时间到达时,定时器向测试装置发送一个中断信号,指示测试停止统计停留时间。
可选的,测试时间的粒度可以根据需要进行设置,例如测试时间为指令周期的整数倍或机器周期的整数倍,本发明不作限制。
例如,为了便于理解,举例中的地址均用十六进制表示,假设IDLE函数的代码地址区间用十六进制表示为0x10000000至0x10000500,处理器的主频为1GHz,则处理器时钟周期为10-9S,假设预置的测量时间为1S,测量时间远远大于处理器时钟周期,在定时器中设置测量时间为1S,处理器运行待测软件时指示定时器启动,同时测试装置检测处理器的时钟周期,检测处理器时钟周期可采用检测处理器时钟信号的电平或上升沿或下降沿,每来一个时钟周期,测试装置就读取PC指针的地址信息,假设在第一个时钟周期到来时,测试装置读取PC指针的地址信息为0x10000008,判断该地址信息在IDLE函数的代码地址区间内,则PC指针在IDLE函数的代码地址区间内的停留时间加1个时钟周期,停留时间的初始值为0;假设在第2个时钟周期到来时,测试装置读取PC指针的地址信息为0x20000016,判断该地址信息不在IDLE函数的代码地址区间内,在停留时间不增加,以此类推,每来一个处理器时钟周期,测试装置就读取PC指针的地址信息,判断是否在IDLE函数的代码地址区间内,若在,停留时间加1个处理器时钟周期,否则停留时间不变,直到定时器的设置的测量时间到达时,发送中断信号至测试装置,测试装置停止停留时间的测量,最终得到的累加的停留时间即为测量时间内PC程序计数器指针在IDLE函数的代码地址区间内的停留时间。假设在设置的测量时间1S内PC指针停留在IDLE函数的代码地址区间为100000000个处理器时钟周期,则停留时间计算为0.1S。
S203,根据IDLE函数的停留时间与测量时间计算运行被测软件的处理器的利用率。
根据停留时间与测量时间计算运行被测软件的处理器的利用率,在S202中运行待测软件的处理器的利用率=(1-停留时间/测量时间)*100%=(1-0.1/1)*100%=90%,处理器的利用率越高表明其负载越重,处理器的利用率越大表明其负载越轻,操作系统可以利用处理器的利用率调节处理器处理的进程数,以均衡处理开销。
请参照图3,为本发明一种软件测试方法的第三实施例的流程示意图;在本实施例中,所述方法包括以下步骤:
S301,通过定时器设置测量时间。
测试装置通过定时器设置测量时间,测量时间设置为处理器时钟周期的整数倍,利于精确的计算。例如,假设处理器时钟周期为10-9S,测试时间设置为10-9S的整数倍。
可选的,测试时间的粒度可以根据需要进行设置,例如测试时间为指令周期的整数倍或机器周期的整数倍,本发明不作限制。
S302,将待测软件编译成汇编代码,根据所述汇编代码获取目标函数的代码地址区间。
将测试软件编译成汇编代码,汇编代码中每个指令会分配一个存储地址,根据该存储地址可以获取目标函数的首地址和尾地址,即代码地址区间。
例如,将一个待测软件的Test.c的目标函数TesFunc编译后产生汇编代码如下:
10000000<TestFunc>:
10000000:Instruction_1---首地址为0x10000000
……
10000500:Instruction_M---尾地址为0x10000500
其中,目标函数的代码地址区间为10000000至10000500,instruction表示目标函数中包含的指令。
S303,运行所述待测软件,在所述测量时间内检测到每个处理器时钟周期到来时,获取所述PC指针的地址信息。
检测处理器时钟周期的方法可以使检测处理器时钟信号的电平或边沿来实现,例如检测到处理器时钟信号的高电平时,确定一个处理器时钟周期到来
S304,若所述地址信息位于所述目标函数的代码地址区间内,则将停留时间增加一个处理器时钟周期。
S305,根据停留时间计算目标函数的负载信息。
请参照图4,为本发明的一种软件测试装置的第一实施例的组成示意图;在本实施例中,所述装置包括:获取模块10、统计模块20、计算模块30。
获取模块10,用于获取被测软件中目标函数的代码地址区间。
统计模块20,用于运行所述被测代码,并统计预置的测量时间内PC程序计数器指针在所述代码地址区间内的停留时间,所述测量时间为处理器时钟周期的整数倍;
计算模块30,用于根据所述停留时间计算所述目标函数的负载信息。
进一步的,参见图5和图6,为本发明一种软件测试装置的第二实施例组成结果图,除包括获取模块10、统计模块20和计算模块30,还包括处理器利用率计算模块40和配置模块50,
处理器利用率计算模块40,用于若所述目标函数为IDLE任务函数,根据IDLE函数的停留时间与所述测量时间计算运行所述被测代码的处理器的利用率。
配置模块50,用于通过处理器的定时器设置测量时间。
可选的,所述统计模块200包括:
第一单元201,用于在所述测量时间内检测到每个处理器时钟周期到来时,获取所述PC指针的地址信息;
第二单元202,用于若所述地址信息位于所述目标函数的代码地址区间内,则将所述停留时间增加一个处理器时钟周期,所述停留时间的初始值为0。
所述获取模块10具体用于:
将所述待测软件编译成汇编代码,根据所述汇编代码获取所述目标函数的代码地址区间。
请参照图7和图8,为本发明一种软件测试装置的第三实施例的组成示意图;在本实施例中,以下简称测试装置1,测试装置1包括协处理器11、协处理器11包括定时器111和存储器112,测试装置1中的协处理器11的数量可以是一个或多个,图7以一个协处理器为例。本发明的一些实施例中,测试装置1与处理器2连接,处理器2用于运行所述待测软件,测试装置1和处理器2相互独立,测试装置1不占用处理器2的硬件或软件资源。
可选的,参见图8,测试装置1可以为处理器2的一个定制的单元,测试装置1属于处理器2的一部分,测试装置1不占用处理器2的硬件或软件资源。
其工作原理为:存储器111中存储待测软件中目标函数的代码地址区间和测量时间,所述测量时间为处理器时钟周期的整数倍,定时器112读取所述存储器存储的测量时间作为定时时长,协处理器11用于执行以下操作:
统计预置的测量时间内PC程序计数器指针在所述代码地址区间内的停留时间,并将所述停留时间存储至存储器111中。
具体的,本发明的测试装置1与运行待测软件的装置独立,不占用运行待测软件的装置的硬件或软件资源。存储器111中包括第一寄存器、第二寄存器和第三寄存器,所述第一寄存器存储待测软件中目标函数的代码地址区间,即目标函数的首地址和尾地址。假设将一个待测软件的Test.c的目标函数TesFunc编译后产生汇编代码如下:
10000000<TestFunc>:
10000000:Instruction_1---首地址为0x10000000
……
10000500:Instruction_M---尾地址为0x10000500
其中,目标函数的代码地址区间为0x10000000(首地址)至0x10000500(尾地址),instruction表示目标函数中包含的指令,所述第一存储器存储有目标函数TesFunc的代码地址区间。
所述第二寄存器存储测量时间,测量时间为处理器时钟周期的整数倍,定时器112读取所述第二寄存器中存储的测量时间作为定时时长,定时器112检测到待测软件开始运行时,开始定时计数,并触发协处理器11统计所述第二寄存器中存储的测量时间内PC程序计数器指针在代码地址区间内的停留时间,定时器112的定时时长到达时,向协处理器11发送中断信号,协处理器11停止统计停留时间,并将停留时间存储至所述第三寄存器中。
可选的,协处理器11执行统计预置的测量时间内所述目标函数的代码地址区间的停留时间的步骤包括:
在所述测量时间内检测到每个处理器时钟周期到来时,获取所述PC指针的地址信息;
若所述地址信息位于所述目标函数的代码地址区间内,则将所述停留时间增加一个处理器时钟周期,所述停留时间的初始值为0。
可选的,协处理器11用于执行:
将所述待测软件编译成汇编代码,根据所述汇编代码获取所述目标函数的代码地址区间。
可选的,协处理器还用于执行:
若所述目标函数为IDLE任务函数,根据IDLE函数的停留时间与所述测量时间计算运行所述被测软件的处理器的利用率。
在本发明的实施例中,测试装置为独立于运行待测软件的处理器的硬件装置,例如为包括处理器或DSP的协处理器或定制的集成电路芯片的硬件装置,测试装置对软件测量时不占用处理器的硬件或软件资源。
通过上述实施例的描述,本发明具有以下优点:
通过获取待测软件中目标函数的代码地址区间,在预置的测量时间内统计PC指针在该代码地址区间的停留时间,根据停留时间确定目标函数的负载信息,可以准确的估计目标函数的负载情况。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本发明实施例所提供的一种软件测试方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (11)

1.一种软件测试方法,其特征在于,包括:
获取待测软件中目标函数的代码地址区间;
运行所述待测软件,并统计预置的测量时间内所述目标函数的代码地址区间的停留时间,所述测量时间为处理器时钟周期的整数倍;
根据所述停留时间和所述测量时间的比值计算所述目标函数的负载信息;
其中,所述统计预置的测量时间内所述目标函数的代码地址区间的停留时间的步骤包括:
在所述测量时间内检测到每个处理器周期到来时,获取PC指针的地址信息;若所述地址信息位于所述目标函数的代码地址区间内,则将所述停留时间增加一个处理器时钟周期,所述停留时间的初始值为0。
2.如权利要求1所述的方法,其特征在于,所述获取待测软件中目标函数的代码地址区间的步骤包括:
将所述待测软件编译成汇编代码,根据所述汇编代码获取所述目标函数的代码地址区间。
3.如权利要求1或2所述的方法,其特征在于,还包括:
若所述目标函数为IDLE任务函数,根据IDLE函数的停留时间与所述测量时间计算运行所述待测软件的处理器的利用率。
4.如权利要求1所述的方法,其特征在于,所述获取待测软件中目标函数的代码地址区间的步骤之前,还包括:
通过定时器设置测量时间。
5.一种软件测试装置,其特征在于,包括:
获取模块,用于获取待测软件中目标函数的代码地址区间;
统计模块,用于运行所述待测软件,并统计预置的测量时间内程序计数器PC指针在所述代码地址区间内的停留时间,所述测量时间为处理器时钟周期的整数倍;
计算模块,用于根据所述停留时间和所述测量时间的比值计算所述目标函数的负载信息;
其中,所述统计模块包括:
第一单元,用于在所述测量时间内检测到每个处理器时钟周期到来时,获取所述PC指针的地址信息;
第二单元,用于若所述地址信息位于所述目标函数的代码地址区间内,则将所述停留时间增加一个处理器时钟周期,所述停留时间的初始值为0。
6.如权利要求5所述的装置,其特征在于,所述获取模块用于将所述待测软件编译成汇编代码,根据所述汇编代码获取所述目标函数的代码地址区间。
7.如权利要求6所述的装置,其特征在于,还包括:
处理器利用率计算模块,用于若所述目标函数为IDLE任务函数,根据IDLE函数的停留时间与所述测量时间计算运行所述待测软件的处理器的利用率。
8.如权利要求7所述的装置,其特征在于,还包括:
配置模块,用于通过处理器的定时器设置测量时间。
9.一种软件测试装置,其特征在于,包括:
协处理器,所述协处理器包括存储器和定时器
所述存储器存储待测软件中目标函数的代码地址区间和测量时间,所述测量时间为处理器时钟周期的整数倍,所述定时器读取所述存储器存储的测量时间作为定时时长,所述协处理器统计预置的测量时间内所述目标函数的代码地址区间的停留时间,并将所述停留时间存储至所述存储器中,所述停留时间的初始值为0;
其中,所述协处理器执行所述统计预置的测量时间内所述目标函数的代码地址区间的停留时间的步骤包括:
在所述测量时间内检测到每个处理器周期到来时,获取PC指针的地址信息;若所述地址信息位于所述目标函数的代码地址区间内,则将所述停留时间增加一个处理器时钟周期。
10.如权利要求9所述的装置,其特征在于,所述协处理器用于:
将所述待测软件编译成汇编代码,根据所述汇编代码获取所述目标函数的代码地址区间。
11.如权利要求9或10所述的装置,其特征在于,所述协处理器还用于:
若所述目标函数为IDLE任务函数,根据IDLE函数的停留时间与所述测量时间计算运行所述待测软件的处理器的利用率。
CN201380003956.0A 2013-09-30 2013-09-30 一种软件测试方法及装置 Active CN104685473B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/084736 WO2015042964A1 (zh) 2013-09-30 2013-09-30 一种软件测试方法及装置

Publications (2)

Publication Number Publication Date
CN104685473A CN104685473A (zh) 2015-06-03
CN104685473B true CN104685473B (zh) 2018-11-06

Family

ID=52741886

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380003956.0A Active CN104685473B (zh) 2013-09-30 2013-09-30 一种软件测试方法及装置

Country Status (2)

Country Link
CN (1) CN104685473B (zh)
WO (1) WO2015042964A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107506293B (zh) * 2016-06-14 2022-04-22 中兴通讯股份有限公司 一种软件性能数据采集方法和装置
CN109144877B (zh) * 2018-08-31 2022-05-31 北京奇艺世纪科技有限公司 一种应用检测方法和装置
CN111414295B (zh) * 2020-03-09 2023-06-30 浙江大华技术股份有限公司 一种cpu占用率的统计方法、装置、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101329638A (zh) * 2007-06-18 2008-12-24 国际商业机器公司 程序代码的并行性的分析方法和系统
CN100456248C (zh) * 2005-12-02 2009-01-28 凌阳科技股份有限公司 获得程序代码和函数执行覆盖率及执行效率的装置及方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004157079A (ja) * 2002-11-08 2004-06-03 Renesas Technology Corp チップ内蔵半導体検査装置
CN103077080B (zh) * 2013-01-07 2015-08-12 清华大学 基于高性能平台的并行程序性能数据采集方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100456248C (zh) * 2005-12-02 2009-01-28 凌阳科技股份有限公司 获得程序代码和函数执行覆盖率及执行效率的装置及方法
CN101329638A (zh) * 2007-06-18 2008-12-24 国际商业机器公司 程序代码的并行性的分析方法和系统

Also Published As

Publication number Publication date
CN104685473A (zh) 2015-06-03
WO2015042964A1 (zh) 2015-04-02

Similar Documents

Publication Publication Date Title
KR101496077B1 (ko) 낮은 오버헤드를 갖는 전력 프로파일 정보의 획득
US9304886B2 (en) Associating energy consumption with a virtual machine
US10013511B2 (en) System and method for energy usage accounting in software applications
US8898049B2 (en) System level power profiling of embedded applications executing on virtual multicore system-on-chip platforms
KR100992209B1 (ko) 데이터 처리 시스템 상에서 소프트웨어 제품의 사용량을 측정하는 방법
US9081629B2 (en) Excluding counts on software threads in a state
US20140149078A1 (en) Performance measurement unit, processor core including the same and process profiling method
JP6453415B2 (ja) システムオンチップの完全性検証の方法及びシステム
Mukhanov et al. ALEA: Fine-grain energy profiling with basic block sampling
US9720744B2 (en) Performance monitoring of shared processing resources
US10031827B2 (en) Assessment of processor performance metrics by monitoring probes constructed using instruction sequences
CN104685473B (zh) 一种软件测试方法及装置
CN100501694C (zh) 处理器利用率的测量装置及方法
US9471237B1 (en) Memory consumption tracking
CN107851041A (zh) 多处理器/多核心计算系统的动态调优
CN107003828B (zh) 图形指令的仪器化
CN103838662A (zh) 动态库性能分析方法和动态库性能分析系统
US9323642B2 (en) Calculation apparatus, calculation method, and recording medium for calculation program
CN102591758B (zh) 微计算机
US20230109752A1 (en) Deterministic replay of a multi-threaded trace on a multi-threaded processor
Lang et al. High-resolution power profiling of GPU functions using low-resolution measurement
US20220100512A1 (en) Deterministic replay of a multi-threaded trace on a multi-threaded processor
JP2009025964A (ja) 消費電力の制御方法
Schmitt et al. Emulating the Power Consumption Behavior of Server Workloads using CPU Performance Counters
Wallace et al. Comparison of vendor supplied environmental data collection mechanisms

Legal Events

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