loadrunner性能测试基础

一、Loadrunner概述

(一)包含组件

LoadRunner 为访问所有 LoadRunner 组件的统一界面。 可在此进入其下三个组件
在这里插入图片描述

  1. Virtual user Generator虚拟用户(vuser)脚本
    创建不同类型的测试脚本适用于各类系统的模拟报文发送。

  2. Controller控制器
    将虚拟用户脚本单用户执行转为用户并发执行,形成负载场景Scenario。用于组织、驱动、管理和监控负载测试。

  3. Analysis 分析器
    对测试结果查看、分析,形成压力测试报告。

(二)性能测试流程

  1. 性能测试需求分析:系统吞吐量目标,机器性能参数,关联系统

  2. 性能测试计划:制定测试计划,持续时间

  3. 性能测试准备:测试环境准备,测试参数调整

//循环过程

  1. 开发脚本、执行测试:开发相关模拟用户脚本,创建并发场景,执行测试计划
  2. 测试结果分析:查看分析Analysis 结果,查看分析系统性能参数
  3. 系统调优:相关性能参数修改,服务器资源配置
  4. 编写测试报告:测试报告总结修改

(三)常用指标

  1. 响应时间(response time)
    网站响应时间:2-5-8原则
    接口响应时间:越小越好
  2. 吞吐量(throughput)
    单位时间内客户端和服务器传输数据量(TPS)
  3. 资源使用率(resource utilization)
    常见的有CPU、MEM、I/O、NIO
  4. 每秒点击数(hits per second)
    客户端每秒向服务端提交请求数量
  5. 并发用户数(concurrent users)
    在客户端的一批用户同时执行一个操作的数量。并发数反映了系统并发能力

误区:使用系统的全部用户数,用户在线数量

二、Virtual user Generator使用

在物理机上使用vuser代替实际用户,可重复、可预测的方式模拟典型用户操作,对系统施加负载
在这里插入图片描述

(一)建立java脚本

点击新建,选择java vuser。

扫描二维码关注公众号,回复: 11203357 查看本文章

适用范围:不支持录制脚本业务,java相关的系统
在这里插入图片描述

  1. 初始化方法

Ø Vuser_init:业务流程开始前的初始化操作(登录、服务器初始化)

Ø Action:业务流程操作事件

Ø Vuser_end:业务流程结束时执行的操作(退出、注销)
在这里插入图片描述
Init和end只能迭代一次,Action可以迭代运行多次
业务有重复要求的,需要区分三类方法;无重复要求可以将其他两方法空着。

  1. JVM及第三方java包引入

可在运行时设置中引入java vuser所需要的java包,并在脚本中import对应java包,在方法中就可以引用相关java包的class

注意:loadrunner11 最高支持1.6版本jdk
在这里插入图片描述

(二)编辑脚本内容

1. 事务(transaction)

定义:衡量对应事务操作的性能,在操作开始和结束插入的标志。

作用:loadrunner可以记录事务时间,反映的时一个操作过程的响应时间
在这里插入图片描述

可以右键选择插入开始/结束事务

2. 思考时间(think time)

定义:思考时间是为了模拟用户操作,设置的模拟等待时间

作用:可以更接近真实用户操作,也可以插入事务中,降低用户并发

使用:

  1. 在脚本中插入语句 lr_think_time(20);
    在这里插入图片描述
  2. 在运行时设置中配置思考时间
    在这里插入图片描述
    ü Ignore think time 忽略思考时间,在脚本中设置的思考时间也会无效
    ü Replay think time 回放思考时间
    ü As recorded:取决于记录,使用脚本中设置的思考时间
    ü Multiply recorded think time by:录制思考时间乘以,使用思考时间的倍数
    ü Use random percentage of recorded think time:使用录制思考时间的百分比范围
    ü Limit think time to:设置思考时间的最大值

3. 参数化(parameter)

定义:将固定内容转为可变参数

作用:将重复的东西变成不重复的,应用在日期、时间、流水号等

使用:

新建参数
在这里插入图片描述

选择参数类型
在这里插入图片描述

设置:

  • Parameter type 参数类型

ü Date/time 日期时间

ü File 文件

ü Iteration number 迭代数

ü Random number 随机数

ü Unique number 唯一数

  • Select next row 选择下一行

ü 顺序(sequential):按参数化的数据顺序,一个一个来

ü 随机(rundom):参数化中的数据,每次随机抽取

ü 唯一(unique):为每个虚拟用户分配一条唯一数据

  • Update value 更新时的值

ü 每次迭代(each iteration):每次迭代时取新值,在脚本迭代时更新

ü 每次出现(each occurrence):每次参数化时取新值,可能前后两次用同一参数,此时取值不一样

ü 只取一次(once):参数化中数据,一条数据只取一次

4. 日志(Log message)

作用:脚本验证时可以通过日志来了解脚本执行的内容

使用:

  1. 右键插入日志信息
    在这里插入图片描述

  2. 直接在脚本中写入

lr.log_message(“log1”);
在这里插入图片描述

  1. 运行配置中配置日志
    在这里插入图片描述

ü Enable logging:使用日志

ü Log options:

ü Send messages only when an error occurs:只有当发生错误时才发送日志信息

ü Always send messages:总是发送日志

Standard log 标准日志

Extended log 扩展日志

	Parameter substitution 显示参数赋值取值
	
	Data return by server 显示服务器返回的数据
	
	Advance trace 高级的追踪

5. 步调配置

配置脚本执行步调,迭代次数,前后间隔时间
在这里插入图片描述

Number of iterations:设置Action的迭代运行次数

As soon as the previous iteration ends:在前一次迭代结束后直接下一次

After previous iteration ends:在前一次迭代结束后延时多少时间进行下一次 fixed(固定)、random(随机)

At fixed/random intervals every sec:在前一次和下一次之间的时间,包含前一次的执行时间

6. 其他配置

错误处理,进程和线程,自动化事务
在这里插入图片描述

Error handing 错误处理,按默认即可

Multithreading 进程与线程,按线程运行虚拟用户

Automatic transactions 自动化事务,默认情况下不选择,在脚本中自行定义事务

注意:在controller中一个action和我们自行定义的事务重复出现,将自动化事务中的两个勾勾上后再去掉,重启后解决改问题

(三)负载前准备

  1. Generate:单交易编译运行,编辑验证脚本

  2. SUSI(single user single iteration,单用户单循环):直接编译运行脚本

  3. SUMI(single user multi iteration,单用户多循环):参数化脚本在运行时配置中设置iteration次数,验证参数化情况

  4. MUSI(multi user single iteration,多用户单循环):controller中多用户运行脚本,验证脚本中可能的多线程问题

  5. MUMI(multi user single iteration,多用户多循环):性能测试开始

(四)自带常用函数

1. 事务函数

lr.start_transaction("start");
lr.end_transaction("start",lr.AUTO);

2. 日志函数

lr.debug_message(0,"start");
lr.error_message("start");
lr.output_message("start");

3. 控制函数

lr.abort("start");
lr.continue_on_error(1);
lr.exit();

三、Controller 使用

使用controller 将vuser执行脚本从单用户转换为多用户,模拟大量用户操作,对单脚本和多脚本业务操作的组合模拟实际业务操作过程,形成类似于真实环境的负载场景。
在这里插入图片描述

场景(scenario)

用来模拟大量用户操作的技术手段,通过配置和执行场景对服务器产生压力,验证系统性能是否达标。

Controller 管理场景包括:设计场景(design)、运行场景(run ,场景监控)。

(一)建立场景

在vuser tools中选择创建 controller场景
在这里插入图片描述
创建场景方式:
在这里插入图片描述
Goal oriented scenario目标场景

Manual scenario 手工场景

Load generator 负载生成器

Group name 组名

Result directory 运行结果保存路径

注意:负载生成器生成每个vuser大概花2-3M内存,直接单机测试时,若vuser数量要求较多,对压测机器内存性能要求较高。当内存使用率超过 70%时,该机器就成负载测试瓶颈,影响测试性能。可以使用其他装有LR Agent的机器来生成vuser。

1. Manual scenario 手工场景

定义:自行设置vuser变化,通过设计用户添加和减少的过程,模拟实际用户请求。

作用:用于定位性能瓶颈,了解系统并发处理能力,在负载测试和压力测试中应用。

使用:
在这里插入图片描述
Scenario group 场景组合

添加组、脚本、vuser数

Scenario schedule 场景计划

schedule by

Scenario多个脚本之间按照设定的场景计划来统一运行

Group 多个脚本之间按照独立设置的模式跑,单独设置虚拟用户和运行时间

Run mode

Real world schedule 实际计划,可以多个用户变化过程

Basic schedule 基本计划,只能设置一次运行设置,不能设置用户变化

Global schedule 全局计划

Initialize 初始化设置

Start vusers 运行虚拟用户设置

Duration 运行时间设置

Stop vusers 停止虚拟用户设置

2. Goal oriented scenario目标场景

定义:设置一个目标,自动化负载。

目标场景类型:

Virtual users:虚拟用户数量,验证所需支持的用户数

Hits per second:服务请求响应数,验证每秒可处理请求数

Transctions per
second:tps 每秒事务数,验证系统处理操作能力

Transctions
response time:事务响应时间,验证系统压力下所需要的响应时间

Pages per minute:每分钟页面刷新次数,验证系统整理处理能力

适用:验证系统各方面能力是否达标。

3. SLA service level agreement 服务水平协议

定义:负载测试具体目标定义,在运行结束后会与定义的目标值进行比较,SLA状态表示是否符合所定义的服务标准(运行的vuser数,吞吐量,响应时间等)。

(二)监控场景

监控loadrunner中的场景运行图形来确认系统性能情况,确定是停止或继续场景执行,查看场景中的错误
在这里插入图片描述

Scenario group开始场景组成部分
在这里插入图片描述

Scenario status 场景状态
在这里插入图片描述

联机图像查看
在这里插入图片描述

图像度量
在这里插入图片描述

1. 监控loadrunner性能指标

1. Running vusers 正在运行vusers

可以监控在指定时间内运行的vuser数量
在这里插入图片描述

可调整用户运行状态及用户运行数量
在这里插入图片描述

2. Trans response time 事务响应时间

可以监控每个事务响应时间变化趋势

在这里插入图片描述

3. Trans/sec passed 每秒成功通过的事务数

可以监控tps
在这里插入图片描述

场景运行状态中可以查看tps,及错误详情
在这里插入图片描述
在这里插入图片描述

4. Total Trans/sec passed 合计每秒成功通过的事务数

可以监控系统总体性能情况
在这里插入图片描述

2. 监控服务器资源性能指标

CPU 处理器性能

MEM 内存性能

I/O 磁盘性能

NIO 网络读写性能

原创文章 15 获赞 5 访问量 1282

猜你喜欢

转载自blog.csdn.net/qq_21271511/article/details/106150203