LoadRunner性能测试基本步骤

前言

本文旨在指导初学者使用LoadRunner进行基础的性能测试。
我们在接到一个性能测试任务的时候,需要从以下几点考虑:我们的测试对象是什么,测试要求是什么,测试环境怎么部署的,业务规模如何,哪些业务点是客户最关注的等等,下面将从性能测试启动开始讲解基本的测试流程。

1、测试脚本录制

在使用loadrunner工具前,需确定哪些业务需要使用该工具进行测试,不需要的时候坚决不用,不要认为这个工具万能。以本次测试中的综合查询(预付费综合业务信息查询)为例进行讲解。

1.1录制前准备工作

在录制脚本前需检查压测环境的整体功能是否正确,待测部分的功能是否正确,只有确保功能正确后才可进行压测。如本次测试,可先验证50环境是否正常,CICS服务器(49)是否正常,/var/cics_regions目录的使用率是否过高等等,一切确定OK后,开始验证功能,这些都保证没有问题后,检查一下测试工具loadrunner是否正常使用,可简单的点点用用,确保工具OK。

1.2录制及调试脚本

在准备工作OK后,进行脚本的录制,具体过程如下:

1、打开“开始->程序->Mercury LoadRunner->Mercury LoadRunner”出现下图

在这里插入图片描述
2、点击“Create/Edir Scripts”,出现下图,如果没有出现,则可在“File”下选择New新建。

在这里插入图片描述

3、出现这个界面后,选择Web(HTTP/HTML)协议,我们测试的是B/S模式,采用的是Web协议。选择后,点【OK】按钮。出现下图:

在这里插入图片描述

4、点击界面中的Start Record,这个表示开始录制脚本,点这个按钮后,出现下图:

在这里插入图片描述

图中的URL输入待测的网址,如本次测试网址:http://10.243.211.50/boss/loginauthservlet
在Record into Action中选择vuser_init,把登录部分放在vuser_init中,vuser_init与vuser_end在测试过程中仅执行一次,这里解释一下,Action的作用是讲测试功能主体放在里面执行,举例,假如做产品转换,我们讲登陆的部分放在vuser_init中, 具体业务操作放在Action中,退出部分放在vuser_end。这样,我们将压力集中在业务操作上,而不是登陆退出上。同时,可以创建多个Action,将业务操作分成多个部分,比如用户鉴权放在Confirm中,将选择产品放在Select_Prod中,将业务分开放在多个Action的好处是可以统计这个操作的处理时间,处理速度等,便于定位问题。

Action的增加、修改、删除:Action可以在录制前增加,具体方法是选中界面左边的
在这里插入图片描述
部分,然后点右键,可以看到有增加Action的按钮(Create New Action),也可进行删除、重命名。在测试前可以根据需要将业务分为几个操作部分,建立对应的Action,名称最好能清晰操作部分的功能。录制脚本的时候,可以将对应的操作放在对应的Action中。

这里我们假设综合查询需要以下几个步骤:

第一、登陆

第二、进入菜单

第三、输入测试号码、提交查询

则可设计Action为这几个:vuser_init(这个默认有)、IntoMenu、SubQue

5、设置好后,点【OK】,进行录制,在录制前,如果已经打开待测页面的话,建议关闭该页面。点【OK】后,这时会出现待测页面,如http://10.243.211.50/boss/loginauthservlet,同时会出现

在这里插入图片描述

,这表示现在已经开始录制,可根据需要将业务放在一个Action中,也可以分成多个,放在多个Action中,具体方法是在进行下一个业务操作前,点上图中的,选择对应的Action,如果事先没有创建Action的话,则可点击
在这里插入图片描述

增加新的Action。

在页面中输入用户名后,登陆到系统,待页面都加载完毕后,将vuser_init改为IntoMenu,点击相应的菜单,如查询统计 -> 营业受理查询 -> 预付费查询 -> 预付费综合业务信息查询,页面加载完毕后,将IntoMenu改为SubQue,在“服务号码:”中输入号码13539300000(测试号码),点击【查询】,待页面返回查询结果后,将SubQue改为vuser_end,退出系统。

注:页面加载完毕可以参考网页左下角有个信息提示“完毕”。

所有操作完成后,点击

在这里插入图片描述

中停止按钮
在这里插入图片描述

,停止录制,页面将自动关闭,返回到loadrunner录制界面,将在界面中显示录制脚本代码,保存录制的脚本。

6、调试代码并进行参数化

录制后的代码需要进行调试才可用于压测,调试的办法就是进行回放操作,如果回放过程无错误,运行结果也正确的话,则可用于压测。具体调试步骤如下:

点击界面中的,进行单次运行调试,运行后,会弹出运行预览的一个窗口,可以看到每一个Action的执行过程,运行结束后,会出现一个结果报告,如果有错误,会在报告中以红色叉标志显示出来,同时在Execution log中也会打出错误信息,可以根据这些错误信息进行调试。如果无错误,则可进行插入事务、参数化设置等其他操作。现假设调试无错误,进行参数化设置。

在测试过程中,有可能需要不同的测试号码,如果产品转换,首次激活等,如果有同样的号码将导致测试失败,因为相同的号码不能做同样的业务操作多次,所以需要大量不同的测试号码,这个就需要用到参数化设置。我们在编写测试方案的时候,已经得出要准备多少测试号码,在测试工作准备的时候,已经准备好测试号码,那么可以利用这些准备的号码进行参数化设置。参数化设置的意思就是将需要用其他数据代替的地方设置为一个参数,在运行时读到这个参数,就使用其他的值代替,在这个例子中,我们需要设置参数的地方是服务号码。这样,我们需要先创建一个参数,步骤如下:

先准备好号码,可在数据中导出,存放在txt文本中,格式为:测试号码,一行一个号码,最后一行要为行,如果文件名为test_num.txt

a、点击界面中

在这里插入图片描述

,出现下面界面

在这里插入图片描述

在这个界面中,点击左边的New,创建一个新的参数,在界面的右边,Parameter type选择File,File path选择存放号码的txt文件路径,选定文件后,会在下面的表格中列出测试号码,我们在Select next row中选择Unique,这个表示整个测试过程仅使用唯一的号码,保证号码不重复,这样就要号码资源足够多,同时测试时间也需要控制好,否则会报错。

创建好参数后,返回到刚才录制的脚本中,找到对应的Action,如SubQue中服务号码字段,选择该号码,右键选择“Replace with a parameter”,在Parameter name的下拉列表中选择需要替换的参数,选定后点击OK。

设置OK后,可进行调试,如无问题,则可以进行场景的设置。这里有个注意点要说明一下,参数化也可以直接在脚本中选中需替换的地方,点右键,选择“Replace with a parameter”,改更Properties进行设置,但这样做经常出问题,不容易调试,不建议这样做。

2、设计测试场景

在脚本录制完成,调试通过后,可以进行测试场景的设计。具体步骤如下:

1、打开“开始->程序->Mercury LoadRunner->Mercury LoadRunner”出现下图

在这里插入图片描述

2、点击图中的Run Load Tests,出现下图界面

在这里插入图片描述

在新建场景的窗口,选择一种场景类型。下面对三种类型进行简单的说明。

  Manual Scenario:该项要完全手动的设置场景。

 Manual Scenario with Percentage Mode:该项只有在“Manual Scenario”选中
的情况下才能选择。选择该项后,在场景中我们需要定义要使用的虚拟用户的总数,
Load Generator machine 机器集,然后我们为每一个脚本分配要运行的虚拟用户的
百分比。

2 Goal—Oriented Scenario: 在测试计划中,一般都包括性能测试要达到的目标。
选择该项后,LoadRunner 基于这个目标,自动为你创建一个场景。在场景中,我
们只要定义好我们的目标即可。

3、在上图中出现的Available scripts,选择要进行场景设计的脚本,若没有出现需要对应的脚本,可点击Browse查找后添加进来,选择好脚本后,点Add,则可加入到右边的窗口中,然后点【OK】,出现下图

在这里插入图片描述

4、上图中的ScenarioGroups,显示的是脚本的路径与并发数个数,根据测试方案中的并发数可更改此处的并发数,在上图中点击Edit Schedule,出现下图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

举个例子,假如我们设计的场景是每15秒增加2个,所有并发数增加完后持续运行5分钟,5分钟运行结束后,每30秒减少5个并发,则上面三张图的设置就行了,注意那个Initialize…必须勾选上。

5、再点击页面右下角的“Run-time Settings”,出现下图

在这里插入图片描述

选择图中的Think Time,在右边选择Replay think time,再勾选中Limit think time to:1 seconds,表示即使脚本think time时间可能超过1秒,也用1秒替换,可以自行调整这个时间。这样做的目的是在测试过程中使得每个业务操作里加上think time,表示用户在操作的时候,有个时间延迟,真实的模拟用户的操作,比如用户在做产品转换的时候,可能在选择产品的时候,有个停顿思考的时间,这样loadrunner会记录下来。如果选择Ignore think time,这样对服务器造成的压力是最大的,在运行时,会没有停顿的,持续对服务器加压,不太符合实际使用情况。
设置好Think Time后,选择Miscellaneous,在出现的窗口中勾中Continue on error,表示在遇到错误的时候,继续执行场景,直到场景运行结束。

6、一切设置OK后,点击

在这里插入图片描述
,运行测试场景,如下图

在这里插入图片描述

在图中的左边可以查看并发用户数的运行情况,右边可以查看通过的事务数、失败的事务等,如果运行过程中有错误出现,则可以点击Errors右边的放大镜,查看详细错误信息。窗口下面是各种监控窗口,Running Vusers展示的是目前并发用户数的运行情况,Trans Response Time表示的是事务的响应时间,即每个事务处理的时间是多少秒。

3、测试结果分析
场景执行结束后,可以使用loadrunner自带的分析工具进行结果分析,这里我们主要考察两个地方,第一是平均事务响应时间Average Transaction Response Time,第二是并发数运行情况Running Vusers,这两个显示了场景运行过程中并发数的执行情况与每笔事务的处理时间。还有其他几个考察点,做简要解释。
注:事务数概念解释:事务就是脚本中定义的每个Action。
具体分析步骤是先打开“开始->程序->Mercury LoadRunner->Mercury LoadRunner”出现下图

在这里插入图片描述
点击Analyze Load Tests,出现下图

在这里插入图片描述

在图中的菜单栏中选择打开,找到要分析的场景执行结果,点【打开】即可,还可以直接在场景运行结束后,点击Controller菜单栏的
在这里插入图片描述

,直接收集场景运行结果进行分析。

打开场景执行结果后的界面如下:

在这里插入图片描述界面左边是各个指标的列表,右边是图形的显示,下面是指标对应的采集数据。接下来将重点选择几个指标做解释。

3.1 并发数执行情况(Running Vusers)

并发数执行情况反映了在场景执行过程中各个并发数的运行情况,成功了多少,失败了多少,是否按照既定的场景执行计划运行,是否达到预期的执行效果,如果在某个时间,执行失败了,或者存在异常,那么并发数的图表将是波动,可以从图中直观的看出来,同样根据场景中Error的信息,定位在何时出现了错误,此时执行的并发数是多少。并发数的图表如下:

在这里插入图片描述

3.2事务通过数(Throughput)

事务通过数的意思是每个特定时间间隔内通过的事务数,如果随着场景执行时间的推延,通过事务数曲线应该是平缓的,如果突然上升,则可能是服务不稳定,或者网络因素导致的,如果持续下降,则表示服务的处理能力在下降,此时可以查看服务器段是否有进程堵塞,或者服务器的连接数不够,也可能是网络带宽不够。事务通过数的图表如下

在这里插入图片描述

  3.3平均事务响应时间(Average Transaction Response Time)

平均事务响应时间在整个测试过程中是一个很重要的参考指标,他能清晰的反映出场景执行过程中,每个事务的执行时长,整个业务中哪个操作最耗时等等。场景执行结束后,可以根据这个图表分析出在一定响应时间要求下,系统可支持的并发数,假如我们要求在查询的时候要求这个返回结果的时候不超过5秒,那么可以在场景中找到对应的SubQue事务在处理时间为5秒左右的时间点,再从Running Vuser图中找到对应的时间点,查看对应的并发用户数。同样,在整个执行过程中,当并发数达到一定数值后,平均事务响应时间曲线应该是平缓的,如果出现突然升高或者降低的情况,则表示系统存在异常,这样我们可以找到这个时间点去查看服务器端的运行日志,查找原因。平均事务响应时间的图表如下:

在这里插入图片描述

3.4服务器资源分析

服务器资源监控利用的是nmon工具,在得出分析结果后,可以查看对应的图表进行分析。

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/610539.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

这是一关于DSC相关的文档

这是一关于DSC相关的文档 上面这幅图清晰的展示了somewhat flat的像素图示

CRMEB 开源/标准版商城系统客服配置教程

管理后台/设置/系统设置/商城配置/客服端配置 有系统客服/拨打电话/跳转链接可选,系统客服为系统自带的客服系统,拨打电话为用户点击联系客服为拨打客服电话的方式,跳转链接为可以跳转自己开发的客服系统或者第三方的客服系统或者企业微信的…

etcd单机部署和集群部署

1、etcd单实例部署 对于平常的学习,其实搭建一个单机节点是够了的。接下来就讲讲怎么搭建单机节点。 本次部署是在 centos7 系统,cpu 为amd64 上面进行的。 部署是直接使用官方编译好的二进制文件,大家也可以直接看 ectd-releases 界面选择…

开源交互审计系统:功能强大、安全好用【送源码】

在当今信息化时代,网络安全越来越受到重视。传统的远程控制工具,如RDP、SSH、VNC等,虽然方便易用,但存在安全隐患,容易被黑客利用。很多时候我们都需要做一些防护的处理来来保障网络安全。 今天了不起来分享一款开源好…

OSPF链路状态数据库

原理概述 OSPF是一种基于链路状态的动态路由协议,每台OSPF路由器都会生成相关的LSA,并将这些LSA通告出去。路由器收到LSA后,会将它们存放在链路状态数据库LSDB中。 LSA有多种不同的类型,不同类型的LSA的功能和作用是不同的&…

LearnOpenGL(十一)之光源

一、投光物 将光投射(Cast)到物体的光源叫做投光物(Light Caster)。 二、平行光 当一个光源处于很远的地方时,来自光源的每条光线就会近似于互相平行,我们可以称这些光为平行光。当我们使用一个假设光源处于无限远处的模型时,它就被称为定向…

django显示网页步骤

显示网页步骤 小白的django学习笔记 2024/5/6 8:30 文章目录 显示网页步骤创建输入框(文本、单选、多选)效果如何在django中显示网页写函数配置地址运行,要选择这个工程名的,使用socket复制ip,后面在加上名字,成功&…

Final Draft 12 for Mac:高效专业剧本创作软件

对于剧本创作者来说,一款高效、专业的写作工具是不可或缺的。Final Draft 12 for Mac就是这样一款完美的选择。这款专为Mac用户设计的剧本创作软件,凭借其卓越的性能和丰富的功能,让您的剧本创作更加得心应手。 Final Draft 12支持多种剧本格…

react+antd --- 日期选择器,动态生成日期表格表头

先看一下效果---有当前月的日期 技术: 1: react 2:antd-UI库 -- table 3:moment--时间处理库 代码效果: import { Button, DatePicker, Table } from antd; import { useEffect, useState } from react; import moment from moment;function Club() {const [selecte…

Vue3自定义封装音频播放组件(带拖拽进度条)

Vue3自定义封装音频播放组件(带拖拽进度条) 描述 该款自定义组件可作为音频、视频播放的进度条,用于控制音频、视频的播放进度、暂停开始、拖拽进度条拓展性极高。 实现效果 具体效果可以根据自定义内容进行位置调整 项目需求 有播放暂停…

特征融合篇 | YOLOv8改进之利用ASF-YOLO重构特征融合层 | 助力小目标检测

前言:Hello大家好,我是小哥谈。ASF-YOLO是一个目标检测模型,它基于YOLOv3算法,并引入了ASF(Anchor-Free Spatial Attention)模块。ASF模块可以自适应地学习特征图上每个位置的不同感受野,提高了模型对于小目标的检测能力。相比于YOLOv3,ASF-YOLO在保持准确率的同时大大…

3d里如何做螺旋状模型?---模大狮模型网

螺旋状模型在3D设计中常常被运用,不仅可以用于创造独特的装饰品和艺术品,还可以用于建筑设计、工程模拟等领域。然而,对于初学者而言,如何在3D软件中创建螺旋状模型可能是一个挑战。在本文中,我们将分享几种简单而有效…

Linux diff命令(比较两个文件或目录的内容差异)

文章目录 Linux diff 命令详解教程基本用法比较文件输出解释 递归比较(-r)示例代码 控制输出格式统一格式(-u)上下文格式(-c) 高级选项忽略所有空白差异(-w)仅报告文件是否不同 Linu…

【Web】CTFSHOW 单身杯 题解

目录 web签到 easyPHP 姻缘测试 web签到 用data协议包含php标签闭合 payload: filedata://text/plain,<?php system($_GET[1]);?>>?;)]1[TEG_$(metsys php?<,nialp/txet//:atadeasyPHP 一眼awk命令执行 payload: cmdawk&param{system("ta…

MySQL数据库连接 提示错误 10060

错误现象 Cant connect to server on (10060) 有3个原因&#xff1a; 1、防火墙没有关闭 &#xff08;注意如果配置开放了3306端口&#xff0c;则不可以关闭防火墙&#xff0c;需删除规则以后才能关闭&#xff09; 关闭防火墙&#xff08;1次&#xff09;systemctl stop fir…

数据结构_顺序表中基本操作的实现_代码

学习笔记&#xff0c;仅供参考 1.头文件 2.初始化 3.增加值 4.根据下标取值 5.查找 6.插入 7.删除 8.动态增加数组的长度 9.所有代码 10.运行结果 1.头文件 //顺序表的实现——动态分配 #include<stdio.h> #include<stdlib.h> #define InitSize 10 type…

Arduino-点亮TFT触摸屏一

Arduino-点亮TFT触摸屏一 1.概述 这篇文章主要介绍Arduino操作TFT触摸屏入门操作&#xff0c;通过SPI通信协议方式点亮TFT触摸屏。 2.硬件电路 2.1.硬件列表 名称数量Arduino Uno12.8" TFT彩色液晶触摸屏模块&#xff08;ILI9431&#xff09;110K 电阻5面包板1杜邦线…

ICode国际青少年编程竞赛- Python-3级训练场-if语句入门

ICode国际青少年编程竞赛- Python-3级训练场-if语句入门 1、 for i in range(5):Spaceship.step(i 1)Spaceship.turnRight()if i 1:Dev.step(1)Dev.step(-1)2、 for i in range(4):Dev.step(2)if i ! 1:Dev.turnLeft()Dev.step(3)Dev.step(-3)Dev.turnRight()3、 for i…

springboot3项目练习详细步骤(第三部分:文章管理模块)

目录 发布文章 接口文档 业务实现 自定义参数校验 项目参数要求 实现思路 实现步骤 文章列表(条件分页) 接口文档 业务实现 mapper映射 更新文章 接口文档 业务实现 获取文章详情 接口文档 业务实现 删除文章 接口文档 业务实现 文章管理业务表结构…

OpenHarmony实战开发——WLAN驱动框架介绍及适配方法

1. WLAN 驱动框架概述 WLAN 是基于 HDF(Hardware Driver Foundation)驱动框架开发的模块&#xff0c;该模块可实现跨操作系统迁移、自适应器件差异、模块化拼装编译等功能。从而降低 WLAN 驱动开发的难度&#xff0c;减少 WLAN 驱动移植和开发的工作量。 本文主要分析 WLAN 驱…