|
知识路径: > 测试技术的分类 > 应用负载压力测试 > 负载压力测试解决方案 > 并发性能测试 >
|
相关知识点:3个
|
|
|
|
在客户端模拟大量并发用户执行不同业务操作,达到实施负载压力的目的。
|
|
|
采用负载压力测试工具来模拟大量并发用户,模拟机制如下图所示,主要组成部分包括主控台、代理机以及被测服务器,各部分采用网络连接。主控台负责管理各个代理以及收集各代理测试数据,代理负责模拟虚拟用户加压。在每次并发性能测试中,只有一台主控台,但可以有多个代理。
|
|
|
|
|
如何模拟负载压力呢?总的原则是最大限度地模拟真实负载压力。要做到这一点,既是对测试工具的考验,又是对测试工程师经验与智慧的考验。
|
|
|
测试工具怎样模拟真实的负载压力呢?以LoadRunner负载压力测试工具为例,看看工具是如何实现的。
|
|
|
要模拟真实的负载压力做测试,必须创建方案,方案是用以模拟现实生活中用户的方式。方案包含有关如何模拟实际用户的信息:虚拟用户(Vuser)组、Vuser将运行的测试脚本,以及用于运行脚本的负载生成器计算机。
|
|
|
如果选择创建常规手动方案,则会将选择的每个脚本分配给Vuser组。然后,可以为每个Vuser组分配多个Vuser。可以指示某个组中的所有Vuser在同一台负载生成器计算机上运行相同的脚本,也可以为组中的各个Vuser分配不同的脚本和负载生成器。使用百分比模式创建手动方案,可以定义方案中要使用的Vuser总数,并为每个脚本分配负载生成器和占总数一定百分比的Vuser。
|
|
|
可以设计面向目标的方案,在面向目标的方案中,可以定义所希望实现的测试目标,LoadRunner将根据定义的目标自动创建一个方案。在一个面向目标的方案中,可以定义五种类型的目标:虚拟用户数、每秒点击次数(仅Web Vuser)、每秒事务数、每分钟页面数(仅Web Vuser)或事务响应时间。要定义每秒事务数或事务响应时间目标类型,脚本中必须包含事务。对于每种目标类型,可以定义脚本中希望测试的事务。下面分别来分析五种类型的目标。
|
|
|
. 虚拟用户目标类型:测试应用程序可以同时运行多少个Vuser。
|
|
|
. 每秒点击次数、每分钟页面数或每秒事务数:测试服务器的稳定性。需要指定LoadRunner运行的Vuser范围(最大值、最小值),以及每秒事务数目标类型的“事务名称”。Controller(测试工具的主控台)将尽量使用最少数量的Vuser来达到定义的目标。如果使用最小Vuser数不能达到该目标,则Controller将逐渐增加Vuser数,直到达到所定义的最大数。如果使用指定的最大Vuser数仍不能达到指定的目标,Controller将增加Vuser数,并再次执行方案。
|
|
|
. 事务响应时间目标类型:测试在期望的事务响应时间内可以同时运行多少个Vuser,在脚本中指定想要测试的事务的名称以及LoadRunner要运行的Vuser数量范围(最大值、最小值)。指定的“事务响应时间”应该是一个预定义的阈值。例如,如果希望用户在5秒钟之内登录到某个电子商务站点,请将可接受的最长事务响应时间指定为5秒。将最大和最小Vuser数设置为希望能够同时提供服务的最大和最小用户数。如果方案没有达到定义的最大事务响应时间,则服务器能够在合理的时间间隔内,对想要同时提供服务的指定数量的用户作出响应。如果在仅执行部分Vuser后就达到定义的响应时间,或如果接收到消息,提示如果Controller使用定义的最大Vuser数,响应时间将超出指定值,那么,应该考虑修补应用程序和/或升级服务器的软硬件。
|
|
|
下面来谈谈方案计划。方案的主要内容是确定如何开展测试,以准确描绘用户行为(操作类型和这些操作的计时等,由Vuser脚本表示)。可以在一段延迟之后开始执行方案。可以指定LoadRunner自发出Run命令以来等待的分钟数,也可以指定让方案开始的特定时间。使用计划生成器,可以对手动方案进行计时设置,从而限制方案的执行持续时间,或Vuser组在方案中的持续时间。通过指定方案或Vuser组应处于“正在运行”状态的分钟数,可以限制执行持续时间。方案或组到达其时间限制时就结束。对于手动方案,还可以规定在某一时间段内LoadRunner启动和停止的Vuser的数量。在指定的时间量内,可以指定LoadRunner应同时启动/停止,Vuser组中所有的Vuser,还是仅启动/停止一定数量的Vuser。需要注意的是,Vuser脚本中的集合点将干扰已计划好的方案。如果脚本包含集合点,则方案将不会按计划运行。
|
|
|
在方案运行期间,可以通过使用集合点指示多个Vuser同时执行任务。集合点可以在服务器上创建密集的用户负载,并使LoadRunner能够测量服务器在负载状态下的性能。假设有10个Vuser同时检查账户信息时,需要估量某个基于Web的银行系统如何执行操作。为了模拟服务器上要求的用户负载,可以指示所有的Vuser完全在同一时刻检查账户信息。通过创建集合点,可以确保多个Vuser同步操作。当Vuser到达某个集合点时,它就会被Controller滞留在该处。当达到要求的Vuser数或者经过一段指定的时间后,Controller就会从集合中释放Vuser。
|
|
|
通过使用Controller,可以根据如下选择来影响服务器的负载级别:
|
|
|
|
|
例如,要测试银行服务器,可以创建一个包含两个集合点的方案。第一个集合可以确保1000个Vuser能同时存入现金。第二个集合可以确保另外1000个Vuser能同时提取现金。如果需要在只有500个Vuser存入现金的情况下度量服务器的性能,可以停用(禁用)“提取”集合,并指示仅让500个Vuser参加“存入”集合。下面的过程概述了如何控制服务器上的负载峰值。
|
|
|
|
|
. 向方案中添加Vuser组时,LoadRunner扫描与该组相关的脚本,在其中搜索集合点的名称,并将这些名称添加到“集合信息”对话框中的列表里。如果创建另外一个运行相同脚本的Vuser组,Controller会将该新的Vuser添加到集合中,并更新列表。
|
|
|
|
. 通过选择将加入到方案中的集合点,以及加入每个集合的Vuser数,可以确定负载的精确级别。
|
|
|
|
|
|
在运行方案之前,可以同时配置方案的负载生成器和Vuser行为。虽然默认设置与大多数环境对应,但是LoadRunner允许修改这些设置,以便自定义方案行为。这些设置适用于所有未来的方案运行,并且通常只需设置一次。如果全局方案设置与单个负载生成器的设置不同,则负载生成器设置将替代全局方案。
|
|
|
这里讨论的设置与Vuser运行时的设置无关。这些适用于单个Vuser或脚本的设置,包含有关日志记录、思考时间、网络、迭代数和浏览器的信息。LoadRunner导出模式允许配置LoadRunner代理程序和其他LoadRunner组件的其他设置,称为“专家模式”。
|
|
|
我们使用大量的篇幅论述了测试工具,其实在测试过程中,占主导地位的仍然是测试工程师,测试工程师对测试工具掌握的熟练程度,负载压力测试积累的经验,对新技术的敏感程度,和开发人员及用户的充分交流,学无止境的工作态度都是非常重要的。
|
|
|
测试工程师只有程序设计和开发工具的知识是不够的,必须要懂得系统运转的机理。要具备应用平台、软件架构、数据库系统以及网络环境等方面的知识,这样才能做到尽量分析错误和定位错误。
|
|
|
例如,当对关键功能点录制脚本时,不但要掌握功能点完成的任务,还要熟悉功能的业务运行模式,这就需要测试工程师有业务操作背景。
|
|
|
客户端并发性能测试要得到哪些指标的值呢,以及怎样分析结果值,我们在后面章节会有详细举例论述。
|
|
|