6.3.3性能测试流程
性能测试相对于功能测试来说复杂很多,但是测试流程基本大同小异,大致分为5个阶段:制定性能测试计划、设计性能测试、执行负载测试、分析优化性能、评估并生成报告。
1、制定性能测试计划
第一步就是通过需求分析得到性能测试需求,也就是性能测试的目标。然后熟悉系统结构,选择性能测试工具,最后确定性能测试的实施时间。
2、设计性能测试
主要包括性能测试脚本的开发优化、负载的生成规则、监控资源的方式以及环境的设计等。
3、执行负载测试
需要完成环境的搭建和性能测试数据的准备,然后根据设计性能测试场景进行执行负载测试。
4、分析优化性能
根据执行的结果、监控系统资源以及相关的数据进行分析,这个分析需要同开发人员共同完成,找出系统存在的性能问题,确定性能瓶颈。接下来进行性能的优化,确定调优的效果是否达到预期的目标。
5、评估并生成报告
撰写性能测试报告,最后还需要对系统的性能进行风险评估。
6.3.4Loadrunner工具介绍
Loadrunner是一种预测系统行为性能的负载测试工具。通过模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找系统存在的性能问题。能够对整个企业架构进行测试;可以使用各种体系架构的自动负载测试、能预测系统行为并评估系统性能。
1.Loadrunner工具组成
主要由以下4个部分组成
(1)脚本生成器 Virtual User Generator
Virtual User Generator简称(VuGen)它是基于协议来捕获用户业务或流程,可生成性能测试的脚本,也可以说是用户行为的模拟。
(2)负载控制器Controller
对性能测试的过程进行设置,可以设定场景运行的方式、时间、同时还提供系统资源、数据库以及应用服务器的监控功能。
(3)负载发生器Load Generator
Load Generator简称LG,在模拟大量虚拟用户对服务器进行负载和压力测试时,需使用多态负载发生器进行,确保负载均衡(每台负载机均匀对服务器进行施加压力)
(4)结构分析器Analysis
主要是对负载性能测试数据进行收集,便于性能测试人员对测试结果进行整理分析,从而判断性能的问题。
2、Loadrunner工作原理
就是模拟大量用户的行为进行负载,以检测测试是否存在性能问题以及服务器可以承受的压力。
(1)脚本的生成
首先选择相应的协议,通过VuGen对用户行为进行模拟(录制),生成测试脚本并且进行基本的优化。
通过Loadrunner“事物”记录用户的不同行为。
通过Loadrunner“检查点”对事物进行判断
通过Loadrunner“参数化”实现多用户不同的数据
通过Loadrunner“集合点”实现多用户的并发操作
(2)场景的设置
其次通过Contriolle对性能测试的场景进行设置,同时需要监控各项性能指标,为结果分析做数据的依据。
通过Controlle“全局计划”设计启动用户数、加载方式以及运行时间
通过Controlle“集合点策略”对多用户并发行为进行设置
通过Controlle“系统资源图”对服务器资源进行监控
通过Load Generator添加负载机来产生大量的虚拟用户。
运行负载测试
(3)结果的分析
最后执行场景后,通过Analysis对性能测试的数据进行整理,并分析性能的问题。
通过Analysis对"概述”可以看到性能指标的数据,便于分析性能的问。
通过Analysis对“合并图”可以进一步分析性能问题,便于定位性能瓶颈
通过Analysis“报告”可生成性能测试的报告
3、Loadrunner工具的特点
(1)模拟大量的虚拟用户
在VuGen脚本中,可以对用户数据进行参数化操作,这一操作可以模拟不同用户的不同数据来测试应用程序,从而反映系统的负载能力。还可以通过Data Wizard从数据库服务器获取大量的测试数据。
(2)模拟真实的负载
在VuGen脚本建立后,用户需要设定复杂方案,在Controller中提供AutoLoad技术,为用户提供了更多灵活的设计,可以模拟真实用户的负载方案。
(3)可以精确的定位问题
测试完毕后,Loadrunner通过Analysis收集汇总所有的测试数据,并提供高级的分析和报告工具,以便快速查找性能问题并追溯原因。
(4)涉及的领域广泛
可以测试各种软件性能,目前Loadrunner12版本还支持收集APP软件的性能测试。
6.3.5VuGen录制脚本
1、选择协议
利用Loadrunner自带的rotocol Advisor(协议分析)功能来确定,也可以利用HttpWatch抓包工具进行分析,如果选择Web(HTTP/HTML)协议,如图6-41所示
2、选择录制模式
1)基于HTML的脚本:以HTML操作作为录制级别,非HTML操作不进行录制。
2)基于URL的脚本:基于URL请求的脚本录制方式,录制得到的是所有HTTP请求,脚本将得到大量的web url函数
这里选择URL的级别来进行录制登陆脚本,如图6-42所示
3、开始录制脚本
可以直接插入事物名称“登陆”(方便初学者快速熟悉脚本的内容),如图6-43单击插入“开始事物”待操作完成后插入“结束事物”
4、生成录制脚本
5、编辑脚本(要点:事物、检查点、参数化、关联、思考时间、集合点)
事物:其作用作为记录用户某一操作,对操作的响应时间做监控。
事物:(transaction)在Loadrunner中由开始事物(Lr start transaction)
和结束事物(Lr start transaction)组成,它是一个集合,用来记录用户的行为或某一个操作。通常在录制脚本的时候直接插入。
检查点:作用就是对事物做出正确的判断
步骤如下:
步骤1:首先切换到树视图中,选择HTTP视图;
步骤2:在HTTP响应中,找到登陆成功后服务器响应的数据;
步骤3:选中“唯一标识”登陆成功的信息,右键添加文本检查点;
步骤4:在弹出对话框中,勾选“保存技术”取参数名为“登陆计数”,然后确定web_reg_find("Text:需要查找的文本内容“,”SaveCount=出现的次数“,LAST);
参数化:作用就是模拟不同用户的不同数据,步骤如下
通过菜单栏“插入”“新建参数”来创建参数,如图6-44所示
步骤1:在 Web_submit_data中找到需要进行参数化的参数;
步骤2:选中参数右键替换为现有参数“username"即可
关联:其作用为承接上下文请求的依赖关系,步骤如下:
步骤1:首先回放以下脚本
步骤2:在菜单栏“VuGen”中,点击扫描脚本中的关联;
步骤3:选中不一样的参数,右键创建关联即可。eb_reg_save_param_ex ( "ParamName=关联参数名“,”LB=左边界“,”RB=右边界“,LAST);
思考时间:其作用为模拟请求之间的等待时间
lr_think_time(3);通常等待时间为1s~5s
集合点:其作用就是模拟多用户的并发操作。lr-rendezvous("login_run);通常设置在开始事物前面。
6、参数的设置
通过菜单栏“VuGen”"参数列表”进行参数设置,如图6-45所示
选择下一行
Sequential:按照参数化的数据列表顺序取值
Random:按照参数化的数据列表随机抽取
Unique:为每个虚拟用户分配一条唯一的数据
更新值的时间
Each iteration:每次迭代时取新的值
Each occurrence:每次出现参数时取新的值
once:参数化中的数据列表中,一条数据仅抽取一次。
当超出值时
Abort Vuser:当参数超出退出。
Continue in a cyclic value:当参数超出循环参数列表
Continue with last value:当参数超出循环最后一个列表项。