性能测试 LoadRunner11
一、初步概念
1、功能测试:测试产品的功能是否达到要求。
如: ATM取款(在线取款) 是否成功
或转账成功了,表示功能实现了
(一个人)
2、性能测试:测试产品的性能是否达到要求。
包括:时间、多用户共同使用
如:ATM取款(在线取款)---耗时30分钟
十万人同时转账,系统崩溃了,都属于性能问题
结论:性能的要求,高于功能的要求。
工作需求:主要两个方面
A.功能测试(手工、自动化)
B.性能测试(只能通过工具)待遇高于功能自动化测试
要求比功能高,比如需要查找产品慢的原因:
涉及面广:网络、服务器、中间件、数据库等层面问题
二、性能测试的安排:
1、性能测试的基本概念--性能测试概念 1天
对性能要求高的行业:通讯、银行、金融、证券、保险、百度、谷歌等系统。
对性能要求较低的:OA 办公自动化
2、性能测试的工具部分 -- LoadRunner
全球至少一半以上的性能测试,使用LoadRunner
1)LoadRunner的初级部分--三大组件的简单运行
a. 脚本生成器:调代码、脚本的地方
b. 控制台:好比指挥部
c. 结果分析器:比如,每隔3秒钟出一个结果,分析海量的结果,还可以继续分析。
2)LoadRunner的高级部分--三大组件逐个深入掌握。
3、性能测试的高级部分:性能测试过程中,遇到问题(瓶颈),如何查找、定性,进行性能调优。
说明:主要关注1、2点
针对第3点,比如IBM Websphere中间件,数据库DBA
LR HP官网 4G 免费
问题:用户数有限 单用户等
多个用户,需要买Licence 需要注册
LR基本测试流程:
1)制定性能测试计划(部分)
2)创建脚本
3)编辑、编译、运行测试脚本
4)创建场景
5)运行、监控场景,收集数据
6)生成测试报告,分析测试结果
问题:流程中用了几大组件?分别用在何处?
脚本生成器 2 3
控制台 4 5
结果分析器 6
压力激增--瞬时压力:并发压力(性能测试)
系统瘫痪--宕机 (down机了)
浏览量:PV值,页面的访问量或点击量
三、性能测试的概念:
1、性能测试:模拟真实的生产环境,以各种不同的压力(模拟大量用户)去测试被测系统、去"攻击"测试系统。同时记录下被测 系统中 各台 服务器的各种重要资源情况,包括cpu、内存、磁盘和网络等资源。
2、注意:性能测试之前要做好系统备份。
3、性能测试时首先看 性能需求,如果没有需求,这时要根据与客户交流、被测系统的相关资料、以及性能测试工程师的经验,去编写测试计划,进行性能测试。
4、负载测试和压力测试的区别:
(国内混用,国外有差别,笔试时需要注意)
1)共同点都是在测试过程中逐步加压
2)负载测试是在正常范围内测试 Load Testing
(见好就收)
3)压力测试可以在极端范围内测试 Stress Testing
(使劲折腾)
4)举例:一座大桥,桥上写最大载重量的车辆,不超过60吨
但是在桥梁内部建筑资料,最大载重量,不超过70吨
5、性能测试的背景课程:
1)数据库(不夸张的说,60%-90%的性能问题都和数据库有关)
2)操作系统(Linux/Unix)
3)其它:网络协议、防火墙等知识...
性能测试的实现方法:
手动测试:(存在的问题)
测试人员 -> Web Server -> DB Server
问题:
是否有足够的测试资源?测试人员、客户机
如何调度和同步测试用户?比如并发
如何搜索和分析测试结果?
结论:必须使用工具
6、被测系统
SUT (System Under Test)
AUT (Application Under Test)
EUT (Environment Under Test)
就是Web Server和DataBase Server两部分的统称
(Web应用程序 部署其中) 表等资源
进程和线程的区别:
进程包含线程,1个进程可对应多个线程,
多线程可以让任务同时并发执行
每个虚拟用户就是1个线程,线程比较省资源
四、LoadRunner工作原理:(录制--回放的工作方式)和QTP类似
1、录制时,LoadRunner记录下 客户端和服务器 二者之间的对话。
2、回放时,LoadRunner模拟 真实的客户端 向服务器发起请求,并按照脚本去验证服务器的应答。
补充说明:有时脚本录不下来,自己写脚本,发现测试时通过了,但实际运行时服务器瘫了。
原因:没有模拟真实的客户端效果,接收也出现问题,导致失败。
所以自己写脚本时也要模拟真正的客户端。
LoadRunner的三大组件:(三个火枪手) OALoad工具类似
(触类旁通)
1)虚拟用户脚本生成器(Virtual User Generator)VuGen VUG
功能:录制、编辑、调试测试脚本
2)压力调度控制台 (Controller)
功能:创建场景、运行场景、监控场景、收集测试数据
(场景:就是一个大型的配置文件)
3)压力结果分析器 (Analysis)
功能:把收集到的测试数据以图表的形式展示出来;
生成测试报告。
熟悉AUT: LR自带一个B/S架构的系统 航空订票系统
HP LoadRunner ->Samples ->Web ->
Start Web Server先启动服务器
HP LoadRunner ->Samples ->Web ->
HP Web Tours Application
系统地址:http://127.0.0.1:1080/WebTours/
五、关注AUT,并进行脚本录制
LR11修改字体:Tools -> General Options -> Environment
-> Editor Comic Sans MS 14 Bold 加粗
测试时注意:
1.设置IE(清除浏览器缓存):
工具->Internet选项->常规->设置,选择“每次访问此页时检查”
2.LR中修改参数
Controller->Run->Time Setting->Internet Protocol->Proxy,选择No Proxy
Web Tours 航班订票系统
用户名:jojo
密码:bean
1、使用LR之前,浏览器修改:
Internet选项 -> 设置 -> 选中"每次访问此页时检查"
原因:当脚本更新时,会及时查看到
2、拷贝AUT的网址,准备测试。
注意:测试时关闭原先打开的被测网页。
http://127.0.0.1:1080/WebTours/
或
http://localhost:1080/WebTours/
系统功能说明:
Flights 订票
Itinerary 查看订票路线 看订单
Home 主页
Sign Off 退出
细节:需要删除一些干扰文件(涉及Flights的功能)
D:\oracle\product\10.1.0\db_1\perl\5.6.1\bin
MSWin32-x86 目录删除
D:\oracle\product\10.1.0\db_1\perl\5.6.1\lib
MSWin32-x86 目录删除
案例:录制用户登录脚本
使用LoadRunner的VUG
HP LoadRunner -> Application -> HP Vurtual User Generator
录制脚本步骤:
->点击New图标 -> New Virtual User -> 默认协议
-> Create 准备录制
-> 填写基本信息:
选择软件架构:Internet Applications (B/S) 默认
Win32 Applications (C/S)
选择浏览器类型:默认IE
URL Address: 被测系统的网址
http://127.0.0.1:1080/WebTours/
或http://localhost:1080/WebTours/
Working directory: LR工作路径 默认 常用工具命令
Record into Action: 录制脚本的位置 默认Action
(vuser_init 初始化 Action vuser_end 结束)
-> OK 自动打开浏览器 AUT,开始录制
关注小操作条 (录制控制 关注数字变化,数字稳定才继续)
-> 输入jojo bean
-> 开始事务 名称login (插入事务) -> OK
-> Login按钮
-> 结束事务 login -> OK
-> 改为vuser_end模式,点击Sign Off 退出
-> 关闭浏览器 -> 点击蓝色按钮 Stop 结束录制
建议新建目录:D:\work\ (目录名建议用英文名)
新建3个子目录:
script 脚本
ctrl 场景文件
result 结果分析文件
另存为: D:\work\script\day01\login
关注左上角对应的独立的源文件:(脚本的文件组成)
vuser_init 初始化脚本 (类C语言)
Action 最关心的脚本
lr_think_time(68); 表示该处有68秒时间没有对服务器提交请求,思考时间
lr_start_transaction("login"); 开始login事务
lr_end_transaction("login",LR_AUTO); 结束login事务
web_submit_form(...); 发送表单请求
web_url(..); 发送页面请求
vuser_end 结束脚本
globals.h 头文件 (包含LR函数声明)
3、在使用LoadRunner录制之前,一定要手工执行待测的测试点。
比如:登录系统、购买机票
录制时:
一般将登录的动作录制到vuser_init中;
关心的测试点(如订购机票、查询路线)录制在Action中;
而将退出的动作录制到vuser_end代码中。
原因:Action比较强大,具备其它部分所没有的功能
比如:参与迭代、设置并发
录制时注意:创建新脚本,要从New开始
如果只是录制登录脚本,则录在Action中即可
录制时,Action的选择只能从前往后选:
即 vuser_init -> Action -> vuser_end
否则,必须从New开始,重新录制。
何时需要插入事务?
关心那段操作,就将此过程作为一个事务。比如只关心订票,就可以不考虑登录。
目的:LR后续会统计事务的响应时间。
录制结束后,保存--回放(编译、运行)
目标:确保脚本执行正常
编译:检查语法错误。 Compile图标
能检查语法错误,但不能检查逻辑错误
回放:
录制好、调试好脚本,开始运行 Run (VUG)
注意:回放成功,代表脚本录制成功,不代表一定成功,还需要添加检查点
想看到运行结果:
Tools -> General Options -> Replay 回放
-> After Replay 选择 Visual test results 可视化测试结果
再回放,会显示结果报告。
注意:结果的对勾,不一定准确,还需要在脚本中添加一些内容(比如检查点),才完整。
如果想看回放图形效果:(用处不大)
Tools -> General Options -> Display
-> Show run-time viewer during re] 打钩
虚拟用户:Virtual User 简称VU
在场景中,LoadRunner使用VUser代替实际用户。
一个场景中,可以包含几十个、几百甚至几千个Vuser.
使用Vuser给AUT施加压力。
原理:每一个虚拟用户,对应一个进程或线程
常用线程模式,消耗资源比进程少。一般PC机模拟2000个VU
进程 和 线程的区别?
1)进程比较消耗系统资源,进程间通信比较麻烦
2)线程比较节约系统资源,线程间通信比较容易
VUG: 只能产生一个用户的压力。
4、如果实现 多用户的测试,则必须打开 控制台Controller。
(控制台:是指挥部,可以模拟千军万马
VUG只能模拟单用户)
事务:Transaction 为了记录事务响应时间
场景:Scenario 法语外译词
通过控制台来创建场景,相关的场景设置
5、打开控制台时,可以关闭掉VUG。因为脚本保存好后,就可供控制台使用。关闭不必要的软件让测试机的性能好些。
6、练习:录制购票的脚本 buy Flights功能 (VUG)
New -> 选择vuser_init -> OK -> 首页面
输入jojo bean -> 插入事务login -> Login -> 结束事务login
切换为Action -> 点击Flights (等待页面加载完毕)
选择城市 从Denver到Landon -> Continue -> Continue
-> 插入事务buy -> 点击Continue -> 结束事务buy
切换为vuser_end -> 点击Sign Off
-> 关闭浏览器 -> Stop
五、LR的工具组成(3+1)
虚拟用户脚本生成器、压力调度控制台、压力结果分析器
(三大组件/四大组件)
1、Load Generator 负载生成器(压力生成器)
就是一台物理机,负责运行大量的虚拟用户产生负载。相当于指挥台指挥下的作战部队。
(比如:一个部队能够支持2000人,如果需要10000人,就需要多个作战部队)
在控制台 Quantity的右边:Load Generators
默认:localhost 本地主机,负载运行虚拟用户,就是一台负载机
如何添加同事的主机,协同作战?(联机测试,先了解)
在Scenario Groups中,另加一行:
选择脚本buy 点击 -> Name
输入对方的主机名:192.168.0.88 -> OK
相当于借助于同事机器的性能帮助进行测试。
2、代理程序(Agent)
部署在各个客户端,协调得到步调一致的虚拟用户
比如:测试时,好比Controller统帅千军万马
使用Load Generator产生不同的压力机:1,2,3...
---(Agent)Load1
Controller ---(Agent)Load2
---(Agent)Load3
代理程序Agent部署在不同的客户机,好比小的通讯兵
在控制台启动时,会自动启动:
右下方:一个小雷达图标 LoadRunner Agent Process
如果不小心关闭,如何打开?
所有程序 -> HP LoadRunner ->Advanced Settings 高级设置
-> LoadRunner Agent Process
结论:如果想让其它机器参与联机测试,需要其它机器也启动Agent,就能接收到总控制台的命令。
3、监控系统(Monitor)
监控主要的性能计数器,对被测服务器进行监控。(后续讲解)
如何查看:
打开控制台 -> Run界面 左下角 Available Graphs
-> System Resourse Graphs 系统资源图
-> Windows Resourse
-> 图中右击 -> Add Measurements... 增加指标
-> 打开一个窗口:
Monitored Server Machines 监控服务器 机器
Add按钮 -> Machine Information: 机器信息
Name: localhost 主机名
平台Platform: WINXP -> OK
Resources Measurements:
会自动加载许多资源指标。。开始监控 (后续会重新选择)
分析LR工具的组成图:(关注左半边)(四大组件)
Capture & Record 捕捉 和 录制
HTTP Protocal HTTP协议
Monitoring 监控 针对被测系统的服务器进行监控
Run Logs 运行日志
Load Generators 负载生成器
模拟 Client Emulation 被测系统真实的客户端
控制台Start/Stop 得到分析结果,
产生Report&Graphs 报告和图表:
(Word、网页格式htm、Excel、Access、水晶报表 Crystal Reports、诊断Mercury Diagnostics)
4、LoadRunner工具组成图:思路结合3+1大组件作为线索
1)对于给定AUT,VuGen可以按照指定的协议(Http协议、Ajax等协议,软件用到相关技术协议),对于其客户端(IE、Java等客户端)进行捕捉和录制,生成脚本。
考虑调试:事务点、检查点、集合点(并发点)、关联、参数化。
2)可以在VuGen中,设置Run-time Setting,形成场景
3)在控制台中,选择脚本(1或n个),对虚拟用户的加载进行部署,对被测系统的各台服务器进行监控,设置相应的Load Generator(负载生成器)。
4)运行场景,生成Analysis(结果分析报告),进一步获取各种形式的图表。
提示:结合组成图理解并记忆。
简答题:(20*5=100)
1、何时需要性能测试?
对性能要求比较高的行业的软件,
多用户系统。
2、什么是性能测试?
模拟真实的生产环境,以各种不同的压力(模拟大量用户)去测试被测系统、去"攻击"测试系统。
同时记录下被测系统中各台 服务器的各种重要资源情况,包括cpu、内存、磁盘和网络等资源。
3、性能测试的工具
--LoadRunner 11
4、LoadRunner的三大组件:
1)虚拟用户脚本生成器 VUG
作用:录制、编辑、调试脚本。 模拟1个Vuser
2)压力调度控制台 Controller
作用:模拟场景,使用脚本,可以模拟多用户
总指挥部,调度Vuser执行脚本,攻击AUT
3)压力结果分析器 Analysis
作用:分析测试结果(大量图表)
5、负载测试和压力测试的区别?
答:1)负载测试在正常范围内测试。都是逐步加压
2)压力测试可以在极端范围内测试。
3)举例:客车,最大载客数9人。内部资料:12人
最大并发用户数 1000人; 1500人
6、LR的三大组件简介,中英文名称?(重要)
答:1)Virtual User Generator 虚拟用户脚本生成器 VUG
功能:录制、编辑、调试脚本 1VU 可迭代等
2)Controller 压力调度控制台
功能:创建、运行场景、监控场景、收集测试数据
(场景:就是大型的配置文件)
3)Analysis 压力结果分析器
功能:把收集到的测试数据以图表的方式进行展示;
生成测试报告。
7、LoadRunner的原理?(重要)
0) 录制--回放的工作方式 和QTP类似
1)录制时,LoadRunner记录下客户端和服务器二者之间的对话。
(主要为请求)
2)回放时,LoadRunner模拟真实的客户端向服务器发起请求,并按照脚本去验证服务器的应答。
1)对于给定被测系统,
VuGen(虚拟用户脚本生成器)可以按照相应HTTP协议,
对于其客户端(IE客户端、Java客户端)进行捕捉和录制,生成脚本,调试脚本。(检查点、事务点、并发点等)
在VuGen中针对脚本,
可以设置Run-time Settings
比如:迭代次数、Pacing值、Log配置、Think time
3)在控制台中设置场景:
选择好脚本,对虚拟用户的加载进行部署,
对被测系统的各台服务器进行监控,
设置相应的Load Generator(负载生成器)
4)运行场景,
生成Analysis(结果分析报告),生成各种图表。
提供性能调优的数据依据。
8、什么是事务,为何要创建事务?
答:事务分为事务的开始、结束和之间的业务操作,
事务用于度量服务器性能的。(事务响应时间)
我们可以对比较关心的某个或某些业务操作,设定为一个事务,LR会记录不同事务的响应时间。
事务:Transcation
9、LoadRunner脚本的基本组成部分。
三部分(vuser_init、Action、vuser_end)+头文件globals.h
*.c 类C语言源代码 脚本
10、LR和QTP的区别?
1)QTP: 功能测试工具 (自动化)
LR: 性能测试工具 可以测多用户
2)QTP关心的是界面(UI),关心的是对象(对象库的概念);
LR只关心客户端和服务器之间的数据包(请求包、应答包),
不关心对象,更不需要比对对象的属性值,只关心抓包(捕捉数据包)。
如果用户界面变了,但是业务逻辑不变:
QTP脚本需要变化,LR脚本不需改变。
3)LR关心的是客户端和服务器之间的对话,
前提是选择正确的网络协议(相当于网络的语言)。
4)LR不能补录。录制失败,从头再来。
注意:录制过程中出现失误,该次录制作废,从New开始重新录制;
录制时要慢,等待页面资源下载完毕后再进行下一步操作。
1、什么是性能测试?
性能测试是测试的一种方法,在给定的负载条件下,测试被测系统的各项指标是否符合预期要求。
比如:给定内存、CPU、磁盘、事务响应时间等指标
如果发现与需求不一致,就发现性能瓶颈。
2、性能测试的目的?
识别系统中的弱点、评估系统能力、进行系统调优,提高系统的可靠性、稳定性。
3、什么时候需要进行性能测试?
对系统性能比较高的行业:通信、银行、金融、证券、医疗、保险、搜索引擎(百度、谷歌)等多用户的系统。
4、性能测试的工具--LoadRunner11 的组成部分?
(重点掌握3大组件,有时+1 Load Generator)
1)虚拟用户脚本生成器(Virtual User Generator)
捕获用户的业务流程和创建自动性能测试脚本,模拟单用户
2)压力调度控制台(Controller)
根据场景的设置,配置虚拟用户,运行场景,收集测试数据
3)压力结果分析器(Analysis)
分析测试结果
4)负载生成器(Load Generator)压力生成器
通过运行虚拟用户产生实际的负载
5)代理程序(Agent)
部署在各个客户端(负载机),协调得到步调一致的虚拟用户
6)监控程序(Monitor)
监控主要的性能计数器
5、如何进行性能测试?
思路:围绕LoadRunner 性能测试工具
三大组件:1、VuGen 2、Controller 3、Analysis +4.Load Generator
LR测试流程:
使用VuGen录制脚本 -> 录制后需要调试脚本
(1、参数化;2、检查点;3、事务点; 4、集合点;5、关联;6、流程控制、函数调用等)
脚本分为:init 、 Action、 end
添加事务的目的:控制台运行后,会收集到事务的响应时间。
对事务进行并发测试:在事务之前,加入集合点
注意:集合点只能加在Action中
检查点函数:web_reg_find();
带有reg的函数,注册性函数,放在相应请求之前。
不同文件的格式和后缀:
脚本文件 *.usr
控制台文件 *.lrs 场景文件
结果分析文件 *.lra 分析文件
控制台结果文件 *.lrr Results -> Results Settings...
将调试好的脚本 -> 控制台中
可以选择:手工设置(Manual Scenario)
或 基于目标的设置 (Goal-Oriented Scenario)
一般选择手工方式,可以进一步选择是否以百分比方式划分VU
选择场景的类型:
场景中虚拟用户数
对虚拟用户的设置:
(初始化、开始运行、持续时间、何时停止)
可以监控系统资源:
可以监控某台服务器 192.168.0.68 AUT的多台服务器
或本地主机 localhost (学习时)
Run-time Settings (场景的优先级高)
迭代次数: 针对Action迭代
Pacing: 每次迭代之间的时间间隔
Log: 日志控制
Think time: 思考时间,每次请求之间的时间间隔
运行场景 ->
结果分析器: 查看结果是否符合性能需求
概要:事务平均响应时间、吞吐率、场景运行人数...
平均事务响应时间
吞吐率
点击率
资源图
...
提示:结合LR原理图分析