一种性能测试方法和系统与流程

文档序号:12612208阅读:164来源:国知局
一种性能测试方法和系统与流程

本发明涉及软件测试领域,特别涉及一种性能测试方法和系统。



背景技术:

目前绝大多数对软件产品或系统进行的测试都是对功能的测试。功能测试一般基于黑盒测试技术,通过黑盒测试来检测软件的每个功能是否都能正常使用。在黑盒测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试。通常只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。

由此可知,黑盒测试通常着眼于程序外部结构,不考虑内部逻辑结构,其主要针对软件界面和软件功能进行测试,而不涉及对软件产品性能指标(例如CPU占有率、内存占有率等)的分析和测试,因此难以快速、有效地定位待测试系统的性能瓶颈。



技术实现要素:

鉴于上述问题,本发明提供了一种性能测试方法和系统,以解决常规的软件测试方法无法快速、有效地定位待测试系统的性能瓶颈的问题。

为达到上述目的,本发明的技术方案是这样实现的:

一方面,本发明提供了一种性能测试方法,建立包括系统逻辑分析模型、性能指标模型、用户行为模型的软件测试模型,利用软件测试模型并按照下述方法进行性能测试:

利用系统逻辑分析模型确定待测试系统的相关系统构件;

利用性能指标模型确定所述相关系统构件需要监测的性能指标;

通过用户行为模型模拟用户实际使用所述待测试系统的操作行为,驱动待测系统执行性能测试,并在执行性能测试过程中,使用监测工具实时监测 所述相关系统构件需要监测的性能指标的实时值;

将监测到的相关系统构件需要监测的性能指标的实时值与性能指标阈值进行分析对比,根据分析对比结果,判断所述待测试系统是否存在性能瓶颈,若存在,则定位性能瓶颈。

优选地,所述利用系统逻辑分析模型确定待测试系统的相关系统构件包括:

利用所述系统逻辑分析模型分析所述待测试系统的架构,获得所述待测试系统包括的系统构件以及每个系统构件的物理配置参数;

根据用户需求和/或所述待测试系统已被发现的性能瓶颈,从获得的系统构件中确定重点影响构件;

在确定重点影响构件后,所述方法还包括:确定重点影响构件间的逻辑关系和分析顺序;

则所述驱动所述待测系统执行性能测试具体为:驱动待测系统的重点影响构件按照逻辑关系和分析顺序执行性能测试。

进一步优选地,当确定的重点影响构件包括数据库构件时,所述使用监测工具实时监测相关系统构件需要监测的性能指标的实时值具体为:

使用监测工具实时监测数据库构件的内存占比的实时值;

则所述将监测到的相关系统构件需要监测的性能指标的实时值与性能指标阈值进行分析对比,根据分析对比结果,判断待测试系统是否存在性能瓶颈具体为:

将监测到的数据库构件的内存占比的实时值与内存占比阈值进行比较,若内存占比的实时值比大于内存占比阈值,则判断待测试系统存在数据库死锁的性能瓶颈,同时定位该性能瓶颈存在于数据库的物理配置中,并修改数据库的物理配置参数。

进一步优选地,所述方法还包括:

获取数据库的当前活动链接数,并与数据库支持的最大链接数进行比较,若最大链接数与当前活动链接数的差值在设定阈值范围,

则修改数据库的物理配置参数具体为:修改数据库支持的最大链接数。

优选地,在修改数据库的物理配置参数后,判断待测试系统仍然存在数 据库死锁的性能瓶颈时,所述方法还包括:

查询锁表语句,分析数据库的日志,定位数据库死锁的性能瓶颈存在于数据库的方法程序中;

使用抽样器查询数据库的方法程序的执行效率,并根据执行效率,修改数据库的方法程序。

另一方面,本发明提供了一种性能测试系统,所述性能测试系统与监测工具配合实现待测试系统的性能测试;所述性能测试系统包括:系统逻辑分析单元、性能指标建立单元、用户行为模拟单元、性能瓶颈定位单元;

所述系统逻辑分析单元,用于利用系统逻辑分析模型确定待测试系统的相关系统构件;

所述性能指标建立单元,用于利用性能指标模型确定所述相关系统构件需要监测的性能指标;

所述用户行为模拟单元,用于通过用户行为模型模拟用户实际使用所述待测试系统的操作行为,驱动待测系统执行性能测试;

所述性能瓶颈定位单元,用于将监测工具监测到的所述相关系统构件需要监测的性能指标的实时值与性能指标阈值进行分析对比,根据分析对比结果,判断所述待测试系统是否存在性能瓶颈,若存在,则定位性能瓶颈。

优选地,所述系统逻辑分析单元包括:

系统构件分析模块,用于分析所述待测试系统的架构,获得所述待测试系统包括的系统构件以及每个系统构件的物理配置参数;

重点影响构件确定模块,用于根据用户需求和/或所述待测试系统已被发现的性能瓶颈,从获得的系统构件中确定重点影响构件;

所述系统逻辑分析单元还包括:

逻辑顺序确定模块,用于确定重点影响构件间的逻辑关系和分析顺序;

则用户行为模拟单元,具体用于驱动待测系统的重点影响构件按照逻辑关系和分析顺序执行性能测试。

进一步优选地,当重点影响构件确定模块确定的重点影响构件包括数据库构件时,监测工具,用于实时监测数据库构件的内存占比的实时值;

性能瓶颈定位单元,具体用于将监测工具实时监测到的数据库构件的内 存占比的实时值与内存占比阈值进行比较,若内存占比的实时值比大于内存占比阈值,则判断待测试系统存在数据库死锁的性能瓶颈,同时定位该性能瓶颈存在于数据库的物理配置中,并修改数据库的物理配置参数。

进一步优选地,所述性能瓶颈定位单元,还用于获取数据库的当前活动链接数,并与数据库支持的最大链接数进行比较,若最大链接数与当前活动链接数的差值在设定阈值范围,修改数据库支持的最大链接数。

优选地,在修改所述数据库的物理配置参数后,判断所述待测试系统仍然存在数据库死锁的性能瓶颈时,所述性能瓶颈定位单元,进一步用于查询锁表语句,分析所述数据库的日志,定位数据库死锁的性能瓶颈存在于数据库的方法程序中;使用抽样器查询所述待测试系统方法级别的执行效率,并根据所述待测试系统方法程序的执行效率,并根据执行效率,修改数据库的方法程序。

本发明实施例的有益效果是:本发明预先建立包括系统逻辑分析模型、性能指标模型和用户行为模型的软件测试模型,利用系统逻辑分析模型确定待测试系统的相关构件,性能指标模型确定相关构件需要监测的性能指标,以及利用用户行为模型模拟用户的真实行为来驱动测试过程,在测试过程中利用监测工具监测性能指标的实时值,并与正常性能指标对比,从而快速、有效地定位出待测试系统的性能瓶颈位置。由于本发明采用软件测试模型和监测工具相结合的方案定位待测试系统的性能瓶颈,无需依赖软件工程师专业知识和经验,因此在有效地减少软件工程师的工作量,提高性能测试效率的同时,还能够提高性能瓶颈分析和定位的准确度。

附图说明

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

图2为本发明实施例二提供的性能测试系统的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

本发明的整体设计思想是:本发明引入系统逻辑分析模型、性能指标模 型和用户行为模型等特征,综合利用多种工具和命令,通过系统逻辑分析模型确定待测试系统的相关构件,性能指标模型确定相关构件需要监测的性能指标,以及通过用户行为模型模拟用户的真实行为,以模拟用户的行为来驱动测试过程,测试过程中使用监测工具监测待测试系统相关构件的性能指标的实时值,并与正常性能指标对比定位出性能瓶颈。

实施例一:

本实施例预先建立包括用于系统逻辑分析模型、性能指标模型、用户行为模型的软件测试模型,利用软件测试模型对待测试系统进行性能测试;其中系统逻辑分析模型用于分析影响性能的相关系统构件,性能指标模型用于确定相关系统构件需要监测的性能指标,用户行为模型用于模拟用户对系统的真实操作行为。

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

S110,利用系统逻辑分析模型确定待测试系统的相关系统构件。

本步骤中利用系统逻辑分析模型确定待测试系统的相关系统构件包括:

利用系统逻辑分析模型分析待测试系统的架构,获得待测试系统包括的系统构件以及每个系统构件的物理配置参数;系统的架构一般包括应用服务器、数据库服务器、数据库、中间件、应用系统、网络等系统构件;

根据用户需求和/或待测试系统已被发现的性能瓶颈,从获得的系统构件中确定重点影响构件;

在确定重点影响构件后,所述方法还包括:确定重点影响构件间的逻辑关系和分析顺序,该分析顺序指在执行任务时相关系统构件启动的先后顺序或者数据流的流向。

S120,利用性能指标模型确定所述相关系统构件需要监测的性能指标,所述性能指标包括但不局限于CPU占有率和内存占有率。

S130,通过用户行为模型模拟用户实际使用待测试系统的操作行为,如模拟用户登录、查询等操作行为,以模拟用户行为驱动待测系统执行性能测试,并在执行性能测试过程中,使用监测工具实时监测相关系统构件需要监测的性能指标的实时值。

本步骤中的驱动待测系统执行性能测试具体为:驱动待测系统的重点影响构件按照逻辑关系和分析顺序执行性能测试。

S140,将监测到的相关系统构件需要监测的性能指标的实时值与性能指标阈值进行分析对比,根据分析对比结果,判断待测试系统是否存在性能瓶颈,若存在,则定位性能瓶颈。

本实施例利用预先建立的软件测试模型分析待测试系统的架构、确定需要监测的性能指标、以及提供用户的行为模型,综合利用现有的监测工具快速、有效地定位性能瓶颈。相比于常规的软件测试方法,本实施例能够有效地减少软件工程师的工作量,提高性能测试效率同时,还能够提高性能瓶颈分析和定位的准确度。

本实施例的方法尤其适用于分析数据库死锁的性能瓶颈,对于快速分析和定位数据库死锁的性能瓶颈效果明显。

在本实施例的一个具体实现中,步骤S110中利用系统逻辑分析模型确定待测试系统的相关系统构件,当确定的重点影响构件包括数据库构件时,则步骤S130中,使用监测工具实时监测所述相关系统构件需要监测的性能指标的实时值具体为:

使用监测工具监测数据库构件的内存占比的实时值。例如使用httpwatch、jconsole、jvisual VM等监测工具实时地监测待测试系统的数据库构件的性能指标。

在实际应用中,假设待测试系统额为java系统,在使用httpwatch监测工具实时地监测待测试系统的内存情况时,可使用jstat-gcutil pid命令查询待测试系统的内存占比的实时值,下述语句为使用jstat-gcutil pid命令查询待测试系统内存占比的一个实例:

向httpwatch监测工具中输入进程号为25444的查询命令,[root@localhost bin]#jstat-gcutil 25444,则httpwatch监测工具针对该查询命令的响应结果为:S0(11.63%),S1(0.00%),E(56.46%),O(66.92%),P(98.49%),YGC(162%),YGCT(0.248%),FGC(6%),FGCT(0.331%),GCT(0.579%)。

其中,

S0为:Heap上的Survivor space 0区已使用空间的百分比;

S1为:Heap上的Survivor space 1区已使用空间的百分比;

E为:Heap上的Eden space区已使用空间的百分比;

O为:Heap上的Old space区已使用空间的百分比;

P为:Perm space区已使用空间的百分比;

YGC为:从应用程序启动到采样时发生Young GC的次数;

YGCT为:从应用程序启动到采样时Young GC所用的时间(单位秒);

FGC为:从应用程序启动到采样时FullGC的次数;

FGCT为:从应用程序启动到采样时Full GC所用的时间(单位秒);

GCT为:从应用程序启动到采样时用于垃圾回收的总时间(单位秒)。

进一步地步骤S140中,将监测到的相关系统构件需要监测的性能指标的实时值与性能指标阈值进行分析对比,根据分析对比结果,判断待测试系统是否存在性能瓶颈具体为:

将监测到的数据库构件的内存占比的实时值与内存占比阈值进行比较,若内存占比的实时值比大于内存占比阈值,则判断待测试系统存在数据库死锁的性能瓶颈,同时定位该性能瓶颈存在于数据库的物理配置中,并修改数据库的物理配置参数。

具体地,获取数据库的当前活动链接数,并与数据库支持的最大链接数进行比较,若最大链接数与当前活动链接数的差值在设定阈值范围,

则上述修改数据库的物理配置参数具体为:修改数据库支持的最大链接数。。

在实际应用中,可以使用语句select count(*)from v$process;获取数据库的当前活动链接数,使用语句select value from v$parameter where name='processes';将当前活动链接数与数据库支持的最大链接数进行比较,使用语句alter system set processes=300scope=spfile;修改数据库支持的最大链接数,本语句将数据库支持的最大链接数示例性修改为300。

需要说明的是,本具体实现方案假设上述数据库为Oracle数据库,当上述数据库为其他形式的数据库时,相应的语句或命令会有变化。

在修改数据库的物理配置参数后,再执行步骤S130和步骤S140时,若 判断待测试系统仍然存在数据库死锁的性能瓶颈,则上述方法还包括:

查询锁表语句,分析数据库的日志,定位数据库死锁的性能瓶颈存在于数据库的方法程序中;

仍然以Oracle数据库为例,可以使用下述命令查询锁表语句:

SELECT l.session_id sid,s.serial#,l.locked_mode,l.oracle_username,l.os_user_name,s.machine,s.terminal,o.object_name,s.logon_time FROM v$locked_object l,all_objects o,v$session s WHERE l.object_id=o.object_id AND l.session_id=s.sid ORDER BY sid,s.serial#;

使用抽样器查询待测试系统方法程序的执行效率,并根据执行效率,修改数据库的方法程序。

本具体实现方案通过利用监测工具和多种命令快速、准确地定位性能瓶颈,并能够根据定位的性能修改待测试系统相应的系统构件的配置参数,从而对所述待测试系统的整体性能进行了优化。

从实施例一的具体实现可以看出,本发明的方法对待测试系统的性能测试和性能优化有较强的指导意义。

实施例二:

基于与实施例一相同的技术构思,本实施例提供了一种性能测试系统,该性能测试系统与监测工具配合实现待测试系统的性能测试。

图2为本实施例提供的性能测试系统的结构示意图,如图2所示,图2中的性能测试系统包括:系统逻辑分析单元21、性能指标建立单元22、用户行为模拟单元23、性能瓶颈定位单元24。

系统逻辑分析单元21,用于利用系统逻辑分析模型确定待测试系统的相关系统构件。

优选地,系统逻辑分析单元21包括:

系统构件分析模块,用于分析待测试系统的架构,获得待测试系统包括的系统构件以及每个系统构件的物理配置参数;

重点影响构件确定模块,用于根据用户需求和/或待测试系统已被发现的性能瓶颈,从获得的系统构件中确定重点影响构件;

优选地,系统逻辑分析单元21还包括:逻辑顺序确定模块,用于确定重 点影响构件间的逻辑关系和分析顺序。

性能指标建立单元22,用于利用性能指标模型确定相关系统构件需要监测的性能指标。

用户行为模拟单元23,用于通过用户行为模型模拟用户实际使用待测试系统的操作行为,驱动待测系统执行性能测试。

优选地,用户行为模拟单元23,用于驱动待测系统的重点影响构件按照逻辑顺序确定模块确定的逻辑关系和分析顺序执行性能测试。

性能瓶颈定位单元24,用于将监测工具监测到的相关系统构件需要监测的性能指标的实时值与性能指标阈值进行分析对比,根据分析对比结果,判断所述待测试系统是否存在性能瓶颈,若存在,则定位性能瓶颈。

在本实施例的一个具体实现方案中,当重点影响构件确定模块确定的重点影响构件包括数据库构件时,监测工具用于实时监测数据库构件的内存占比的实时值;

性能瓶颈定位单元24,具体用于将监测工具实时监测到的数据库构件的内存占比的实时值与内存占比阈值进行比较,若内存占比的实时值比大于内存占比阈值,则判断待测试系统存在数据库死锁的性能瓶颈,同时定位该性能瓶颈存在于数据库的物理配置中,并修改数据库的物理配置参数。

进一步地,性能瓶颈定位单元24,还用于获取数据库的当前活动链接数,并与数据库支持的最大链接数进行比较,若最大链接数与当前活动链接数的差值在设定阈值范围,修改数据库支持的最大链接数。

在实际应用中,若在修改数据库的物理配置参数后,判断待测试系统仍然存在数据库死锁的性能瓶颈,性能瓶颈定位单元24进一步用于查询锁表语句,分析数据库的日志,定位数据库死锁的性能瓶颈存在于数据库的方法程序中;使用抽样器查询待测试系统方法程序的执行效率,并根据执行效率,修改数据库的方法程序。

综上所述,本发明提供了一种性能测试方法和系统,预先建立包括系统逻辑分析模型、性能指标模型和用户行为模型的软件测试模型,利用系统逻辑分析模型确定待测试系统的相关构件,性能指标模型确定相关构件需要监测的性能指标,以及利用用户行为模型模拟用户的真实行为来驱动测试过程, 在测试过程中利用监测工具监测性能指标的实时值,并与正常性能指标对比,从而快速、有效地定位出待测试系统的性能瓶颈位置。由于本发明采用软件测试模型和监测工具相结合的方案定位待测试系统的性能瓶颈,无需依赖软件工程师专业知识和经验,因此在有效地减少软件工程师的工作量,提高性能测试效率的同时,还能够提高性能瓶颈分析和定位的准确度。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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