本发明涉及性能测试技术领域,特别涉及一种Web系统的性能测试方法和装置。
背景技术:
由于Web应用是一系列分布于Wed服务器的程序和多媒体资源的集合,具有分布性、异构性和多用户的特点,并且Web应用大多为B/S(Browser/Server,浏览器/服务器)架构,使用Http协议,采用客户/Web服务器/数据库服务器的设计模式,这种多层次结构使得系统出现问题的概率大大增加。因而,Web系统的质量越来越引起用户的关注,特别是Web性能测试,往往需要深入到软件开发、数掘通信、硬件支持等多个方面,愈加受到人们的关注。
但性能测试难度大、周期长、要求高是一直困扰性能测试人员和开发人员的问题,虽然有一些工具能够对系统的某些性能指标有监控和跟踪,但是基于应用系统的业务繁琐性、系统架构的技术难度复杂性,用户行为的不可预见性等诸多因素的影响,Web系统的性能测试正变得比较困难,如果测试方法不当,系统性能测试反而无法反应系统本身的真实情况,有些测试结果反而误导开发和测试人员,致使系统的开发和测试浪费大量的时间和金钱,影响了产品的发布,最终影响到了用户的体验。
技术实现要素:
鉴于上述问题,本发明提供一种Web系统的性能测试方法和装置,以解决现有技术Web系统性能测试周期长、成本高、测试效率低的问题。
为达到上述目的,本发明的技术方案是这样实现的:
一方面,本发明提供了一种Web系统的性能测试方法,所述方法包括:
在Web系统未满足用户的性能需求时,从Web系统的应用组件中选取 一应用组件作为测试对象进行迭代化的压力测试;
分析应用组件在进行每次压力测试时Web系统的性能,在确定Web系统出现所述应用组件在压力测试下引起的性能瓶颈时,优化应用组件;
在应用组件结束所述迭代化的压力测试时,对Web系统进行混合场景的压力测试,判断Web系统是否满足用户的性能需求;
在Web系统仍不满足用户的性能需求时,根据预先建立的性能瓶颈分布模型从Web系统的应用组件中选取下一应用组件作为新的测试对象进行迭代化的压力测试。
优选地,所述性能瓶颈分布模型通过下述方法建立:
获取所述Web系统的各应用组件以及各应用组件之间的通讯方式;
根据所述Web系统的性能瓶颈的潜在位置将所述Web系统从下向上依次划分为底层的硬件层性能瓶颈、中间层的系统层性能瓶颈和顶层的应用层性能瓶颈,并将所述Web系统的各应用组件划分到相应的层级;
根据所述应用组件之间的通讯方式建立所述Web系统的应用组件间的业务逻辑关系,从而获得所述性能瓶颈分布模型。
进一步优选地,所述根据预先建立的性能瓶颈分布模型从所述Web系统的应用组件中选取下一应用组件作为新的测试对象进行迭代化的压力测试包括:
确定当前应用组件在所述性能瓶颈分布模型中的层级,首先判断所述当前应用组件所在层级中是否存在与其具有业务逻辑关系的其他应用组件,若存在,则选取该层级中与所述当前应用组件具有业务逻辑关系的一应用组件作为新的测试对象;
若不存在,当所述当前应用组件处于所述性能瓶颈分布模型中的底层时,则按照从下向上的方向依次判断中间层、顶层中是否存在与该当前应用组件具有业务逻辑关系的其他应用组件;
当所述当前应用组件处于所述性能瓶颈分布模型中的顶层时,则按照从上向下的方向依次判断中间层、底层中是否存在与该当前应用组件具有业务逻辑关系的其他应用组件;
当所述当前应用组件处于所述性能瓶颈分布模型中的中间层时,先判断 顶层中是否存在与该当前应用组件具有业务逻辑关系的其他应用组件,在顶层不存在与其具有业务逻辑关系的其他应用组件时,再判断底层是否存在与其具有业务逻辑关系的其他应用组件。
优选地,所述从所述Web系统的应用组件中选取一应用组件作为测试对象进行迭代化的压力测试包括:
根据用户的性能需求,确定所述Web系统的相关应用组件;
根据所述Web系统的相关应用组件的通讯方式,从所述Web系统的相关应用组件中确定一重点影响的应用组件作为测试对象进行迭代化的压力测试。
进一步优选地,所述从所述Web系统的相关应用组件中确定一重点影响的应用组件作为测试对象进行迭代化的压力测试包括:
选取测试工具,并设定所述测试对象的压力测试参数的初始值、终止值和迭代步长,所述压力测试参数包括测试环境参数和测试压力值;
利用所述测试工具,从所述压力测试参数的初始值开始对所述测试对象进行压力测试,并收集用于反映所述Web系统性能的测试数据;
按照所述迭代步长调整所述压力测试参数,对所述测试对象进行调整后的压力测试参数的压力测试,并在所述压力测试参数值达到所述压力测试参数的终止值时,结束所述测试对象的压力测试。
优选地,分析所述应用组件在进行每次压力测试时所述Web系统的性能具体为:根据用于反映所述Web系统性能的测试数据来分析所述Web系统的性能;
所述方法还包括:所述对所述Web系统进行混合场景的压力测试,判断所述Web系统是否满足用户的性能需求,在所述Web系统已满足用户的性能需求时,所述方法结束。
优选地,所述对所述Web系统进行混合场景的压力测试,判断所述Web系统是否满足用户的性能需求包括:
利用所述测试工具对所述Web系统的所有相关应用组件进行压力测试,并收集所述Web系统的性能数据;
将收集到的所述Web系统的性能数据与所述用户的性能需求进行比较, 在所述Web系统的性能数据达到所述用户的性能需求时,判断所述Web系统满足用户的性能需求。
另一方面,本发明提供了一种Web系统的性能测试装置,所述性能测试装置包括:
应用组件测试单元,用于在Web系统未满足用户的性能需求时,从Web系统的应用组件中选取一应用组件作为测试对象进行迭代化的压力测试;
应用组件优化单元,用于分析应用组件在进行每次压力测试时Web系统的性能,在确定Web系统出现性能瓶颈时,优化应用组件;
混合场景测试单元,用于在应用组件结束迭代化的压力测试时,对Web系统进行混合场景的压力测试,判断Web系统是否满足用户的性能需求;
应用组件选取单元,用于在混合场景测试单元判断Web系统仍不满足用户的性能需求时,根据预先建立的性能瓶颈分布模型从Web系统的应用组件中选取下一应用组件作为新的测试对象,并驱动应用组件测试单元对新的测试对象进行迭代化的压力测试。
优选地,所述性能瓶颈分布模型通过下述方法建立:
获取所述Web系统的各应用组件以及各应用组件之间的通讯方式;
根据所述Web系统的性能瓶颈的潜在位置将所述Web系统从下向上依次划分为底层的硬件层性能瓶颈、中间层的系统层性能瓶颈和顶层的应用层性能瓶颈,并将所述Web系统的各应用组件划分到相应的层级;
根据所述应用组件之间的通讯方式建立所述Web系统的应用组件间的业务逻辑关系,从而获得所述性能瓶颈分布模型。
优选地,所述应用组件选取单元包括:
层级确定模块,用于确定当前应用组件在所述性能瓶颈分布模型中的层级;
主判断模块,用于首先判断所述当前应用组件所在层级中是否存在与其具有业务逻辑关系的其他应用组件,若存在,则选取该层级中与所述当前应用组件具有业务逻辑关系的一应用组件作为新的测试对象;
从判断模块,用于在所述主判断模块判断所述当前应用组件所在层级中不存在与其具有业务逻辑关系的其他应用组件时,
若所述当前应用组件处于所述性能瓶颈分布模型中的底层,则按照从下向上的方向依次判断中间层、顶层中是否存在与该当前应用组件具有业务逻辑关系的其他应用组件;
若所述当前应用组件处于所述性能瓶颈分布模型中的顶层,则按照从上向下的方向依次判断中间层、底层中是否存在与该当前应用组件具有业务逻辑关系的其他应用组件;
若所述当前应用组件处于所述性能瓶颈分布模型中的中间层,先判断顶层中是否存在与该当前应用组件具有业务逻辑关系的其他应用组件,在顶层不存在与其具有业务逻辑关系的其他应用组件时,再判断底层是否存在与其具有业务逻辑关系的其他应用组件。
本发明实施例的有益效果是:本发明在Web系统的性能测试过程中,每次测试只测试相关应用组件中的一个,在测试过程中若发现Web系统出现性能瓶颈,则通过对应用组件进行优化来解决出现的性能瓶颈,在该应用组件完成其压力测试后,再根据性能瓶颈分布模型选取下一应用组件作为新的测试对象,继续该新的测试对象的压力测试,从而实现了Web系统性能测试的组件化测试方法,能够在较短时间内确定性能瓶颈,缩短性能测试周期,有效地减少测试工程师的工作量,提高性能测试的测试效率;以及在每个应用组件的压力测试过程中,通过设定相应的压力测试参数,测试应用组件在不同测试环境下的性能表现,从而实现Web系统性能测试的迭代化测试方法,以提高定位性能瓶颈的准确性。
附图说明
图1为本发明实施例一提供的Web系统的性能测试方法流程图;
图2为本发明实施例一提供的Web系统性能瓶颈分布模型示意图;
图3为本发明实施例二提供的Web系统的性能测试方法的测试流程图;
图4为本发明实施例三提供的Web系统的性能测试装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一:
图1为本实施例提供的Web系统的性能测试方法流程图,如图1所示,图1中的方法包括:
S110,在Web系统未满足用户的性能需求时,从Web系统的应用组件中选取一应用组件作为测试对象进行迭代化的压力测试。
由于每次性能测试所付出的代价与测试过程中对Web系统施加的压力有直接关系,因此本实施例优选地采用迭代化的测试方法测试Web系统在不同压力下的性能表现。
在步骤S110中,从Web系统的应用组件中选取一应用组件作为测试对象进行迭代化的压力测试具体为:
根据用户的性能需求,确定Web系统的相关应用组件;
根据Web系统的相关应用组件的通讯方式,从Web系统的相关应用组件中确定一重点影响的应用组件作为测试对象进行迭代化的压力测试。
本实施例优选地通过下述迭代方式对重点影响的应用组件进行压力测试:
选取测试工具,并设定测试对象的压力测试参数的初始值、终止值和迭代步长,其中压力测试参数包括测试环境参数和测试压力值;
利用测试工具,从压力测试参数的初始值开始对测试对象进行压力测试,并收集用于反映Web系统性能的测试数据;
按照迭代步长调整压力测试参数,对测试对象进行调整后的压力测试参数的压力测试;
在压力测试参数值达到压力测试参数的终止值时,结束测试对象的压力测试。
S120,分析该应用组件在进行每次压力测试时Web系统的性能,在确定Web系统出现该应用组件在压力测试下引起的性能瓶颈时,优化应用组件。
其中,在对选取的应用组件进行优化时,若选取的应用组件为硬件,优选地优化该应用组件的配置参数;若选取的应用组件为软件,优选地优化该应用组件的代码逻辑,优选地,每次压力测试后若出现性能瓶颈则优化该组件以消除该次压力测试出现的性能瓶颈,具体可以通过再次进行相同的压力 参数来进行一次压力测试确定是否消除性能瓶颈。
当在步骤S110中收集每次压力测试的测试数据时,则步骤S120中分析应用组件在进行每次压力测试时Web系统的性能数据具体为根据用于反映Web系统性能的测试数据来分析Web系统的性能。
S130,在该应用组件结束迭代化的压力测试时,对Web系统进行混合场景的压力测试,判断Web系统是否满足用户的性能需求。
本步骤优选地通过下述方式对Web系统进行混合场景的压力测试:
利用测试工具对Web系统的所有相关应用组件进行压力测试,并收集Web系统的性能数据;
将收集到的Web系统的性能数据与所述用户的性能需求进行比较,在Web系统的性能数据达到所述用户的性能需求时,判断Web系统满足用户的性能需求。
需要指出的是,本步骤中所述的该应用组件结束迭代化的压力测试时应应理解为:若在对应用组件进行迭代化的压力测试过程中,Web系统未出现性能瓶颈,则在达到迭代化测试的终止条件时即压力测试参数满足用户需求的上限值时,结束该应用组件的迭代化测试;若在对应用组件进行迭代化的压力测试过程中,Web系统出现该应用组件在压力测试下引起的性能瓶颈,则对该应用组件进行优化消除该性能瓶颈,在彻底优化消除由该组件引起的性能瓶颈后结束该应用组件的迭代化测试。
S140,在Web系统仍不满足用户的性能需求时,根据预先建立的性能瓶颈分布模型从Web系统的应用组件中选取下一应用组件作为新的测试对象进行迭代化的压力测试。
本实施例通过在测试过程中,每次测试只测试相关应用组件中的一个,在测试过程中若发现Web系统出现所述应用组件在压力测试下引起的性能瓶颈,则通过对应用组件进行优化来解决出现的性能瓶颈,在该应用组件完成其压力测试后,再根据性能瓶颈分布模型选取下一应用组件作为新的测试对象,继续该新的测试对象的压力测试,从而实现了Web系统性能测试的组件化测试方法,能够在较短时间内确定性能瓶颈,缩短性能测试周期,有效地减少测试工程师的工作量,提高性能测试的测试效率;以及在每个应用组 件的压力测试过程中,通过设定相应的压力测试参数,测试应用组件在不同测试环境下的性能表现,从而实现Web系统性能测试的迭代化测试方法,以提高定位性能瓶颈的准确性。
在本实施例的一个优选方案中,步骤S140中的性能瓶颈分布模型通过下述方法建立:
获取Web系统的各应用组件以及各应用组件之间的通讯方式;
根据Web系统的性能瓶颈的潜在位置将Web系统从下向上依次划分为底层的硬件层性能瓶颈、中间层的系统层性能瓶颈和顶层的应用层性能瓶颈,并将Web系统的各应用组件划分到相应的层级;
根据应用组件之间的通讯方式建立Web系统的应用组件间的业务逻辑关系,从而获得上述性能瓶颈分布模型。
其中,底层一般包括交换机、路由器等网络硬件、处理器、内存、磁盘等应用组件的性能瓶颈;中间层的系统层性能瓶颈一般包括服务器操作系统、应用服务器、数据库服务器、中间件等应用组件的性能瓶颈;顶层的应用层性能瓶颈一般包括架构设计缺陷、程序设计缺陷、数据库设计缺陷等。
则步骤S140中根据预先建立的性能瓶颈分布模型从Web系统的应用组件中选取下一应用组件作为新的测试对象进行迭代化的压力测试具体为:
确定当前应用组件在所述性能瓶颈分布模型中的层级,首先判断当前应用组件所在层级中是否存在与其具有业务逻辑关系的其他应用组件,若存在,则选取该层级中与当前应用组件具有业务逻辑关系的一应用组件作为新的测试对象;
若不存在,当所述当前应用组件处于性能瓶颈分布模型中的底层时,则按照从下向上的方向依次判断中间层、顶层中是否存在与该当前应用组件具有业务逻辑关系的其他应用组件;
当所述当前应用组件处于性能瓶颈分布模型中的顶层时,则按照从上向下的方向依次判断中间层、底层中是否存在与该当前应用组件具有业务逻辑关系的其他应用组件;
当所述当前应用组件处于性能瓶颈分布模型中的中间层时,先判断顶层中是否存在与该当前应用组件具有业务逻辑关系的其他应用组件,在顶层不 存在与其具有业务逻辑关系的其他应用组件时,再判断底层是否存在与其具有业务逻辑关系的其他应用组件。
本优选方案通过预先构建的性能瓶颈分布模型选取下一应用组件作为新的测试对象,在Web系统性能测试过程中,逐层、顺序地定位性能瓶颈,避免由于层与层之间的应用组件的相互影响造成的混乱,从而能够快速、高效、准确地定位性能瓶颈。
如图2所示,图2为本实施例提供的Web系统性能瓶颈分布模型示意图,图2中两个应用组件之间的连线表示该两个应用组件具有业务逻辑关系。
本实施依据系统由底层到顶层的方向,即从下向上的方向,将系统性能瓶颈的潜在位置划分为三个层级,底层为硬件层性能瓶颈,中间层为系统层性能瓶颈,顶层为应用层性能瓶颈。
若假设中间层的数据库为该Web系统的重点影响的应用组件:
在该Web系统的性能测试过程中,若在对重点影响的应用组件进行压力测试时,发现该Web系统发生由该重点影响的应用组件引起的性能瓶颈,并且在重点影响的应用组件优化消除该性能瓶颈后,该web系统仍不能满足用户性能需求,则根据性能瓶颈分布模型在中间层选择一个与该数据库具有业务逻辑关系的应用组件作为新的测试对象,如2所示,可以选取应用服务器A作为新的测试对象;在中间层的相关应用组件都优化后,发现该Web系统不能满足用户性能需求,则先在顶层中选取与中间层的相关应用组件具有业务逻辑关系的应用组件作为新的测试对象;在顶层中的相关应用组件都优化后,该Web系统仍不能满足用户性能需求时,最后从底层选取具有业务逻辑关系的应用组件作为测试对象。
若假设顶层的应用系统为该Web系统的重点影响的应用组件:
在该Web系统的性能测试过程中,若在对该重点影响的应用组件进行压力测试时,发现该Web系统发生由该重点影响的应用组件引起的性能瓶颈,并且在重点影响的应用组件优化消除该性能瓶颈后,该Web系统仍不能满足用户性能需求,则根据性能瓶颈分布模型在顶层选择一个与该应用系统具有业务逻辑关系的应用组件作为新的测试对象,如2所示,可以选取业务系统作为新的测试对象;在顶层的相关应用组件都优化后,发现该Web系统不能 满足用户性能需求,则先在中间层中选取与顶层的相关应用组件具有业务逻辑关系的应用组件作为新的测试对象;在中间层中的相关应用组件都优化后,该Web系统仍不能满足用户性能需求时,最后从底层选取具有业务逻辑关系的应用组件作为测试对象。
若假设底层的处理器为该Web系统的重点影响的应用组件:
在该Web系统的性能测试过程中,若在对该重点影响的应用组件进行压力测试时,发现该Web系统发生由该重点影响的应用组件引起的性能瓶颈,并且在重点影响的应用组件优化消除该性能瓶颈后,该Web系统仍不能满足用户性能需求,则根据性能瓶颈分布模型在中间层选择一个与该处理器具有业务逻辑关系的应用组件作为新的测试对象,如2所示,可以选取存储设备作为新的测试对象;在底层的相关应用组件都优化后,发现该Web系统仍不能满足用户性能需求,则先在中间层中选取与底层的相关应用组件具有业务逻辑关系的应用组件作为新的测试对象;在中间层中的相关应用组件都优化后,该Web系统仍不能满足用户性能需求时,最后从顶层选取具有业务逻辑关系的应用组件作为测试对象。
实施例二:
本实施例提供了一种对Web系统进行性能测试的方法。在本实施例中,假设测试人员在对Web系统进行综合测试时,发现该Web系统不满足用户的性能需求,继而按照图3中所示的方法进行下述性能测试。
如图3所示,图3为本实施例提供的Web系统的性能测试方法的测试流程图,该性能测试方法的具体流程如下:
S310,从Web系统的相关应用组件中选取一应用组件作为测试对象,并设定该应用组件的压力测试参数的初始值、终止值和迭代步长。其中,压力测试参数包括测试环境参数和测试压力值。
需要说明的是,本实施例优选地将Web系统的重点影响应用组件作为第一个测试对象,以便于节省测试流程。
S320,利用测试工具对测试对象进行压力测试。
需要说明的是,本实施例从压力测试参数的初始值开始对测试对象进行压力测试。
S330,收集用于反映Web系统性能的测试数据。
S340,分析收集到的用于反映Web系统性能的测试数据,判断Web系统是否出现性能瓶颈,若出现性能瓶颈则执行步骤S341,否则执行步骤S342。
S341,对当前的应用组件进行优化消除性能瓶颈,并执行步骤S350。
其中,若当前的应用组件为硬件,优选地优化该应用组件的配置参数;若当前的应用组件为软件,优选地优化该应用组件的代码逻辑。
S342,判断当前压力测试参数值是否达到压力测试参数的终止值,在当前压力测试参数值未达到压力测试参数的终止值时,执行步骤S343,否则执行步骤S350。
S343,按照迭代步长调整压力测试参数,返回步骤S320。
S350,对Web系统进行混合场景的压力测试。
S360,判断Web系统是否满足用户的性能需求,在Web系统不满足用户的性能需求时,执行步骤S370,否则执行步骤S380。
S370,根据预先建立的性能瓶颈分布模型从所述Web系统的应用组件中选取下一应用组件作为新的测试对象,并返回S320对新的测试对象进行迭代化的压力测试。
S380,结束Web系统的性能测试。
实施例三:
基于与实施例一相同的设计构思,本实施例提供了一种Web系统的性能测试装置。
图4为本实施例提供的Web系统的性能测试装置结构示意图,如图4所示,图4中的性能测试装置包括:应用组件测试单元41、应用组件优化单元42、混合场景测试单元43和应用组件选取单元44。
应用组件测试单元41,用于在Web系统未满足用户的性能需求时,从Web系统的应用组件中选取一应用组件作为测试对象进行迭代化的压力测试。
应用组件优化单元42,用于分析应用组件每次压力测试时Web系统的性能,在确定Web系统出现所述应用组件在压力测试下引起的性能瓶颈时,优化应用组件。
混合场景测试单元43,用于在应用组件结束迭代化的压力测试时,对Web系统进行混合场景的压力测试,判断Web系统是否满足用户的性能需求。
应用组件选取单元44,用于在混合场景测试单元43判断Web系统仍不满足用户的性能需求时,根据预先建立的性能瓶颈分布模型从Web系统的应用组件中选取下一应用组件作为新的测试对象,并驱动应用组件测试单元41对新的测试对象进行迭代化的压力测试。
在本实施例的一个优选方案中,性能瓶颈分布模型通过下述方法建立:
获取Web系统的各应用组件以及各应用组件之间的通讯方式;
根据Web系统的性能瓶颈的潜在位置将Web系统从下向上依次划分为底层的硬件层性能瓶颈、中间层的系统层性能瓶颈和顶层的应用层性能瓶颈,并将Web系统的各应用组件划分到相应的层级;
根据应用组件之间的通讯方式建立所述Web系统的应用组件间的业务逻辑关系,从而获得性能瓶颈分布模型。
则应用组件选取单元44包括:
层级确定模块,用于确定当前应用组件在性能瓶颈分布模型中的层级;
主判断模块,用于首先判断当前应用组件所在层级中是否存在与其具有业务逻辑关系的其他应用组件,若存在,则选取该层级中与当前应用组件具有业务逻辑关系的一应用组件作为新的测试对象;
从判断模块,用于在主判断模块判断所述当前应用组件所在层级中不存在与其具有业务逻辑关系的其他应用组件时,
若当前应用组件处于所述性能瓶颈分布模型中的底层,则按照从下向上的方向依次判断中间层、顶层中是否存在与该当前应用组件具有业务逻辑关系的其他应用组件;
若当前应用组件处于性能瓶颈分布模型中的顶层,则按照从上向下的方向依次判断中间层、底层中是否存在与该当前应用组件具有业务逻辑关系的其他应用组件;
若当前应用组件处于所述性能瓶颈分布模型中的中间层,先判断顶层中是否存在与该当前应用组件具有业务逻辑关系的其他应用组件,在顶层不存在与其具有业务逻辑关系的其他应用组件时,再判断底层是否存在与其具 有业务逻辑关系的其他应用组件。
本实施例的各单元的具体工作方式可以参见本发明实施例一的具体内容,在此不再赘述。
综上所述,本发明公开了一种Web系统的性能测试方法和装置,在Web系统的性能测试过程中,每次测试只测试相关应用组件中的一个,在测试过程中若发现Web系统出现所述应用组件在压力测试下引起的性能瓶颈,则通过对应用组件进行优化来解决出现的性能瓶颈,在该应用组件完成其压力测试后,再根据性能瓶颈分布模型选取下一应用组件作为新的测试对象,继续该新的测试对象的压力测试,从而实现了Web系统性能测试的组件化测试方法,能够在较短时间内确定性能瓶颈,缩短性能测试周期,有效地减少测试工程师的工作量,提高性能测试的测试效率;以及在每个应用组件的压力测试过程中,通过设定相应的压力测试参数,测试应用组件在不同测试环境下的性能表现,从而实现Web系统性能测试的迭代化测试方法,以提高定位性能瓶颈的准确性。。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。