0

0

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

蓮花仙者

蓮花仙者

发布时间:2025-07-14 08:44:22

|

952人浏览过

|

来源于php中文网

原创

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

第一章:性能测试基础

1-1.大话性能测试

性能测试的定义

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

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

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

1-2 性能测试那些事

一.性能测试基本流程

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

二、Web性能测试常用指标

  1. 响应时间(Response time)

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

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

    • 2-5秒内响应,用户体验良好;
    • 5-8秒内响应,用户体验尚可;
    • 超过8秒无响应,用户体验差。
  2. 吞吐量(Throughput)

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

  3. 资源使用率(Resource utilization)

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

  4. 每秒点击数(Hits per second)

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

  5. 并发用户数(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 订票网站脚本录制

swoole从入门到精通(第一季)课件
swoole从入门到精通(第一季)课件

swoole从入门到精通(第一季)课件

下载

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从入门到精通教程(一)

参数化设置

  1. Select next row 【选择下一行】

    • 顺序(Sequential):按照参数化的数据顺序,一个个取。
    • 随机(Random):参数化中的数据每次随机从中抽取。
    • 唯一(Unique):为每个虚拟用户分配一条唯一的数据。
  2. 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

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
resource是什么文件
resource是什么文件

Resource文件是一种特殊类型的文件,它通常用于存储应用程序或操作系统中的各种资源信息。它们在应用程序开发中起着关键作用,并在跨平台开发和国际化方面提供支持。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

181

2023.12.20

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

846

2023.08.22

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

492

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

382

2023.10.25

java break和continue
java break和continue

本专题整合了java break和continue的区别相关内容,阅读专题下面的文章了解更多详细内容。

261

2025.10.24

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

443

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

605

2023.08.10

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

495

2023.11.09

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 13.4万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 1.0万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号