LoadRunner学习小汇总

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Abby312/article/details/49246537

1、什么是性能测试?

 性能测试是测试的一个方面,在给定的负载条件下,被测系统的各指标是否预期需求(性能需求)。

 比如:给定CPU、内存、磁盘、网络、事务响应时间等指标。如果发现与需求不一致,就发现性能瓶颈。

2、性能测试的目的?

  识别系统中的弱点、评估系统的性能、进行系统的调优。提高系统的可靠性、稳定性。

3、什么时候需要进行性能测试?

  对性能要求较高的行业:通信、银行、金融、证券、保险、搜索引擎等多用户的系统。

4、性能测试的工具--HP LoadRunner11

 补充:Apache JMeter 开源的、免费的 Java开发

         作为性能测试工具,测试Web应用、Tomcat性能

LR的组成部分(重点掌握3+1)

1)虚拟用户脚本生成器(Virtual User Generator)VuGen

捕获用户的业务流程、创建性能测试脚本,模拟单用户执行

2)压力调度控制台(Controller)

设置场景Scenario,工具场景配置(脚本、VU、VU行为、Runtime-Settings等)运行场景,收集测试数据;

3)压力结果分析器(Analysis)

根据测试数据,生成结果报告(大量的图表)

为后续性能分析提供重要依据;

4)负载生成器(Load Generator)

通过生成虚拟用户产生(模拟)实际的负载;

5)代理程序 (Agent)

部署在各个负载机,协调得到步调一致的虚拟用户;

6)监控程序(Monitor)

监控主要性能的计数器

5、如何进行性能测试?

思路:围绕LoadRunner性能测试工具三大组件-主要线索

LR的测试流程:

1)使用VuGen 录制脚本 -> 调试、增强脚本:

 1.事务点  2.检查点  3.参数化  4.集合点  

 5.关联    6.流程控制  7. 函数调用 等

 脚本分为:init 1次、Action n次、end 1次  

 添加事务的目的:场景运行后,会收集事务的响应时间

 对某个事务进行并发测试:

    在Action中,在事务开始之前,加集合点:

         lr_rendezvous("同事务名");

         lr_start_transaction("事务名");

 检查点函数:web_reg_find("Text=检查的文本", LAST);

     带有reg字样的函数,注册性函数,放在相应请求之前

     web_submit_form(...);  提交表单请求

 不同的文件格式:

        文件类型        后缀

      ----------   ----------

       脚本文件       *.usr   由VuGen保存

       场景文件       *.lrs    由控制台保存  Scenario

       结果分析文件  *.lra    由Analysis保存

       控制台结果文件 *.lrr    Result 结果

2)使用Controller,载入调试好的脚本,设置场景

 可以选择:手工场景 (Manual Scenario)

   或 基于目标场景 (Goal-Oriented Scenario)

 一般选择手工场景,可以进一步设置是否以百分比形式分配VU (目前不用百分比)

  选择场景类型:场景方式Scenario、组方式Group

  设置虚拟用户数、用户行为:

     Quantity (Basic Schedule 选择)

     初始化、加载方式、持续时间、退出方式

  设置Run-time Settings: (场景中优先级高)

     迭代次数:针对Action迭代

     Pacing: 每次迭代之间的时间间隔   秒

     Think time: 每个步骤之间的时间间隔  秒  思考时间

          共性:时间越长,压力越缓

     Log: 日志控制

     ...

   可以监控服务器的资源:

      可以监控n台服务器,监控CPU、内存、磁盘、网络等重要指标,为后续分析提供依据。

   运行场景 Start Scenario

   继续监控

3)通过Analysis生成结果,进行性能分析

 概要:平均事务响应时间、吞吐量、点击率、运行时间、用户数等。

 重要的图表:Graphs

    平均事务响应时间、吞吐率、点击率、资源图等。

提示:结合LR工具原理图、工具界面截图,理解和记忆。

如何将一个技术说清楚?3W1H

What? 是什么? 简单易懂 核心概念

Why?    有说明好处?优势?特点?

Where?  在哪使用?  应用场合

How? 怎么用?  具体实现步骤--结合项目 举例(素材)

1LoadRunner的三大组件简介,中英文名称?

答:1Virtual User Generator 虚拟用户脚本生成器VuGen 或 VUG

 功能:录制、编辑、调试脚本(增强) 1VU 回放

        运行时设置 (Run-time Settings)比如可迭代

 2Controller 压力调度控制台    压力由VU发起

 功能:设置场景、运行场景、监控场景,收集测试数据

 3Analysis 压力结果分析器

 功能:将收集到的测试数据以图表形式进行展示;

        便于得出性能测试报告。

2LoadRunner的原理?

答:录制--回放的工作方式

1)录制时,LoadRunner根据相关协议(比如Web[HTTP/HTML]协议)记录下客户端和服务器二者之间的对话。(对话包括请求和应答,脚本中主要记录请求)

2)回放时,LoadRunner模拟真实的客户端向服务器发起请求,并按照脚本去验证服务器的应答。(检查点)

3LoadRunner脚本的基本组成部分:

vuser_init.c   初始化脚本   1

Action.c       核心脚本      n

vuser_end.c   结束脚本     1

globals.h       头文件   通过LR函数的声明

*.c C语法  c语言的语法+LR定制函数、语法)

4什么是事务?为何要插入事务?

答:事务分为事务的开始、结束和之间的业务操作,事务是用于度量服务器性能的重要指标——事务响应时间

  事务Transaction: 表示一组相关的业务操作。

  我们可以将比较关心的某个或某些业务操作,设定为一个事务,LR运行场景后会记录下不同事务的响应时间(平均)。

事务函数:

 lr_start_transaction("事务名");   //开始事务

 相关的业务操作...

 lr_end_transaction("事务名称", LR_AUTO);  //结束事务

5负载测试和压力测试的区别?

答:1)共同点:都是逐步加压的测试(递增测试)

2负载测试:Load Testing

 是在正常范围内的测试。正常范围:性能需求范围、服务器和应用程序的各项指标能够承受的范围内。比如测试系统的最大并发用户数是否满足性能需求。

3压力测试:Stress Testing

 在极端范围内的测试。目的是测试出被测系统的性能极值,比如最大并发并发用户数。

并行:多个任务(进程/线程)占据各自资源(CPU资源)

         一起运行。

并发:多个任务(进程/线程)占据少量资源(CPU资源)

         看似一起运行。

 并发:  Concurrency

在线:Online 用户登录系统成功,用户在线,可以对系统进行不同功能点操作

基准测试、并发测试的概念和方法?

(1)基准测试就是单用户测试,作为其他测试标杆

需要用到VuGen、Controller、Analysis,获取测试结果

方法1:单用户循环n次  方法2:单用户持续执行n时间

(2)并发测试是多用户并发执行某一操作,形成瞬时压力,是一种严格的测试,主要考察系统对瞬时压力的承受能力

并发测试和在线测试的区别?

(1)区别:并发的压力是一种瞬时压力,在线的压力是一段时间内的压力

(2)1:10的比例关系

吞吐量和点击率的概念、区别?

(1)吞吐量(Throughput):用户从服务器给定1秒获得的全部数据量,单位:字节(Byte)  

是总量,累计时间内的全部数据量

(2)吞吐量/测试时间=吞吐率:体现传输效率

     反应服务器的处理速度、网络性能

(3)点击率(Hits per Second):客户端每秒向服务器提交的HTTP请求数(鼠标单击一次,可能是多个请求)

点击率越大,对服务器的压力越大,吞吐量逐步上升,上升多少取决于被测系统性能

QTP和LoadRunner的区别?

(1)QTP:能测试工具(自动化)

LoadRunner:能测试工具 可以测多用户(负载、压力)

(2)QTP关心的是界面(UI),关心的是对象(对象库);

     LR只关心客户端和服务器之间的数据包(请求包和应答包),不关心对象,更不需要比对对象的属性值,只关心抓包(捕捉数据包)

如果用户界面变了,但是业务逻辑不变:

QTP的脚本需要变化;LR脚本不需要改变

(3)LR关心的是客户端和服务器之间的对话,前提是选择正确的网络协议(相当于网络通信的语言)

(4)LR不能补录,录制失败,从头再来

1、基准测试 -- 后续其它测试的基础

 方法1:单用户循环执行n

 方法2:单用户持续执行n时间

2、并发测试 -- 测试系统在瞬时较大压力下的承受能力

1)设置集合点

2)设置并发策略

3)场景其它设置:1次迭代,忽略think time

3、参数化  

使用LR变量代替之前脚本中的常量(字面值) 

{LR变量名}  数据由参数池提供(数据、策略)

综合场景测试:

多用户、多脚本(任务/测试点)、在线运行一段时间(1h左右)

更真实模拟实际生产环境:

1、脚本录制和增强:

根据测试计划,业务流程、用例、协议录制脚本;

增强:事务、检查点、参数化、关联、流程控制…

细节:将事务内的think time转移

2、场景中:(Scenario共享场景/Group独立场景)

设定不同组、管理不同脚本、UV比例

VU行为:初始化、加载方式、持续时间、退出方式

Run-time Setting

迭代测试:PacingLogthink time、错误处理、多线程模拟VU、网络、浏览器缓存、超时时间

系统资源的监控:13+1项   包括cupmemorynetworkdisksystem

展开阅读全文

没有更多推荐了,返回首页