一种软件性能测试方法和装置的制作方法

文档序号:6427248阅读:186来源:国知局
专利名称:一种软件性能测试方法和装置的制作方法
技术领域
本发明涉及计算机软件性能测试领域,特别是涉及一种软件性能测试方法和装置。
背景技术
目前对一款软件进行性能测试通常的做法是编写性能测试代码(脚本),性能测试代码实质上就是自动执行的客户端程序,可以简称为性能测试客户端。然后建立起性能测试进程,在进程内并发运行多个性能测试客户端访问应用服务,这样就达到了模拟多个客户端的工作压力进行性能测试的目的。互联网应用的兴起,对软件性能测试提出了越来 越大的挑战。海量用户同时在线使用是互联网应用的显著特征,因此,基于互联网应用的软件性能测试要求测试场景中能够保证有大量的性能测试客户端同时运行,这样才能够达到充分真实模拟的目的。现有的性能测试方法,绝大多数的情况下都是在使用某一种性能测试工具,其测试方法的过程如下测试代码的生成测试代码由2种方式得来,第I种是录制测试客户端的行为,然后做参数化处理;第2种是直接开发出此类代码供使用;所述的测试代码只模拟一个客户端的行为;所有代码都被设计成在一个线程内顺序执行。测试执行软件测试工具提供测试进程,进程内为每一个测试客户端提供一个独占的线程。假如控制多台测试机(m台)、每台测试机启动多个测试进程(η个),每个测试进程包括多个测试线程(t个),这样,同时参与测试的客户端个数是m*n*t个。从软件设计性能的角度来考虑,测试机线程个数、cpu使用率、内存等系统资源随测试压力的增加很快就会成为性能测试的瓶颈。所以现有的测试方法只能测试一些低压力的场景,如果测试互联网业务,测试进程的性能问题会导致测试无法进行或者时间、资金、人员等成本十分高昂。并且在设计过程中没有考虑到测试客户端互相通信的需求,比如性能测试客户端A在某个测试时刻要求性能测试客户端B完成某个功能或变更某种属性,这是无法办到的,因为某个性能测试客户端在设计上是封闭的,导致测试场景设计上不够灵活。综上所述,现有技术中的,软件性能测试方法不能实现测试客户端直接的通信,而且在海量测试客户端同时进行测试时受到系统资源的限制。

发明内容
本发明提供了一种软件性能测试方法,该方法能够提高测试软件性能的能力。本发明提供了一种软件性能测试系统,该系统能够提高测试软件性能的能力。为达到上述目的,本发明的技术方案是这样实现的本发明公开了一种软件性能测试方法,该方法包括设置定时调度器的执行周期和调度算法;设置线程池中线程的最小个数和最大个数,建立最小个数的线程;对性能测试客户端进行初始化操作;在当前执行周期中,定时调度器根据设置的调度算法选取性能测试客户端和相应的业务操作,在线程池中选择空闲线程;性能测试客户端根据定时调度器所选取的空闲线程进行相应的业务操作;所述业务操作执行完毕后,将线程放回线程池中,并等待下一个执行周期。本发明还公开了一种软件性能测试装置,该装置包括定时调度器模块、线程池模块、多个性能测试客户端模块,其中,定时调度器模块,用于周期性的选取一个或多个性能测试客户端模块、为性能测试客户端模块选取相应的业务操作,为选取的业务操作在线程池模块中选取空闲的线程; 性能测试客户端模块,包含待测软件的客户端属性以及各种业务操作的集合;用于根据定时调度器模块选取的业务操作和选取的空闲的线程进行业务操作;线程池模块,存放用于实现各种业务操作的线程,为性能测试客户端模块所要执行的业务操作提供执行的线程。由上述可见,本发明提供的技术方案,将性能测试客户端编程为包含性能测试客户端属性和业务操作的集合,引入线程池用于执行各个性能测试客户端的业务操作,使用定时调度器进行统一的调度管理,能够更加灵活方便的控制软件性能测试的测试过程,控制场景,并且通过软件测试进程内的过程调用实现性能测试客户端之间的通信。


图I是本发明中一种软件性能测试方法的流程图;图2是本发明中一种软件性能测试方法的初始化流程图;图3是本发明中一种软件性能测试方法的详细流程图;图4是本发明中一种软件性能测试装置的结构示意图。
具体实施例方式图I是本发明中一种软件性能测试方法的流程图,如图I所示,步骤101,设置定时调度器的执行周期和调度算法;设置线程池中线程的最小个数和最大个数,建立最小个数的线程;对性能测试客户端进行初始化操作;步骤102,在当前执行周期中,定时调度器根据设置的调度算法选取性能测试客户端和相应的业务操作,在线程池中选择空闲线程;步骤103,性能测试客户端根据定时调度器所选取的空闲线程进行相应的业务操作;步骤104,所述业务操作执行完毕后,将线程放回线程池中,并等待下一个执行周期。为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。在使用本发明提供的方法进行软件性能测试之前,首先要进行初始化操作,即对定时调度器、线程池以及所有性能测试客户端都进行初始化操作;其中,图2是本发明中一种软件性能测试方法的初始化流程图,如图2所示
步骤201,对定时调度器进行初始化操作,设置定时调度器的执行周期和调度算法;在本步骤中,设置定时调度器每隔一定时间执行一次调度算法;其中,在本发明的实施例中,根据需要测试的软件的设计测试方案,根据测试方案编写相应的调度算法。在所述调度算法中保存有性能测试客户端存放的数据结构的地址;在所述调度算法中保存有调用性能测试客户端的方式以及每次调用性能测试客户端的个数;在所述调度算法中保存为性能测试客户端选取相应业务操作的方式。步骤202,对线程池进行初始化操作,设置线程池中线程的最小个数和最大个数;新建最小个数的线程;如果当前的线程不够支持业务操作,则线程池自动创建新的线程,直到当前的线程数为预设的线程的最大个数。步骤203,对性能测试客户中的属性进行初始化操作;将完成初始化操作的性能测试客户端保存在数据结构中。在本步骤中,从待测软件的所有客户端属性中选取用于本次性能测试所必须的属性,将所选取的客户端属性作为性能测试客户端的属性进行初始化操作后,将所有性能测试客户端都保存在同一个数据结构中;其中,所述性能测试客户端中包括用于测试待测软件的所有业务操作的集合。 图3是本发明中一种软件性能测试方法的详细流程图,如图3所述,步骤301,当前执行周期开始,定时调度器执行设置好的调度算法。步骤302,定时调度器根据所设置的调度算法选取性能测试客户端。其中,所述定时调度器根据设置的调度算法选取一个或者多个性能测试客户端,对所选取的每个性能测试客户端,在该性能测试客户端所包含的业务操作集合中选取相应的一个或多个业务操作。在步骤302中,使用本发明中的方法进行软件性能测试的过程中,根据调度算法中保存的数据结构地址,可以调用相应的性能测试客户端;其中,调度算法中设置了选取性能测试客户端的方式以及每次调用性能测试客户端的个数;是顺序选取一个或者多个性能测试客户端或者是随机选取一个或者是多个性能测试客户端;具体方式根据实际的软件性能测试方案对调度算法中的测试方式进行设置,选取最优的性能测试方式。步骤303,定时调度器根据所设置的调度算法,为所选取的性能测试客户端选择相应的业务操作;调度算法中设置了为所选中的性能测试客户端选取业务操作的方式,是顺序执行多个业务操作,还是循环执行一个业务操作;具体方式根据实际的软件性能测试方案对调度算法中的选择相应的业务操作的方式进行设置,。步骤304,定时调度器根据所设置的调度算法,从线程池中选取空闲的线程。其中,根据性能测试客户端的个数选取相同个数的空闲线程;针对一个性能测试客户端,定时调度器在线程池中选取一个空闲线程,该性能测试客户端使用所述选取的空闲线程进行相应的业务操作。在步骤304中,所述线程池,提供线程用于完成性能测试客户端的业务操作,每开始一个业务操作前,从线程池中申请一个空闲的线程,业务操作结束后将申请到的线程放回到线程池中;所述线程池可以同时调用多个线程分别用于多个性能测试客户端的业务操作。如果所述性能测试客户端的数目大于线程池中空闲线程的个数,则线程池建立新的空闲线程;如果线程池中的线程数达到线程池最大线程个数时,所述性能测试客户端的数目仍大于线程池中空闲线程个数,则将多余的性能测试客户端挂起。
步骤305,性能测试客户端使用定时调度器所选取的空闲线程执行所选取的相应的业务操作;步骤306,当前业务操作执行完成后,将执行当前业务操作的线程释放;在步骤306中,所述性能测试客户端根据定时调度器从线程池中选取的空闲线程执行定时调度器为所述性能测试客户端所选取的业务操作,其中选取一个空闲的线程用于一个性能测试客户端执行一个业务操作,当该业务操作结束后,将所述线程放回到线程池中。步骤307,性能测试客户端执行完所有业务操作后,等待下一个执行周期的开始。在本发明的一种实施例中,所述性能测试客户端包括待测软件的客户端属性和所有的业务操作,所述业务操作具体为待测软件的客户端访问待测软件的服务器端的方式。所述性能测试客户端包括待测软件中进行性能测试所必须的客户端属性。其中将所述性能测试客户端中的所有属性进行初始化操作后,保存在同一个数据结构中,所述数据结构可 以是数组、哈希表等;具体的初始化方式根据具体的测试方案进行设定。本发明提供的技术方案中,各性能测试客户端之间可以相同通信;所述所有性能测试客户端都存放在同一个数据结构中,在进行软件性能测试的进程中,通过进程内的过程调用实现性能测试客户端之间的相互通信。本发明还提供了一种软件性能测试装置,图4是本发明中一种软件性能测试装置的结构示意图,如图4所示,该装置包括定时调度器模块401、线程池模块402、多个性能测试客户端模块403,其中,定时调度器模块401,用于周期性的选取一个或多个性能测试客户端模块403、为性能测试客户端模块403选取相应的业务操作,为选取的业务操作在线程池模块402中选取空闲的线程;性能测试客户端模块403,包含待测软件的客户端属性以及各种业务操作的集合;用于根据定时调度器模块401选取的业务操作和选取的空闲的线程进行业务操作;线程池模块402,存放用于实现各种业务操作的线程,为性能测试客户端模块403所要执行的业务操作提供执行的线程。在上述的软件性能测试装置中,在测试过程开始之前,对定时调度器模块401进行初始化操作设置定时调度器模块401的执行间隔和调度算法;所述定时调度器模块401每隔一定时间执行一次调度算法,根据所设置的调度算法选取一个或多个性能测试客户端模块403 ;选取所述性能测试客户端所要进行的业务操作;从线程池中选取空闲的线程。所述调度算法根据具体的性能测试方案进行编写。根据具体的测试方案在所述定时调度器模块401中的调度算法中设置了性能测试客户端403所在的数据结构地址;设置了选取性能测试客户端403的方式,选取的具体方式根据实际需求进行设定,可以的顺序选取,可以是随机选取;在所述调度算法中设置了每次调用的性能测试客户端403的个数;在所述调度算法中设置了如何为所选取的性能测试客户端403选择相应业务操作。在测试过程开始之前,对线程池模块402进行初始化操作设置线程池模块402中的线程的最大个数和最小个数,建立最小个数的线程。所述线程池模块402在性能测试客户端模块403进行业务操作的过程中,提供一个空闲的线程用于完成所述业务操作;在业务操作完成后将申请的线程放回到线程池模块402 中。在测试过程开始之前,对所有性能测试客户端模块403中所包含的属性进行初始化操作,将所要完成初始化操作的性能测试客户模块端保存在同一个数据结构中;所述性能测试客户端模块403包含待测软件的客户端属性和待测软件的所有业务操作。在上述的软件性能测试装置中,所述性能测试客户端模块403存放在同一个数据结构中,所述性能测试客户端模块403之间通过进程内的过程调用实现相互通信。综上所述,本发明提供的一种软件性能测试方法和装置,本发明提供的方法根据调度算法周期性的选取一个或多个性能测试客户端,为性能测试客户端选取相应的业务操作,为所选取的业务操作在线程池中选取空闲的线程用于执行该业务操作,执行完成后释放当前的线程。通过调用极大数量的性能测试客户端周期性的执行上述流程,达到模拟海 量用户同时在线,对软件进行性能测试。本发明中,性能测试客户端转变了编程方式和存储方式、通过定时调度器的调度操作,能够更灵活方便地控制测试过程、控制场景、特别是当测试客户端需要协调调度的时候;并且性能测试客户端之间存放在数据结构中,当性能测试客户端之间的相互通信,通过进程内的过程调用就可以完成。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.一种软件性能测试方法,其特征在于,该方法包括 设置定时调度器的执行周期和调度算法;设置线程池中线程的最小个数和最大个数,建立最小个数的线程;对性能测试客户端进行初始化操作; 在当前执行周期中,定时调度器根据设置的调度算法选取性能测试客户端和相应的业务操作,在线程池中选择空闲线程; 性能测试客户端根据定时调度器所选取的空闲线程进行相应的业务操作; 所述业务操作执行完毕后,将线程放回线程池中,并等待下一个执行周期。
2.根据权利要求I所述的方法,其特征在于,所述对性能测试客户端进行初始化操作包括 从待测软件的所有客户端属性中选取用于本次性能测试所必须的属性,将所选取的客户端属性作为性能测试客户端的属性进行初始化操作后,将所有性能测试客户端都保存在同一个数据结构中;其中,所述性能测试客户端中包括用于测试待测软件的所有业务操作的集合。
3.根据权利要求I所述的方法,其特征在于,所述设置定时调度器的执行周期和调度算法包括 设置在一个执行周期内执行一次调度算法,在所述调度算法中保存有性能测试客户端存放的数据结构的地址;在所述调度算法中保存有调用性能测试客户端的方式以及每次调用性能测试客户端的个数;在所述调度算法中保存为性能测试客户端选取相应业务操作的方式。
4.根据权利要求3所述的方法,其特征在于,所述性能测试客户端根据定时调度器所选取的空闲线程进行相应的业务操作包括 根据性能测试客户端的个数选取相同个数的空闲线程;针对ー个性能测试客户端,定时调度器在线程池中选取ー个空闲线程,该性能测试客户端使用所述选取的空闲线程进行相应的业务操作。
5.根据权利要求4所述的方法,其特征在干,所述性能测试客户端根据定时调度器所选取的空闲线程进行相应的业务操作进ー步包括 所述性能测试客户端的数目大于线程池中空闲线程的个数,则线程池建立新的空闲线程;如果线程池中的线程数达到线程池最大线程个数时,所述性能测试客户端的数目仍大于线程池中空闲线程个数,则将多余的性能测试客户端挂起。
6.根据权利要求5所述的方法,其特征在干,所述根据设置的调度算法选取性能测试客户端和相应的业务操作包括 定时调度器根据设置的调度算法选取ー个或者多个性能测试客户端,对所选取的每个性能测试客户端,在该性能测试客户端所包含的业务操作集合中选取相应的ー个或多个业务操作。
7.根据权利要求I所述的方法,其特征在于,该方法进ー步包括 各性能测试客户端之间可以相同通信;其中,所述性能测试客户端存放在同一个数据结构中,在测试待测软件的进程中,通过所述进程内的过程调用实现性能测试客户端之间的相互通信。
8.一种软件性能测试装置,其特征在于,该装置包括定时调度器模块、线程池模块、多个性能测试客户端模块,其中, 定时调度器模块,用于周期性的选取ー个或多个性能测试客户端模块、为性能测试客户端模块选取相应的业务操作,为选取的业务操作在线程池模块中选取空闲的线程; 性能测试客户端模块,包含待测软件的客户端属性以及各种业务操作的集合;用于根据定时调度器模块选取的业务操作和选取的空闲的线程进行业务操作; 线程池模块,存放用于实现各种业务操作的线程,为性能测试客户端模块所要执行的业务操作提供执行的线程。
9.根据权利要求8所述的装置,其特征在干, 在测试过程开始之前,对定时调度器模块进行初始化操作设置定时调度器模块的执行间隔和调度算法;所述定时调度器模块每隔一定时间执行一次调度算法,根据所设置的调度算法选取ー个或多个性能测试客户端模块;选取所述性能测试客户端所要进行的业务操作;从线程池中选取空闲的线程; 在测试过程开始之前,对线程池模块进行初始化操作设置线程池模块中的线程的最大个数和最小个数,建立最小个数的线程;所述线程池模块在性能测试客户端模块进行业务操作的过程中,提供空闲的线程用于完成所述相应的业务操作;在所述业务操作完成后将申请的线程放回到线程池模块中; 在测试过程开始之前,对所有性能测试客户端模块中所包含的属性进行初始化操作,将所要完成初始化操作的性能测试客户模块端保存在同一个数据结构中。
10.根据权利要求9所述的装置,其特征在干, 所述性能测试客户端模块存放在同一个数据结构中,所述性能测试客户端模块之间通过进程间的过程调用实现相互通信。
全文摘要
本发明公开了一种软件性能测试方法和装置,该方法包括设置定时调度器的执行周期和调度算法;设置线程池中线程的最小个数和最大个数,建立最小个数的线程;对性能测试客户端进行初始化操作;在当前执行周期中,定时调度器根据设置的调度算法选取性能测试客户端和相应的业务操作,在线程池中选择空闲线程;性能测试客户端根据定时调度器所选取的空闲线程进行相应的业务操作;所述业务操作执行完毕后,将线程放回线程池中,并等待下一个执行周期。本发明的技术方案能够以较小的系统资源完成高负荷的软件性能测试过程,提高软件性能测试的能力。
文档编号G06F11/36GK102855173SQ201110175060
公开日2013年1月2日 申请日期2011年6月27日 优先权日2011年6月27日
发明者林谡 申请人:北京新媒传信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1