LoadRunner从零开始之接触LoadRunner

news2024/12/25 2:33:37

LoadRunner 是Mercury Interactive 公司开发的一款成熟的性能测试工具,LoadRuner 作为性能测试的实现者,涉及了性能测试流程、性能测试技术和软件 体系架构等众多方面的知识点,可以说,学习LoadRuner 是理解和学习性能测试 的非常好的切入点。在本章,我们将从架构上了解一下LoadRunner 的三大模块,

看看它们是如何共同协作完成一次软件性能测试的。

2. 1 从性能测试到 LoadRunner 的映射

可以想象,如果没有性能测试工具,那么我们靠手工將如何做性能测试:

首先,我们需要一个测试执行指挥官和一群测试人员,测试指择官负责指挥 和协调整个测试过程,而测试人员则按照指挥官的又令 一起去操作自己的终端。准备好之后,指挥官通知大家“开始” ,然后各个测试人员开始按照测试案例的步骤来执行操作,并把自己的操作时间记录下来,在性能测试完牛后,记录下水 汇报给测试指挥官,测试指挥官把结果数据进行计算,得出性能测试是否通过的 结果。

显然,这样做应该是最符合软件系统的实际使用情況的,但是实际上我们在 做性能测试的时候,我们必须要提前考患几个问题:

( 1)资源。显然,手工性能测试需要多个测试人员和多台终端设备,如果性 能需求中说明软件系统的用户可能来自不同网络配置,如局域网、ADSL、拨号等, 那么做性能测试还要考虑制造这些条件,这无疑会增加测试的成本。

(2)协调。指挥官需协调各个测试人员,让他们同时开始,如果出现了问题, 测试指挥官应该立即决断,是继续测试,还是立即中断,去解决问题。

(3)重复。性能测试不可能一蹴而就,需要至轮测试,那么如何在相同的条 件 下重复第一轮测试,手工测试必然会带来误差。

(4)分析。测试指挥官需要分析结果数据,得出性能测试结果是否通过,如 果没有通过,最好还要指出是软件系统的哪个节点出了问题,提供解决问题的线 索。

我们来看看MI 的LoadRuner 是怎样解决这些问题的,如图2-1 所示。

( 1 ) 测 试 人 员 被 L o a d R u n n e r 的 V u s e r 代 替 (虚 拟 用 户 ) , 测 试 人 员 执 行 的 操 作以VuserScript (虛拟用户脚本)的方式固化下来。而一台计算机上可以运行多 个Vuser,因此LoadRunner 又诚少了性能测试对硬件的要求。

提示:虚拟用户: 虚拟用户是性能测试自动化实现中一个普遍的概念,顾名恩义,虛拟用 户并不是一个个真实的人,但对被测试的服务器来说,这些虛拟用户和真实 用产的行为并无差别。可以说,被测服务器并不清楚哪些请求是来自真实的 人还是虛拟用户。在LoadRunner 中,虛拟用户的实现原理是VU脚本t nun- time setting.

虛拟用产的另外一个好处是,一台工作站只能容纳一个实际用户 ,而多个Vuser可以同时以进程/线程的形式运行在同一台工作站上。实际上,一个测试场景可以包含几十、几百甚至几千个Vuser 。

虛拟用户脚本:

Vuser 在方案中执行的操作是用Vuser 脚本描述的。运行场景时,每个Vuser 都去执行 Vus er 脚本。Vuse r 脚本记录 了用户的动作,并且包含一系列度量并记 录服务器性能的函数,从而方便计算性能指标。这就像 一个真实的用户一边做 操作, 一边拿着秒表记录时间一样。

操作, 一边拿着秒表记录时间一样。

(2)测试指挥官被LoadRunner 的Controller 替代,顾名思义,Controller 就 是运行性能测试的司令部,Controller 负责生成性能测试场景,管理和协调多个 虚拟用户,在实际运行时,Controller 运行任务分派给各个Loadgenerator,同时 还联机监测软件系统各个节点的性能,并收集结果数据,提供给LoadRunner 的 Analysis.

提示:

性能测试场景:

使用IoadRunner 可以将应用程序性能测试需求划分为多个场景。场景定义 并控制要模拟的用户的数量及其执行的操作,以及他们运行模拟操作所用的计 算机。简单说来,场景是把虛拟用户按 一定规则组织起来去模拟真实世界的业 务 行为。场景的组织通常和真实世界的业务规则有很大关系。

( 3 )An al ysis 会对数据进行整合,分析出它们之间的关系,并把这些关系以图 表和报告的形式展现出来,使得性能测试的结果一目了然。

提示:Analysis:

Anallysis,名副其实,就是LoadRunner 用来分析数据的工具。一个测试场景运 行结束后,会在指定的目录下生成一个Access 数据文件,这时启动Analysis,就可 以分析这些数据 了。

以分析这些数据 了。

这些概念之间的关系,可以用下面的比喻来形象地说明。

把性能测试比作一场盛大的演出,虚拟用户(vuser )就是演员,导演 (Controller )则规定了参加演出的有多少个演员,各自如何在舞台上表演,这种规 则就是剧本(性能测试场景)。导演要在各个方面保证剧情不能离谱、脱离现实, 杏则就要砸锅了。因此,导演不仅要确保演出能顺利结束,而且还要同时观察和 收集观众的反馈信息(联机监测功能),以分析 (Analysis)、确认这次演出是否 成 功 (性 能 需 求 是 否 到 达 ) 。

2.2 LoadRunner 工作原理

现实中,性能测试这场演出就是这么进行的,如图2- 2所示。

(1 ) 性 能 测 试 人 员 操 纵 运 行 Controller ,启 动 性 能 测 试 。

(2)大量的虚拟用户被“激活” ,和真实用户所做的一样,向被测系统发送 第 一次亲密接触LoadRunner 请求。

(3)Controller 通过monitor 能够实时捕获系统所有层面,包括服务器、网络 资源的性能数据,并显示在Controller 上。

(4)执行结果存放在数据库里,用户通过 Analysi s 生成报告并进行测试结果 分析。

实际上,LoadRunmner 为了保证这场“浩大演出” 的成功,除了三个模块的基 本功能之外,还提供了一些“细心而方便” 的功能,这使得LoadRunner 变得更加 强大。

1. vuser提供录制/回放功能

学 习 LoadRunner 很 容 易 上 手, 其 关 键 是 LoadRunner 的 VirtualUserGenerator 具有录制/回放功能。可以通过录制直接生成脚本,极大地节省了开发和调试脚本 的工作量。vU可以先记录下业务流程,然后将其转化为测试脚木。建立测试脚本 后,可以对其进行参数化操作,这样可以利用几套不同的实际发生数据来测试应 用程序。以一个订单输入过程为例,参数化操作可将记录中的固定数据,如订单 号和客户名称,由可变值来代替。在这些交量内随意输入可能的订单号和客户名, 来匹配多个实际用户的操作行为。

2. Controller机智地创建性能测试方案

虚拟用户脚本生成后,使用LoadRunner 的Controller 可以根据需要设定负载 方案 、业务流程组合和虛拟用户数,创建不同的性能场景。

Controller 能够创建基于日标和手工的性能测试场景,前者可使用户关注于某 项他感兴趣的性能指标,后者可全面考察整个软件系统在既定负载下的性能表现。 实际上,我们可以通过手工和目标场景的设置来实现在上一章提到的性能测试策 略,如表2- 1所示。

3. 数据驱动

LoadRunner 做到了将业务流程和业务数据分离,并且很彻底。其中有一个很 有用的功能,就是Data Wizard。通过它的Data Wiz ard 米自动实现其测试数据的 参数化。Data Wizard 直按连于数据库服务器,从中可以获取所需的数据(如订单 号和用户名)并直接将其输入到测试脚本。这样避免了人工处理数据的需要。

4 . 服务器监测

LoadRunner 可检查出现性能延迟的地方:网络或客户端延迟、CPU性能、vo 延迟、数据库锁定和数据库服务器上的其他问题。这是因为LoadRunner 内含集成 的实时监测器,在负载测试过程的任何时候,都可以观察到应用系统的运行性能, 包括服务器、数据库、网络设备等。

5. 测试结果分析

一旦测试完牛后,LoadRunner 收集汇,总所有的测试数据,可以提供高级的分 析和报告工具,以便迅速查找到性能问题并追湖原由。使用LoadRunner 的Web 交易细节监测器可以了解到将所有的图像、框架和文本下载到每一个网页上所需 的时间。例如,这个交易细节分析机制能够分析是否因为一个大尺寸的图化文件 或是第三方的数据组件造成应用系统运行速度减慢。另外,web 交易细节监测器 分解用于客户端、网络和服务器上端到端的反应时间,便于确认问题,定位查找 真正出错的组件。例如可以將网络延时进行分解,以判断DNS解析时间,连接服 务器或sSL 认证所花费的时间。通过使用LoadRunner的分析工具,能很快地查找 到出错的位置和原因并做出相应的调整。 以上这些功能我们都将在后面的章节中详细地介绍。

2.3 安装LoadRunner

目前MI的LoadRunner 提供了Windows版本和UNIX版本,世就是説, ToadRunner 可法行在Windows 平台和UNIX平台下。返取決于被測軟件系統対客 戸端的要求。

而交装LoadRunner 対汁算机配置有要求,如表2-2所示。

随着计算机硬件成本的降低,上面的系统要求已经很容易达到。但是需要注 意的是,它们是最小的资源要求,我们在安装LoadRunner 的时候,往往要把这个 硬件要求提高一些,以保证性能测试的正常执行。具体安装步骤在本书就不花篇 幅 介 绍 了, 可 参看 L o a d R u n n e r 安 装 手 册。

2.4 揭开License的神秘面纱

License 又叫做授权,使用授权 ( License )是版权的拥有 者对作品的使用 者行为的 一种文档化的约束和规定。使用授权一般规定了用户使用该作品的条 件,是否能够修改或者重新发布。从法律意义上来讲,License 是一种契约或者 合同,具有法律效力。软件用户通过购买License 的方式水和软件厂商达成契 约关系。

一般地,软件的License 的实现方式分为硬件实现和软件实现两种。硬件实现 是将软件与硬件鄉定,通过硬件来实现对用户鉴权,代表性的做法有加密狗等: License 的软件实现则有序列号等。

目前,LoadRunner 的License 实现方式硬件和软件都有,应用在不同的功能 模块中。

可以通过LoadRunner Controller 来查看License 信息。

在Controller中,选择“帮助” >“关于LoadRunner”,查看Controller的版 本 信 息 。打 开 “ LoadRun nerController 版 本 信 息 ” 对 话 框 , 单 击 “ License Information” 按钮,即可显示许可证信息,如图2-3 所示。

在时间上,LoadRunner 有以下可用许可证类型:

。Per manent:这一类型的许可证没有有效期限限制。

• Timelimited:这

一类 型 的 许 可 证 有 期 限 限 制 。

• Temproray:这 一类型的许可证只能保证自产品安装后10 天的使用期。

• VUD-based:这一类型的许可证受虚拟用户天数(VUD)的限制。在24 小 时内,VUD 许可证允许用户使用该产品无限次。

• Plugged:这 一类型的许可证需要加密狗。

在空间上,LoadRunner 对可用虚拟用户类型也有限制,有以下内容:

• Global:Gilobal 许可证意味着只要不超过Vuser 总数限制值,可以运行任意 类型的Vuser。Global 后面跟着的数宇就是允许的Vuser 总数。

• Group ERP-1: 1 § SAP. Web. Oracle, MSSQL #I Siebel (GUI-Oracle)

虛拟用户协议。

• Group ERP-2:包含SAP、Siebel (GUL-Oracle)、Oracle、Oracle-NCA虚

拟用户协议。

• Group3:包含除SAP、Siebel (GU-Oracle)、Oracle、Oracle-NCA以外的 所有虚拟用户协议。

有以下可用监视器类型:系统资源、Web资源、web服务器资源、Wet 应用 程序服务器资源、数据库服务器资源、网络延迟、流媒体资源、防火墙服务器资 源及ERP 服务器资源。

当然包含越多功能的License 就越贵,我们使用LoadRunner 时,应该根据项 目 需 求, 选 择 合 适 的 L i c e n s e 。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

常用设计模式(工厂方法,抽象工厂,责任链,装饰器模式)

前言 有关设计模式的其他常用模式请参考 单例模式的实现 常见的设计模式(模板与方法,观察者模式,策略模式) 工程方法 定义 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟到子类。 ——《设…

Spring Boot 优雅实现统一数据返回格式+统一异常处理+统一日志处理

在我们的项目开发中,我们都会对数据返回格式进行统一的处理,这样可以方便前端人员取数据,当然除了正常流程的数据返回格式需要统一以外,我们也需要对异常的情况进行统一的处理,以及项目必备的日志。 1. 统一返回格式 …

【小沐学GIS】基于C++绘制三维太阳系SolarSystem(OpenGL、glfw、glut)

🍺三维数字地球系列相关文章如下🍺:1【小沐学GIS】基于C绘制三维数字地球Earth(OpenGL、glfw、glut)第一期2【小沐学GIS】基于C绘制三维数字地球Earth(OpenGL、glfw、glut)第二期3【小沐学GIS】…

深度学习基础之数据操作

深度学习中最常用的数据是张量,对张量进行操作是进行深度学习的基础。以下是对张量进行的一些操作: 首先我们需要先导入相关的张量库torch。 元素构造(初始化) 使用arange创造一个行向量,也就是0轴(0维&a…

LabVIEW 2023下载安装教程,附安装包和工具,免费使用,无套路获取

前言 LabVIEW是一种程序开发环境,提供一种图形化编程方法,可可视化应用程序的各个方面,包括硬件配置、测量数据和调试,同时可以通过FPGA数学和分析选板中的NI浮点库链接访问浮点运算功能库,LabVIEW软件是NI设计平台的…

西圣H1头戴式耳机发布,不止音质惊艳,更有舒适听音体验

近日,深耕智能声学领域多年的 xisem西圣品牌‏‏发布——‏西圣H1头戴式主动降噪蓝牙耳机正式迎来首销。从各个方面来看,这款头戴式耳机展现出了极具颠覆性的创新,不仅在音质和降噪性能上表现出色,更重要的是采用了更加轻巧的佩戴…

使用记事本修复DBC文件问题V3.0

要麻了,竟然写到3.0了。 有个信号解析不出来,同一条报文的其他信号可以正确解析,打开DBC检查,位置长度都是正确的,死活解析不出来。 打开记事本 发现他居然在信号后面加了个回车,就产生了上面这种诡异的情…

js实现九九乘法表

效果图 代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><script type"text/javascript">// 输出乘法口诀表// document.write () 空格 " " 换行…

微电网优化MATLAB:火鹰优化算法(Fire Hawk Optimizer,FHO)求解微电网优化(提供MATLAB代码)

一、火鹰优化算法FHO 火鹰优化算法&#xff08;Fire Hawk Optimizer&#xff0c;FHO&#xff09;由Mahdi Azizi等人于2022年提出&#xff0c;该算法性能高效&#xff0c;思路新颖。 单目标优化&#xff1a;火鹰优化算法&#xff08;Fire Hawk Optimizer&#xff0c;FHO&#…

QKCP容器平台安装qkcp paas deployment

22年底23年初做的容器云平台的项目&#xff0c;该份是当初实施部署真实生产环境的手册&#xff0c;关键ip和端口已经更改&#xff0c;现贴来给大伙参阅。 x公司qkcp容器平台安装部署手册 目录 x公司qkcp容器平台安装部署手册 1 集群基础环境 3 1.1. 集群规划信息 3 1.2. 标准…

Eclipses安装教程

一、下载开发工具包 1、开发工具包JDK 下载地址链接&#xff1a;https://www.oracle.com/cn/java/technologies/downloads/ 下载教程&#xff1a; 1&#xff09;点击链接&#xff0c;可以跳转到页面 2&#xff09;下滑页面&#xff0c;找到开发工具包 3&#xff09; 记住下载之…

数据库管理Navicat Premium 15

Navicat Premium 15是一款强大的数据库管理和开发工具&#xff0c;支持多种数据库类型&#xff0c;包括MySQL、MariaDB、SQL Server、SQLite、Oracle和PostgreSQL等。它提供了数据可视化、高效的操作、数据同步与备份等功能&#xff0c;以及用户友好的界面。Navicat Premium 15…

【数据库原理】(37)Web与数据库

随着网络的高速发展和网络服务的日趋完善&#xff0c;网络上的信息量呈几何级数增长。为了有效地组织、存储、管理和使用网上的信息&#xff0c;数据库技术被广泛地应用于网络领域。特别是在Internet上&#xff0c;已建立了数以万计的网站&#xff0c;其中大中型网站的后台大多…

2.4 网络层01

2.4 网络层01 2.4.1 网络层概述 网络层的主要任务是实现网络互连&#xff0c;进而实现数据包在各网络之间的传输。 异构网络内部的计算机要想实现通信是不需要实现网络互联的&#xff0c;异构网络之间要想实现通信就必须实现网络互连。 路由器工作在五层协议体系结构的网络…

Android:JNI实战,加载三方库、编译C/C++

一.概述 Android Jni机制让开发者可以在Java端调用到C/C&#xff0c;也是Android应用开发需要掌握的一项重要的基础技能。 计划分两篇博文讲述Jni实战开发。 本篇主要从项目架构上剖析一个Android App如何通过Jni机制加载三方库和C/C文件。 二.Native C Android Studio可…

python一元线性回归sklearn

# -*- coding: utf-8 -*-from sklearn.linear_model import LinearRegression import numpy as np import matplotlib.pyplot as plt# 载入数据 data np.genfromtxt(一元线性回归.csv, delimiter,) x_data data[:,0] y_data data[:,1] plt.scatter(x_data,y_data) plt.show(…

如何本地安装Python Flask并结合内网穿透实现远程开发

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

03--数据库连接池

1、数据库连接池 1.1 JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时&#xff0c;传统的模式基本是按以下步骤&#xff1a; 在主程序&#xff08;如servlet、beans&#xff09;中建立数据库连接进行sql操作断开数据库连接 这种模式开发&#xff0c;存在的问题:…

外贸自建站如何建立?海洋建站的操作指南?

外贸自建站的建站流程什么&#xff1f;做跨境怎么搭建外贸网站&#xff1f; 外贸自建站成为企业开拓国际市场、提升品牌形象的重要途径。然而&#xff0c;对于许多企业而言&#xff0c;如何高效地进行外贸自建站仍然是一个挑战。海洋建站将带您一步步探讨外贸自建站的关键步骤…

Ubuntu重设root的密码

重设root的密码 未重设密码之前&#xff0c;Ubuntu 中默认的 root 密码是随机的&#xff0c;即每次开机都会有一个新的root 密码&#xff0c;所以此时的 root 用户密码并不确定&#xff1b; 重设root 密码&#xff0c;使用安装时创建的用户登录后sudo su切换至root用户&#…