Loadrunner从入门到精通教程(一)

大家好,又见面了,我是你们的朋友全栈君。

第一章:性能测试基础

1-1.大话性能测试

性能测试的定义

性能测试是利用自动化测试工具,依据特定的性能指标对产品进行测试,以解决性能与用户体验之间的平衡问题,为用户提供最佳的体验。

性能测试的时代背景和作用

在大数据时代,性能测试的应用广泛,包括网站(BA)、软件(T)、游戏、金融银行、证券系统、教育(教务系统)和交通(如12306等)。

1-2 性能测试那些事

一.性能测试基本流程

Loadrunner从入门到精通教程(一)

二、Web性能测试常用指标

响应时间(Response time)

响应时间是用户感受到软件系统为其服务所需的时间。对于网站系统,从点击一个页面开始到该页面完全在浏览器中显示结束的这段时间间隔就是响应时间。

响应时间遵循2-5-8原则:

2-5秒内响应,用户体验良好;5-8秒内响应,用户体验尚可;超过8秒无响应,用户体验差。

吞吐量(Throughput)

吞吐量是指单位时间内客户端与服务器成功传送的数据量。

资源使用率(Resource utilization)

常见的资源包括:CPU占用率、内存使用率、磁盘I/O、网络I/O。

每秒点击数(Hits per second)

每秒点击数是指客户端每秒钟向服务器提交的请求数量。请求数量越多,相应的平均吞吐量应越大。

并发用户数(Concurrent users)

并发用户数是指客户端的一批用户同时执行一个操作的数量,反映了软件系统的并发处理能力。常见的错误理解包括:1.认为并发用户数是使用系统的全部用户数;2.认为并发用户数是用户在线数量(如QQ在线,但只是挂机,不产生请求)。

1-3 性能测试工具-loadRunner12

Loadrunner从入门到精通教程(一)

1-4 机票特定网站搭建

Loadrunner从入门到精通教程(一)

当启动server服务时,可能弹出1080端口被占用的提示。

Loadrunner从入门到精通教程(一)

1.提示1080端口被占用的解决办法

Cmd:输入命令netstat -ano查找各端口所在进程的PID,找到1080端口的程序的PID,在资源管理器中将其关闭,再重启。

Loadrunner从入门到精通教程(一)

2.提示Internal error:your request was unsuccessful

Cannot create CGI process – program not found

安装strawberry-perl-5.12.3.0并确保安装在一个盘符上。

第二章:LoadRunner的使用

2-1 脚本创建流程

2-2 测试脚本的准备工作

测试脚本概要

Init, action, end说明:

Init:一般录制的是业务流程开始之前的初始化工作(如登录、服务器初始化)。Action:一般录制的是业务流程操作的事件。End:一般录制的是退出时执行的操作(如用户退出、注销)。

Init和end不能迭代多次,只能运行一次,action可以迭代多次运行。

如果测试需求没有对业务流程有重复的要求,可以都放在action部分。如果有重复的需求,比如要求一个用户登录后重复订票10次,就需要将订票部分的脚本放在action中进行迭代。登录部分放在init,退出部分放在end。

2-3 订票网站脚本录制

2-4 脚本解析

2-5 脚本回放设置

2-6 回放脚本

2-7 设置关联

2-8 HTML模式与URL模式

在默认情况下,选择“HTML-based script”,说明脚本中采用HTML页面的形式来标识,这种方式的脚本容易维护,容易理解,推荐以这种方式录制。

“URL-based script”说明:

脚本中的标识采用基于URL的方式,所有的HTTP请求都会被记录下来,单独生成函数,因此URL模式生成的脚本会显得有些杂乱。URL录制的脚本中Web_concurrent_start函数是并发组开始的标记,web_concurrent_end是并发组的结束标记。在并发组中的函数不是立即执行的。在并发组开始时,所有函数首先被记录下来,当并发结束时,所有函数并发执行。

选择HTML还是URL录制,有以下参考原则:

(1)基于浏览器的应用程序推荐使用HTML-based script。

(2)不是基于浏览器的应用程序推荐使用URL-based script。

(3)如果基于浏览器的应用程序中包含了JavaScript并且该脚本向服务器产生了请求,使用URL-based script方式录制。

(4)基于浏览器的应用程序中使用了HTTPS安全协议(支付功能),使用URL-based script方式录制。

2-9 添加事务(Transaction)

1.定义

事务(Transaction)是指为了衡量某个操作的性能,需要在操作的开始和结束位置插入一个范围,这样就定义了一个transaction。

2.原因

从性能的角度出发,我们需要知道不同操作所花费的时间,这样我们就可以衡量不同操作对被测系统的影响。为了知道不同操作所花费的时间,我们就用到了事务,在操作之前插入一个事务开始标识,在操作完成后插入一个结束标识,这样我们就知道了操作所花费的时间。

3.作用

事务的作用:LoadRunner运行到该事务的开始点时,LoadRunner就会开始计时,直到运行到该事务的结束点时,计时结束。这个事务的运行时间在LoadRunner的运行结果中会有反映。LoadRunner中的事务就是一个计时标识,LoadRunner在运行过程中一旦发现事务的开始标识,就开始计时,一旦发现事务的结束标识,则计时结束,这个过程中得到的时间即为一个事务的时间,通常事务时间反映的是一个操作过程的响应时间。

4.函数构造

事务开始函数通常包括一个参数,即事务的名称。事务结束函数通常包括两个参数,第一个参数是事务的名称,第二个参数是事务的状态。事务状态可以为LR_Pass:返回“pass”返回代码;LR_Fall:返回“Fail”返回代码;LR_STOP:返回“stop”返回代码;LR_AUTO:自动返回检测到的状态。Duration标识事务的完成响应时间,wasted time包括函数自身执行所需的时间。

设置登录操作事务以及运行日志查看事务的响应时间;LR_AUTO自动检测结果,若使用LR_Fall或LR_Pass则需要结合if条件语句进行判断。

Loadrunner从入门到精通教程(一)

2-10 脚本参数化

Loadrunner从入门到精通教程(一)

参数化设置

Select next row 【选择下一行】

顺序(Sequential):按照参数化的数据顺序,一个个取。随机(Random):参数化中的数据每次随机从中抽取。唯一(Unique):为每个虚拟用户分配一条唯一的数据。

Update value on 【更新时的值】

每次迭代(Each iteration):每次迭代时取新的值。每次出现(Each Occurrence):每次参数化时取新的值,这里强调前后两次取值不能相同。只取一次(Once):参数化中的数据,一条数据只能抽取一次。

前提:假设参数化表中有15条数据,进行不同组合的结果

Select next row 【选择下一行】 Update value on 【更新时的值】 Replay Result【结果】

顺序(Sequential)每次迭代( Each iteration)结果:分别将15条数据写入数据表中功能说明:每迭代一次取一行值,从第一行开始取。当所有的值取完后,再从第一行开始取。如:如果参数化文件中的15条数据,而迭代次数为16次,那执行结果中,参数化文件第一行的数据有两条。顺序(Sequential)每次出现(Each Occurrence)结果:分别将15条数据写入数据表中功能说明:每迭代一次取一行值,从第一行开始取。当所有的值取完后,再从第一行开始取。如:如果参数化文件中的15条数据,而迭代次数为16次,那执行结果中,参数化文件第一行的数据有两条。顺序(Sequential)只取一次(once)结果:分别将15条数据写入数据表中功能说明:每次迭代都取参数化文件中的第一行的数据。随机(random)每次迭代(Each iteration)结果:表中写入15条数据,但可能有重复数据出现功能说明:每次从参数化文件中随机选择一行数据进行赋值。随机(random)每次出现(Each Occurrence)结果:表中写入15条数据,但可能有重复数据出现功能说明:每次从参数化文件中随机选择一行数据进行赋值。随机(random)只取一次(once)结果:表中写入15条数据,但可能有重复数据出现功能说明:第一次迭代时随机从参数化文件中取一行数据,后面每次迭代都用第一次迭代的数据。唯一(unique)每次迭代(Each iteration)结果:分别将15条数据写入数据表中功能说明:第一次迭代参数化文件中的第一条数据,第二次迭代取第二条数据,以此类推。注:如果设置迭代次数为16次,结果:在执行第16次迭代时会抛出异常,异常日志可在LoadRunner的回放日志(replylog)中看到。唯一(unique)每次出现(Each Occurrence)结果:分别将15条数据写入数据表中功能说明:第一次迭代参数化文件中的第一条数据,第二次迭代取第二条数据,以此类推。注:如果设置迭代次数为16次,而参数化文件中只有15条数据,明显数据不够,此时可以设置“when out of values”属性来判断当数据不够时的处理方式。About vuser:中断虚拟用户continue in cyllc manage:循环取参数化文件中的值,即:当参数化文件中的取值完后又从参数化文件的第一行开始取值continue with last value:继续用最后一天数据。唯一(unique)只取一次(once)结果:表中写入15条相同数据功能说明:每次都取参数文件中的第一条数据进行赋值。

*小练习:按照下面参数化设置、运行时设置,运行脚本体会参数化设置33=9种取值方式**

脚本action:

lr_output_message(“第一次取值:%s”,lr_eval_string(“{paramtest}”));

lr_output_message(“第一次取值:%s”,lr_eval_string(“{paramtest}”));

Loadrunner从入门到精通教程(一)

参数化设置

Loadrunner从入门到精通教程(一)

运行时设置

Loadrunner从入门到精通教程(一)

发布者:全栈程序员栈长,转载请注明出处:https://www.php.cn/link/c7d830edc4a6aeedf2cb507fef77ec8d

以上就是Loadrunner从入门到精通教程(一)的详细内容,更多请关注php中文网其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/25620.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月2日 13:27:57
下一篇 2025年11月2日 13:46:22

相关推荐

  • MyBatis 中 XML 映射文件无法调用的问题排查与解决

    本文旨在帮助开发者解决在使用 Spring Boot 和 MyBatis 框架时,XML 映射文件中定义的 SQL 语句无法被正确调用的问题。文章将通过分析常见原因、提供解决方案以及代码示例,帮助读者快速定位并解决类似问题,确保 MyBatis 能够正确加载和执行 XML 映射文件中的 SQL 语句…

    2025年12月5日
    100
  • js怎么操作浏览器历史记录 History API无刷新修改URL

    history api通过pushstate和replacestate实现无刷新修改url,核心区别在于pushstate新增历史记录条目,replacestate替换当前条目;1. pushstate允许用户通过“后退”按钮返回之前的状态;2. replacestate仅更新url而不创建新记录;…

    2025年12月5日 web前端
    000
  • 如何解决PHP中货币数值处理和格式化难题,使用Spryker/Money让财务计算更精确

    最近在开发一个电商平台时,我遇到了一个让人头疼的问题:如何精确地处理和展示商品价格、订单总额等货币数值。PHP中的浮点数计算众所周知地不可靠(比如 0.1 + 0.2 并不严格等于 0.3 ),这在财务计算中是绝对不能接受的。更麻烦的是,我们的平台面向全球用户,这意味着我需要根据不同的国家和地区,以…

    开发工具 2025年12月5日
    000
  • 抖音怎么挂自己的点单小程序

    在当前的数字化浪潮中,社交平台已成为品牌推广与商品销售的重要阵地。作为国内领先的短视频平台,抖音的活跃用户已突破1.5亿大关,为各类商家提供了广阔的营销空间。借助抖音平台,商家不仅能有效传播品牌形象,还能通过接入点单小程序,提升用户的购买效率和体验感。 什么是点单小程序? 点单小程序是一种基于微信生…

    2025年12月5日
    000
  • win10关闭自动更新 四种禁止更新方法分享

    windows 10系统内置了自动更新机制,虽然有助于保持系统安全与稳定,但对不少用户来说,频繁的更新提示、计划外的重启甚至强制重启严重影响了使用体验。尤其是在进行重要工作或沉浸式游戏时,突如其来的系统更新极易打断操作流程。那么,如何有效关闭win10的自动更新呢?本文将介绍四种实用、安全且可逆的方…

    2025年12月5日 电脑教程
    000
  • HiDream-I1— 智象未来开源的文生图模型

    hidream-i1:一款强大的开源图像生成模型 HiDream-I1是由HiDream.ai团队开发的17亿参数开源图像生成模型,采用MIT许可证,在图像质量和对提示词的理解方面表现卓越。它支持多种风格,包括写实、卡通和艺术风格,广泛应用于艺术创作、商业设计、科研教育以及娱乐媒体等领域。 HiDr…

    2025年12月5日
    000
  • 如何在Laravel中集成支付网关

    在laravel中集成支付网关的核心步骤包括:1.根据业务需求选择合适的支付网关,如stripe、paypal或支付宝等;2.通过composer安装对应的sdk或laravel包,如stripe/stripe-php或yansongda/pay;3.在.env文件和config/services.…

    2025年12月5日
    000
  • Java中死锁如何避免 分析死锁产生的四个必要条件

    预防死锁最有效的方法是破坏死锁产生的四个必要条件中的一个或多个。死锁的四个必要条件分别是互斥、占有且等待、不可剥夺和循环等待;其中,互斥通常无法破坏,但可以减少使用;占有且等待可通过一次性申请所有资源来打破;不可剥夺可通过允许资源被剥夺打破;循环等待可通过按序申请资源解决。此外,reentrantl…

    2025年12月5日 java
    000
  • 误删回收站文件怎么恢复 试试这几种恢复方法

    在清理电脑回收站以腾出磁盘空间时,有时会不小心将重要文件一并清空。那么,一旦回收站被清空,这些文件是否就彻底无法找回了呢?其实不然,只要这些文件尚未被新数据覆盖,仍有机会完整恢复。本文将介绍几种实用且高效的恢复方式,助你尝试找回误删的文件。 一、借助“文件历史记录”功能进行恢复 Windows系统内…

    2025年12月5日 电脑教程
    000
  • js如何实现剪贴板历史 js剪贴板历史管理的4种技术方案

    要实现js剪贴板历史,核心在于拦截复制事件、存储复制内容并展示历史记录。1. 使用document.addeventlistener(‘copy’)监听复制事件,并通过e.clipboarddata.getdata获取内容;2. 用localstorage或indexeddb…

    2025年12月5日 web前端
    100
  • 如何利用JavaScript实现前端日志记录与用户行为分析?

    前端日志与用户行为分析可通过封装Logger模块实现,支持分级记录并上报;结合事件监听自动采集点击、路由变化等行为数据。 前端日志记录与用户行为分析能帮助开发者了解用户操作路径、发现潜在问题并优化产品体验。通过JavaScript,我们可以轻量高效地实现这些功能,无需依赖复杂工具也能获取关键数据。 …

    2025年12月5日
    000
  • 喜茶微信点单怎么用抖音券:详细教程及优惠攻略

    【引言】 作为新式茶饮的领军品牌,喜茶凭借其高品质原料与持续创新的产品赢得了广大消费者的喜爱。为提升服务效率与用户体验,喜茶全面上线了微信小程序点单功能,让用户无需排队即可完成下单。与此同时,喜茶携手抖音平台推出专属优惠活动——抖音券,进一步降低消费门槛。本文将为您全面解析如何在喜茶微信点单时使用抖…

    2025年12月5日
    000
  • win11怎么创建和挂载ISO镜像文件_Win11创建与挂载ISO虚拟光驱的方法

    Windows 11支持直接挂载ISO镜像作为虚拟光驱。1、右键ISO文件选择“挂载”即可在“此电脑”中显示为DVD驱动器;2、通过管理员权限的PowerShell使用Mount-DiskImage命令可实现命令行挂载;3、创建ISO文件可借助PowerShell或第三方工具如Oscdimg,将文件…

    2025年12月5日
    000
  • 抖音的私信定位在哪里?私信功能有什么作用?

    作为广受欢迎的社交平台,抖音中的私信功能是用户沟通的重要方式之一。然而不少刚接触抖音的朋友常常困惑:私信到底在哪?它又能用来做什么? 一、抖音私信入口在哪里? 其实,抖音的私信入口设计得十分直观,主要分布在手机App和电脑端两个场景中。 手机端抖音App 这是大多数用户使用的操作方式,主要有两个常用…

    2025年12月5日
    000
  • 如何使用spryker/user模块,轻松解决后台用户权限管理难题

    Composer在线学习地址:学习地址 作为一名php开发者,我经常面临一个挑战:为后台管理系统(特别是像spryker这样的复杂电商平台)构建一套健壮、灵活且易于管理的用户权限体系。想象一下,一个拥有数十个功能模块的后台,需要为运营、财务、客服、内容编辑等不同角色分配不同的操作权限。最初,我们可能…

    开发工具 2025年12月5日
    000
  • 解决 jQuery AJAX POST 传递多个参数失败的问题

    第一段引用上面的摘要:本文旨在解决在使用 jQuery AJAX 发送 POST 请求时,无法传递超过两个参数的问题。通过分析常见原因,提供了一种更健壮、更简洁的解决方案,即使用表单的 submit 事件和 serialize() 方法,从而确保所有表单数据都能正确传递到服务器端。 在使用 jQue…

    2025年12月5日
    000
  • 如何在Laravel中实现缓存机制

    laravel的缓存机制用于提升应用性能,通过存储耗时操作结果避免重复计算。1. 配置缓存驱动:在.env文件中设置cache_driver,如redis,并安装相应扩展;2. 使用cache facade进行缓存操作,包括put、get、has、forget等方法;3. 使用remember和pu…

    2025年12月5日
    000
  • 如何解决前端JS文件过大导致加载缓慢的问题,使用linkorb/jsmin-php助你轻松实现JS代码压缩优化

    可以通过一下地址学习composer:学习地址 在快节奏的互联网世界里,网站的加载速度是用户体验的生命线。用户往往没有耐心等待一个缓慢的页面,而搜索引擎也更青睐加载迅速的网站。作为一名开发者,我深知这一点,但最近在优化我的php项目时,却遇到了一个让人头疼的问题:前端的javascript文件随着功…

    开发工具 2025年12月5日
    000
  • 视频号视频怎么共享?如何设置隐私权限?

    微信视频号作为内嵌于微信生态的短视频平台,其分享机制与微信功能深度整合。那么,怎样才能将有趣的视频传递给更多人?又该如何在分享的同时守护好个人隐私? 一、视频号内容如何进行分享? 在视频号中分享视频操作简单,支持多种路径,可根据不同需求灵活选择。 发送给微信好友或群组 这是最常见且高效的分享方式。浏…

    2025年12月5日
    000
  • Java中Executors类的用途 掌握线程池工厂的创建方法

    如何使用executors创建线程池?1.使用newfixedthreadpool(int nthreads)创建固定大小的线程池;2.使用newcachedthreadpool()创建可缓存线程池;3.使用newsinglethreadexecutor()创建单线程线程池;4.使用newsched…

    2025年12月5日 java
    000

发表回复

登录后才能评论
关注微信