压力测试方法及系统与流程

文档序号:12837066阅读:348来源:国知局
压力测试方法及系统与流程

本发明涉及软件测试领域,尤其涉及压力测试方法及系统。



背景技术:

在软件项目开发过程中经常需要对关键部分进行压力测试,获取软件性能指标以据此改进软件性能。传统上多使用专业压力测试工具进行压力测试,如loadrunner、jmeter等。

loadrunner是一种预测系统行为和性能的负载测试工具,通过模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题。loadrunner能够对整个企业计算架构进行测试。企业使用loadrunner能缩短测试时间,优化性能和加速应用系统的发布周期。loadrunner可适用于各种体系架构的自动负载测试,能预测系统行为并评估系统性能。

jmeter是apache组织开发的基于java的压力测试工具。用于对软件做压力测试,它最初被设计用于web应用测试但后来扩展到其他测试领域。它可以用于测试静态和动态资源例如静态文件、java小服务程序、cgi脚本、java对象、数据库、ftp服务器等。jmeter可以用于对服务器、网络或对象模拟巨大的负载,在不同压力类别下测试它们的强度和分析整体性能。

然而,现有的这些大型压力测试软件价格非常昂贵,普通公司难以承受这样昂贵的价格。通常大型压力测试软件系统都采用私有的系统间交互协议,不便于扩展开发来支持私有协议。

另外,使用上述独立的测试工具时,压力测试用例不容易管理。目前主流的压力测试软件都支持gui操作、编写脚本执行两种方式。gui操作不便于自动化处理,而脚本执行方式需要投入大量精力学习一门压力测试软件内嵌的脚本语言,学习成本很高,这客观上也限制了这些压力测试软件的使用 范围,甚至导致掌握这些软件使用的人员奇缺。

通常压力测试软件的测试用例都是由测试人员单独管理,没有与软件代码集成到一起,不便于版本统一管理。由于压力测试一般都由专门测试人员负责,开发人员通常不会使用压力测试软件,导致开发人员很少关心自己编写程序的性能情况。一般由测试人员发现性能问题后再反馈给开发人员,这又常常导致项目返工等情况发生。

因此,需要开发新的压力测试方法及系统。

在所述背景技术部分公开的上述信息仅用于加强对本发明的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

本发明公开一种新的压力测试方法和系统,能够取代昂贵的压力测试软件。

本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。

根据本发明的一个方面,提供一种压力测试方法,包括:drpc服务器接收请求端的压力测试参数;drpc服务器将压力测试参数传送到storm集群;storm集群根据压力测试参数并发访问被压力测试系统;storm集群将被压力测试系统返回的结果通过drpc服务器返回请求端。

根据一些实施例,压力测试参数包括被压力测试系统地址以及并发量参数。

根据一些实施例,请求端包括junit测试用例模块,junit测试用例模块通过调用drpc服务器接口传递压力测试参数。

根据一些实施例,storm集群运行drpc拓扑,drpc拓扑包括压力测试bolt和汇总bolt,其中,storm集群根据压力测试参数并发访问被压力测试系统包括:压力测试bolt根据压力测试参数并发访问被压力测试系统从而得到并发送测试结果;storm集群将被压力测试系统返回的结果通过drpc服务器返回请求端包括:汇总bolt对测试结果进行汇总统计并发送汇总结果。

根据一些实施例,压力测试bolt包括第一压力测试bolt和第二压力测 试bolt,其中:第一压力测试bolt获取第二压力测试bolt的实例数量,从压力测试参数获得并发量参数,生成并发送第二压力测试参数,第二压力测试参数包括用于每个第二压力测试bolt的第二并发量参数;第二压力测试bolt接收第二压力测试参数,以循环方式访问被压力测试系统从而得到测试结果并发送测试结果,循环次数等于第二并发量参数。

根据一些实施例,压力测试bolt包括第三压力测试bolt和第四压力测试bolt,其中:第三压力测试bolt从压力测试参数获得并发量参数,并循环发送第二压力测试参数,循环次数等于并发量参数;第四压力测试bolt接收第二压力测试参数,根据第二压力测试参数访问被压力测试系统从而得到测试结果并发送测试结果。

根据一些实施例,第二压力测试参数与压力测试参数相同。

根据一些实施例,junit测试用例模块与被压力测试系统的代码集成并进行版本统一管理。

根据本发明的另一方面,提供一种压力测试系统,包括:drpc服务器,用于接收请求端的压力测试参数;基于storm的压力测试集群,从drpc服务器获取压力测试参数,用于根据压力测试参数并发访问被压力测试系统,并将被压力测试系统返回的结果通过drpc服务器返回请求端,其中压力测试集群运行drpc拓扑,drpc拓扑包括压力测试bolt和汇总bolt,压力测试bolt根据压力测试参数并发访问被压力测试系统并得到测试结果,汇总bolt对测试结果进行汇总统计并发送汇总结果。

根据一些实施例,压力测试bolt包括第一压力测试bolt和第二压力测试bolt,其中:第一压力测试bolt获取第二压力测试bolt的实例数量,从压力测试参数获得并发量参数,生成并发送第二压力测试参数,第二压力测试参数包括用于每个第二压力测试bolt的第二并发量参数;第二压力测试bolt接收第二压力测试参数,以循环方式访问被压力测试系统从而得到测试结果并发送测试结果,循环次数等于第二并发量参数。

根据一些实施例,压力测试bolt包括第三压力测试bolt和第四压力测试bolt,其中:第三压力测试bolt从压力测试参数获得并发量参数,并循环发送第二压力测试参数,循环次数等于并发量参数;第四压力测试bolt接收第二压力测试参数,根据第二压力测试参数访问被压力测试系统从而得 到测试结果并发送测试结果。

根据本发明的一些实施例,进行压力测试时不必采购昂贵的商业压力测试软件。

根据本发明的一些实施例,本发明的技术方案能支持私有协议,可根据被压力测试部分所使用的协议实现定制开发。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

通过参照附图详细描述其示例实施例,本发明的上述和其它特征及优点将变得更加明显。

图1示出根据一示例性实施例的压力测试系统的框图;

图2示出根据一示例性实施例的压力测试方法;

图3a示出根据一示例性实施例的压力测试bolt;

图3b示出根据一示例性实施例的压力测试过程;

图4a示出根据另一示例性实施例的压力测试bolt;

图4b示出根据另一示例性实施例的压力测试过程。

具体实施方式

现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本发明将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。

此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有所述特定细节中的一个或更多,或者可以采用其它的方法、组 元、材料、装置、步骤等。在其它情况下,不详细示出或描述公知结构、方法、装置、实现、材料或者操作以避免模糊本发明的各方面。

附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

附图中所示的流程图仅是示例性说明,不是必须包括所有的步骤。例如,有的步骤还可以分解,而有的步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。

图1是根据一示例性实施例的压力测试系统的框图。

如图1所示,根据本实施例的压力测试系统采用storm集群实现。整个压力测试系统涉及junit测试用例模块110、drpc服务器120、storm压力测试集群130以及被压力测试系统140。

storm是个实时的、分布式以及具备高容错的计算系统。storm可以处理大批量的数据,在保证高可靠性的前提下还可以让处理进行的更加实时;也就是说,所有的信息都会被处理。storm同样还具备容错和分布计算这些特性,这就让storm可以扩展到不同的机器上进行大批量的数据处理。storm易于扩展,只需要添加机器和改变对应的topology(拓扑)设置。storm使用hadoopzookeeper进行集群协调,这样可以充分保证大型集群的良好运行。storm具有容错机能,一旦topology递交,storm会一直运行它直到topology被废除或者被关闭。而在执行中出现错误时,也会由storm重新分配任务。一个拓扑是一个有向图的计算。在一个拓扑中的每个节点包含处理逻辑,节点之间的连接显示数据应该如何在节点之间传递。topology是一组由spouts(数据源)和bolts(数据操作)通过streamgroupings进行连接的图。

storm的drpc模式支持从远程调用storm集群的计算资源,而不需要连接到集群的某一个节点。drpc提供了集群中处理功能的访问接口。

基于storm架构的这些特点,可以利用storm架构实现一种低成本的压力测试系统,即通过开发压力测试bolt134进行压力测试,并通过汇总bolt136对测试结果进行汇总统计,返回测试请求端,如junit测试用例模块110。根据一实施例的压力测试系统采用drpc模式storm集群,通过drpc服务器 120和drpcspout132传送压力测试参数,并通过drpc服务器120返回测试汇总结果。

图2是根据一示例性实施例的压力测试方法,其可通过图1所示的压力测试系统实现。

在s210,drpc服务器120接收请求端的压力测试参数。请求端可以包括例如junit测试用例模块110,junit测试用例模块110可通过调用drpc服务器接口传递压力测试参数给drpc服务器120。压力测试参数可包括json格式的被压力测试系统地址以及并发量参数。压力测试参数可包括标准请求协议或私有请求协议。请求协议可显示包含在压力测试参数中,也可隐式包含在被压力测试系统地址中,本发明对此不做限制。

在s220,drpc服务器将压力测试参数传送到storm集群130。storm集群130中的drpcspout132作为storm集群130中的内置组件可实时从drpc服务器120中获取请求端junit测试用例模块110传递给drpc服务器120的请求参数,因此drpcspout132可以获得junit测试用例模块110传递过来的压力测试参数。

在s230,storm集群130根据压力测试参数并发访问被压力测试系统140。storm集群130可通过压力测试参数中的标准请求协议或私有请求协议并发访问被压力测试系统140。

storm集群130可运行drpc拓扑,drpc拓扑可包括压力测试bolt134和汇总bolt136。压力测试bolt134可根据压力测试参数并发访问被压力测试系统140从而得到并发送测试结果。汇总bolt136可对测试结果进行汇总统计并发送汇总结果。

根据一实施例,如图3a所示,压力测试bolt134可包括第一压力测试bolt1342和第二压力测试bolt1344。

根据一实施例,如图3b所示,第一压力测试bolt1342获取第二压力测试bolt1344的实例数量,从压力测试参数获得并发量参数,生成并发送第二压力测试参数,第二压力测试参数包括用于每个第二压力测试bolt的第二并发量参数,其可等于从压力测试参数获得的并发量参数除以第二压力测试bolt1344的实例数量。

第二压力测试bolt1344接收第二压力测试参数,以循环方式访问被压 力测试系统140从而得到测试结果并发送测试结果,循环次数等于第二并发量参数。第二压力测试bolt1344可记录每次压力测试请求响应时间等压力测试结果,并将压力测试结果发送给汇总bolt136。

根据另一实施例,如图4a所示,压力测试bolt134可包括第三压力测试bolt1346和第四压力测试bolt1348。

根据一实施例,如图4b所示,第三压力测试bolt1346从压力测试参数获得并发量参数,并循环发送第二压力测试参数,循环次数可等于并发量参数。第二压力测试参数可与压力测试参数相同,但本发明不限于此。

第四压力测试bolt1348接收第二压力测试参数,根据第二压力测试参数访问被压力测试系统140从而得到测试结果并发送测试结果。第四压力测试bolt1348可记录每次压力测试请求响应时间等压力测试结果,并将压力测试结果发送给汇总bolt136。

在s240,storm集群将被压力测试系统返回的结果通过drpc服务器返回请求端。例如,汇总bolt136可使用storm批处理机制对收到的压力测试结果进行汇总,计算平均值、最大值、最小值、中位数、方差等压力测试指标,并可以json形式保存并发送给系统内置的resultbolt,再由resultbolt发送给drpc服务器120并进一步返回至请求端junit测试用模块110。

根据一实施例,junit测试用例模块可与被压力测试系统140的代码集成并进行版本统一管理,从而便于从软件工程角度进行项目管理。

通过以上的详细描述,本领域的技术人员易于理解,根据本发明实施例的系统和方法具有以下优点中的一个或多个。

根据一些实施例,根据本发明的技术方案,进行压力测试时可不用采购昂贵的压力测试软件,极大降低了成本。

根据一些实施例,压力测试代码可包含在junit测试用例中,与正式代码同步发布,便于从软件工程角度进行项目管理。

根据一些实施例,可根据被测试系统的协议实现定制开发,解决loadrunner等软件不便于测试私有协议的问题,并且可以定制测试生成报告,与外部系统进行交互。

通过以上的实施例的描述,本领域的技术人员易于理解,本发明实施例可以通过硬件实现,也可以通过软件结合必要的硬件的方式来实现。因此, 本发明实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本发明实施例的方法。

本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的,因此不能用于限制本发明的保护范围。

本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。

以上具体地示出和描述了本发明的示例性实施例。应该理解,本发明不限于所公开的实施例,相反,本发明意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效布置。

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