当前位置: 首页 > article >正文

LoadRunner实战测试解析:记录一次性能测试过程

环境准备

PC: Windows7/XP

LoadRunner11: 与win10及以上版本不兼容

Nmon: 性能监控工具,部署到被测服务器

LoadRunner破解安装

下载地址:https://pan.baidu.com/s/1WJjcFWhrkWW-GgYwXdEniQ
提取码:f4zc

破解方法
  • 正常安装LoadRunner11,安装完成后,不要打开;

  • 用LR8.0中的mlr5lprg.dll、lm70.dll覆盖LR11安装目录下“bin”文件夹中的对应文件;(文件在上面地址下载的文件中)

  • 运行deletelicense.exe;

  • 然后使用老的注册码就可以使用了;

    global-100: AEAMAUIK-YAFEKEKJJKEEA-BCJGI
    web-10000: AEABEXFR-YTIEKEKJJMFKEKEKWBRAUNQJU-KBYGB

备注: global-100:最高100并发的license,web-10000:最高10000并发的license。

Nmon安装

下载地址:https://sourceforge.net/projects/nmon/

根据自己的系统下载对应的包,解压到服务器即可。

nmon_analyser工具:
https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Power+Systems/page/nmon_analyser
下载后直接解压出模板(nmon analyser v51_2.xlsm),用于最后制图。

测试指标准备

交易响应时间

用户从客户端发起一个请求,到客户端接收到从服务器返回结果的响应结束,整体过程所耗费的时间;
响应时间=网络传输时间+服务器处理延迟时间+数据库服务器处理延迟时间,简单交易小于1.5s,一般交易小于3s,复杂交易小于5s。

业务处理能力(TPS)

每秒处理交易笔数
以82原则计算交易峰值负载:
3000人测试人员,每日提交缺陷10个,任务领取5个,任务列表20,执行列表20次,上传图片5次,上传视频5次,下载测试报告5次,导入用例3次。
日交易总量为:300073=219000,
日交易量 = 交易总量合计(219000) * 80% =T T =175200
日交易时间 = 营业时间8小时
20% =1.6
TPS目标计算为: T /1.6 / 3600 = 30.41笔/秒

并发用户

系统需求的最大使用人数

系统处理正确性

在负载情况下,交易错误率。错误率=(失败交易数/交易总数)*100%。

备注: 不同系统对错误率的要求不同,但一般不超出千分之五。稳定性较好的系统,其错误率应该由超时引起,即为超时率。

业务处理稳定性

系统在标准压力(系统的预期日常压力)情况下,能够稳定运行。
备注: 一般来说,对于正常工作日(5X8小时)运行的系统,至少应该能保证系统稳定运行10小时以上。对于7X24运行的系统,至少应该能够保证系统稳定运行48小时以上。

系统资源

CPU<=80%
内存使用率无明显上升趋势
磁盘繁忙率<=80%

测试数据准备

测试数据使用接近真实生产环境的测试数据,多用户与多数据。数据库中要有铺底数据,测试系统在正常大量存量数据下的表现。

场景设计

基准测试场景

以1名虚拟运行100次,迭代循环分别运行每个交易脚本,检验脚本的业务正确性,获取性能基线。

单交易负载测试场景

以多个虚拟用户分别运行每个脚本,设定并发用户数序列,收集系统在不同负载级别下的性能表现,检查系统在整体上应付不同用户负载的可伸展性。检验每个业务在负载下的表现,初步暴露并隔离性能缺陷。

负载均衡与可靠性测试

验证系统(包括应用、网关服务器、文件服务器及数据库服务器)在可靠性,涉及(容错性,失效恢复能力,扩展性等)。
容错性测试方法,依据测试模型发起系统处理能力50%的压力,对单点应用(或数据库)分别进行停服务(正常停止和KILL)、宕机等异常操作后,系统仍可以提供正常业务处理。

混合交易负载测试场景

按业务模型中确认的比例分配虚拟用户,将多个交易脚本组合在一起运行,根据基准及单交易测试结果设定操作延时,设定负载序列,并发用户数为最大,检查系统在当前业务负载模式下的可用服务水平,是否符合需求

稳定性测试场景

按业务模型中确认的比例分配虚拟用户,将多个交易脚本组合在一起运行,根据基准及单交易测试结果设定操作延时,设定负载序列,并发用户数为最大并发数的80%,设置场景运行时间为48小时,检查系统在当前业务负载模式下的可用服务水平,是否符合需求

测试范围选取(业务选取)

对于我们测试性能需要选择哪些交易,我们一般参照以下原则:

已上线系统:

  • 测试交易要覆盖各个渠道;
  • 一般系统:选取日均交易量TOP20、TOP10的交易;
  • 选取生产上曾经出现或者容易出现问题的交易;
  • 选取生产上占用资源较高的交易;
  • 选取业务逻辑复杂的交易;
  • 选取交易路径较长的交易;
  • 选取处理时间较长的交易;
  • 选取特殊需求的交易(测试并发、测试登陆)。

未上线系统:

  • 测试交易覆盖各渠道;

  • 选取预期交易量大的交易;

  • 选取预期交易量增长迅速的交易;

  • 选取占用资源较高的交易;

  • 选取交易路径较长的交易;

  • 选取处理时间长交易;

  • 选取业务逻辑复杂的交易;

  • 选取频繁调用数据库的交易;

编写脚本

LoadRunner三大组件:

  • 脚本编辑器:录制和编写性能测试脚本。
  • 控制台:设置脚本测试场景并进行测试。
  • 结果分析器:分析测试结果

编写脚本

params传参方式:

Action()
{
    //设置变量字节大小
    web_set_max_html_param_len ("24470000");
     
    //根据左右边界截取整个返回值,存在变量result中
    web_reg_save_param("message", //变量名称
        "LB=\"message",           //左边界
        "RB=\"}",                 //右边界
        "Search=Body",
    LAST);
 
    lr_start_transaction("login"); //事务开始
 
    lr_think_time(44);              //等待时间
 
    web_submit_data("signin_2",    //请求名称
        "Action=http://127.0.0.1:8080/user/login", //接口地址
        "Method=POST", //接口请求方式
        "RecContentType=text/html", //返回类型
        "Referer=http://127.0.0.1:8080/user/login", //返回地址
        "Snapshot=t2.inf", //脚本唯一标识
        "Mode=HTML", 
        ITEMDATA, //请求参数
        "Name=data", "Value={\"device\":.0.1\"}", ENDITEM, 
        LAST);

    lr_end_transaction("login",LR_AUTO);//事务结束
 
    //很多时候返回值有中文,需要转码,转码后的值存在了msg中
    lr_convert_string_encoding(lr_eval_string("{message}"),"utf-8",NULL,"msg");
    //对比返回结构
    result = strcmp(lr_eval_string("{msg}"),lr_eval_string("\":\"登录成功!")); 
 
    if(result == 0){
        //打印返回值
       lr_log_message("转换编码后---------%s",lr_eval_string("{msg}")); 
       return 0;
    }
    else{ 
        lr_log_message("%s",lr_eval_string("登录失败"));
        //打印返回值
        lr_log_message("转换编码后---------%s",lr_eval_string("{msg}")); 
        return -1;
    }
        
}

JSON传参方式:

Action()
{
    //设置变量字节大小
    web_set_max_html_param_len ("24470000");
     
    //根据左右边界截取整个返回值,存在变量result中
    web_reg_save_param("message", //变量名称
        "LB=\"message",           //左边界
        "RB=\"}",                 //右边界
        "Search=Body",
    LAST);
 
    lr_start_transaction("login"); //事务开始
 
    lr_think_time(44);              //等待时间

    //添加请求头
    web_add_auto_header(“Content-Type", “application/json",);
 
    web_custom_request("signin_2",    //请求名称
        “URL=http://127.0.0.1:8080/user/login", //接口地址
        "Method=POST", //接口请求方式
        "RecContentType=application/json", //返回类型
        "Referer=http://127.0.0.1:8080/user/login", //返回地址
        "Snapshot=t2.inf", //脚本唯一标识
        "Mode=HTML",
        “Body={\"device\":.0.1\"}", 
        LAST);

    lr_end_transaction("login",LR_AUTO);//事务结束
 
    //很多时候返回值有中文,需要转码,转码后的值存在了msg中
    lr_convert_string_encoding(lr_eval_string("{message}"),"utf-8",NULL,"msg");
    //对比返回结构
    result = strcmp(lr_eval_string("{msg}"),lr_eval_string("\":\"登录成功!")); 
 
    if(result == 0){
        //打印返回值
       lr_log_message("转换编码后---------%s",lr_eval_string("{msg}")); 
       return 0;
    }
    else{ 
        lr_log_message("%s",lr_eval_string("登录失败"));
        //打印返回值
        lr_log_message("转换编码后---------%s",lr_eval_string("{msg}")); 
        return -1;
    }
         
}

设置场景

在LoadRunner控制台,添加需要测试的脚本,设置每个脚本的Vuser数量。
在这里插入图片描述

用户加载方式

Initialize:初始化虚拟用户,同时初始化、间隔初始化、运行前初始化。
Start Vusers:启动虚拟用户,同时启动、间隔启动。
Duration:运行时间,运行至结束、选择固定时间。
Stop Vusers:停止虚拟用户,同时结束、间隔结束。
在这里插入图片描述

Run-Time Setting设置

主要是脚本运行设置,包括:循环方式、请求间隔、日志、等待时间、代理等。
在这里插入图片描述

Run Logic: 运行逻辑,设置每个模块的重复次数。
在这里插入图片描述

Pacing: 每个请求的间隔时间,根据业务需求和实际脚本TPS设置。
在这里插入图片描述

Log: 日志记录,取消日志记录,记录日志会消耗LoadRunner的PC机大量存储。
在这里插入图片描述

Think Time: 脚本中的等待时间,需要忽略脚本中的等待时间,否则无法达到预期的系统压力。
在这里插入图片描述

Miscellaneous: 其他选项,Error Handing,选择错误后继续,防止报错后,测试停止。
在这里插入图片描述

Browser Emulation: 浏览器模拟,取消勾选下载非HTML资源。
在这里插入图片描述

Preferences: 偏好设置,勾选Enable Image and text check,增加检查点。
在这里插入图片描述

服务器监控

LoadRunner自带事务相关监控及结果,服务器监控使用nmon工具进行监控,在压测期间启动nmon进行服务器各项资源监控。

nmon使用方法
./nmon -s10 -c60 -f -m /test/

参数说明

-s10 每 10 秒采集一次数据。
-c60 采集 60 次,即为采集十分钟的数据。
-f 生成的数据文件名中包含文件创建的时间。
-m 生成的数据文件的存放目录。
这样就会生成一个 nmon 文件,并每十秒更新一次,直到十分钟后。
生成的文件名如: _090824_1306.nmon ,“” 是这台主机的主机名。

将生成的文件导入到nmon_analyser工具,生成服务器资源监控结果


http://www.kler.cn/a/320352.html

相关文章:

  • 天童美语:下元节将至
  • Vue 3 中 ref 属性详解:操作 DOM 元素的利器
  • 【插件】重复执行 pytest-repeat
  • 说说软件工程中的“协程”
  • React教程第二节之虚拟DOM与Diffing算法理解
  • Linux下编译MFEM
  • 监控IDS和IPS增强网络安全性
  • pyformat - 格式美化 Python 代码
  • iptables和nftables
  • C++学习笔记(43)
  • react hooks--React.memo
  • 表格的大小和什么相关
  • 删除搜狗拼音输入法,右键菜单打印及pdf操作
  • matlab的‌基础语法和数据类型
  • Python 将数据写入 excel(新手入门)
  • x-cmd pkg | eza - ls 命令的现代替代品,终端用户必备工具
  • HTML和CSS中的浮动以及边框塌陷解决方案(内置练习及答案)
  • 前端框架对比、分析与选择
  • linux 下域名解析错误
  • 计算机毕业设计Hadoop+Spark知识图谱美团美食推荐系统 美团餐厅推荐系统 美团推荐系统 美食价格预测 美团爬虫 美食数据分析 美食可视化大屏
  • Linux中使用Docker容器构建Tomcat容器完整教程
  • 【计算机网络 - 基础问题】每日 3 题(二十四)
  • 神经网络(三):VGG16
  • 如何在 Apache 中仅开启 TLS 1.3 / TLS1.2 ?
  • FinalShell 和 FileZilla 的区别
  • 桌面专业版【ssh配置】