【测试运维】性能测试经验文档总结第3篇:VuGen详解(已分享,附代码)

本系列文章md笔记(已分享)主要讨论性能测试相关知识。入门阶段:认识性能测试分类-(负载测试、压力测试、并发测试、稳定性测试),常用性能测试指标-(吞吐量、并发数、响应时间、点击数...),性能测试工具选择。性能脚本:1. LoadRunner介绍,2. 脚本录制、运行、参数化,3. 关联、检查点、事务、集合点。性能场景:1. 场景分类、场景设计、场景运行策略,2. 资源监控、SLA、IP Wizard应用。性能分析:1. 摘要报告、事务图表、图表合并,2. 交叉结果、拐点分析、Web项目资源分析。

全套笔记和代码自取移步gitee仓库: gitee仓库获取完整文档和代码

感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~


共 5 章,25 子模块

性能测试工具-LoadRunner

学习目标

python 1. 理解基于VuGen的脚本录制 2. 掌握参数化的使用方法 3. 掌握关联的使用方法 4. 掌握检查点的使用方法 5. 掌握事务的使用方法 6. 掌握集合点的应用

VuGen操作

一、VuGen介绍

VuGen(Virtual User Generator)录制客户端和服务器之间的相关交互活动,它将自动生成相关模拟 实际情况的API(Application Programming Interface)函数。

python 提示: 1. LR录制脚本功能由于兼容性问题,非常不好使,所以我们平时在工作中也不建议使用录制的方式; 2. 由于兼容性问题和录制会产生多余的操作,因此一般都是手写脚本; 3. 为了更好的学习VuGen,我们基于LR11自带的订票系统为案例,练习使用VuGen。

案例1

python 需求:1. 录制机票网站的登录、退出脚本 使用: 1. 启动网站服务程序 2. 访问地址:http://127.0.0.1:1080/WebTours/ 3. 登录账户:用户名:jojo 密码:bean

【案例】-启动服务程序

创建脚本

python 位置:开始菜单 -> HP LoadRunner -> Samples -> Web -> Start Web Server 提示:WebTours项目默认使用1080端口,如果启动失败,看是否端口被占用或者是否有权限;

创建脚本

启动成功界面

二、案例1-实施步骤分析

python 1. 启动VuGen 2. 创建脚本 3. 选择录制协议 Web(HTTP/HTML)【重要】 4. 录制设置 5. 脚本录制 6. 运行脚本

2.1 启动VuGen

方式一:直接运行VuGen图标启动【推荐】

开始菜单 -> HP LoadRunner -> Applications -> Virtual User Generator VuGen启动

方式二:通过LoadRunner管理器启动

开始菜单 -> HP LoadRunner -> LoadRunner

VuGen启动02

VuGen启动03

点击:Create/Edit Scripts

2.2 创建脚本

创建脚本

python 1. 菜单栏(File) -> New 快捷键(Ctrl + N) 2. 常用工具栏 -> 第一个图标新建 3. Start Page:点击快捷创建脚本图标(new Script)【推荐】

2.3 选择协议

选择协议

python 1. New Single Protocol Script:单一协议 2. Popular Protocols:主流协议 3. Web(HTTP/HTML):HTTP协议【选择】

2.4 录制设置

录制选项

python 1. Application type:Internet Applications【选择】(Internet Applications:HTTP协议使用) 2. Program to record:选择浏览器 1). IE8:(提示:64位操作系统必须选择32位IE8!)【选择】 2). 火狐浏览器v24版本; 3. URL Address:http://127.0.0.1:1080/WebTours/(项目网址) 4. Working directory:工作目录(默认即可) 5. Record into Action:录制脚本存放的计划名 1). vuser_init:首先执行;迭代运行时候,只会运行一次 2). Action:可迭代运行、可新增【选择】 3). vuser_end:最后执行;迭代运行时候,只会运行一次 6. 点击OK -> 开始录制

2.5 脚本录制

WebTours

python 1. Recording...(xxx events):录制事件 2. 用户名:jojo 密码:bean 3. 点击Login 4. 点击Sign Off退出登录 5. 停止录制 6. 生成脚本

退出登录

WebTours

停止录制

WebTours

生成脚本

WebTours

2.6 运行(回放)脚本

验证录制脚本是否能正常运行

WebTours

python 1. 点击 Run 按钮 2. 快捷键:F5键

查看回放脚本的运行结果

WebTours

python 菜单(View) -> Test Results...

三、总结

python 1. 启动VuGen方式 2. 录制HTTP项目协议 3. 录制设置各选项含义 1). Application type 2). Program to record 3). URL Address 4). Working directory 5). Record into Action 4. 如何运行脚本 5. 如何查看运行脚本的结果

VuGen-扩展(录制、回放)

目标

python 1. 了解录制模式和脚本类型 2. 了解 Run-time Settings(运行时设置)

一、录制选项-扩展

WebTours

1.1 录制设置Options选项

WebTours

  1. HTML-based script: 所有请求放到一个函数内(这里所有请求是指,每步操作所产生的请求)

  2. URL-based script: 每个请求放到一个函数

提示:

python 1). 基于浏览器的应用程序推荐使用 HTML-based script 2). 不是基于浏览器的应用程序推荐使用 URL-based script 3). 基于浏览器的应用程序中使用了 HTTPS 安全协议,使用 URL-based script 方式录制

1.2 HTML Advanced选项

WebTours

```python 1. web_submit_form: 依赖上下文才能提交。 2. web_submit_data: 不依赖上下文,每个函数都指定了具体的 URL 地址,可以直接提交成功。【推荐】

提示:没有特殊的场景需求,推荐使用:web_submit_data ```

二、运行设置

Run-time Settings

(菜单-Vuser -> Run-time Settings) 快捷键:F4

2.1 Run-time Settings

python 1. Run Logic 脚本运行迭代次数 2. Think Time 运行时思考时间处理方式

1. RunLogic 迭代次数

WebTours

python 提示: 1. 迭代就是脚本要执行的次数 2. Init 与 End 由于只会运行一次,迭代次数设置不会生效

2. Think Time 思考时间

WebTours

python 提示: 1. Ignore think time 默认(忽略思考时间) 2. Replay think time (回放思考时间) 1). As recorded (录制多少秒,就等待多少秒) 2). MuItiply recorded think time by (录制时间的倍数) 3). Use random percentage of recorded think time ( Min(录制时间的最小百分比) Max(录制时间的最大百分比)) 4). Limit think time to(限制最高时间)

2.2 常用函数

python 1. lr_output_message() 2. lr_think_time()

1) 函数 lr_output_message()

python 输出到运行日志 如:lr_output_message("hello Action"); 参数:要输出的文本信息

2) lr_think_time()

python 思考时间 最大可能模仿用户真实操作 如:lr_think_time(4); 参数:停顿多少秒

练习

python 1. 输出Action被执行10次,使用迭代次数完成; 2. 输出Action1被执行暂停3秒后,输出Action2被执行;

练习脚本

python Action() { lr_output_message("Action1被执行"); lr_think_time(3); lr_output_message("Action2被执行"); return 0; }

2.3 扩展 编译

编译

python C语言属于高级语言,不能直接被计算机识别,需要进行编译成计算机可执行语言,在编译的时候如果脚本语法有错,会直接提示。 使用:点击编译图标或使用快捷键:Shift + F5

提示:

python 编译提示:No errors detected 代表通过;

VuGen-手动编写脚本

目标

python 1. 掌握C语言的注释方法 2. 掌握基于LR手动编辑脚本的方法

首先科普下C语言中的注释;

```python 1. //:单行注释 如://登录
2. //:多行注释 如:/多行 注释/

提示: 1). Ctrl + Alt + C 为单行注释快捷键; 2). Ctrl + Alt + U 为取消单行注释快捷键; ```

一、手动编写脚本
1.1 为什么要手写脚本
  1. 避免LR由于兼容性导致录制异常或失败;

  2. 手写脚本无冗余代码,更有利于脚本的增强(插入事务、参数化)和维护
1.2 手动编写脚本使用编写语言
  1. JAVA

  2. C语言【推荐】

提示:

python 1. LoadRunner中虽然默认是使用C语言录制/编写脚本,但我们无需专门去学C语言; 2. 只需注意下基础语法和掌握LR中常用的几个请求函数的用法就可以编写常用的脚本;

1.3 脚本请求 函数
  1. web_url()
  2. web_submit_data()
  3. web_custom_request()

提示:

python 1. web_url:GET请求使用 2. web_submit_data:GET、POST请求 3. web_custom_request:定制请求(GET\POST\PUT\DELETE)等,接口请求使用此函数

1.3.1 web_url() 函数【重点】

只能做GET请求;

语法:

python web_url("request name","URL=http://***",LAST); 1). request name:标记请求名称,比如:首页 2). URL=http://xxx:URL=为固定格式;http://xxx为GET请求地址 3). LAST结束标志;

1.3.2 web_submit_data()函数【重点】

默认设置是POST请求;也可以做GET请求。

语法:

python web_submit_data(StepName, Action=http://xxx, <List of Attributes>, ITEMDATA,<List of data>, LAST); 1). StepName:标记请求名称, 比如:登录 2). Action=http://xxx:Action=为固定格式;http://xxx:为提交地址 3). List of Attributes:其他属性 如:"Method=POST" 4). List of data:其他参数 如:"username=jojo" 5). LAST:结束符

提示:

python 1. POST提交参数比较多,但我们不需用一个个记,使用插入函数方法,在函数对话框内输入即可; 2. 录制HTML页面时,Mode推荐使用HTML;

1.3.3 web_custom_request() 函数【掌握】

自定义请求方法(GET/POST/PUT/DELETE),用于实现接口测试。

语法:

python web_custom_request(RequestName, <List of Attributes>,LAST); 1). RequestName:请求名称 2). List of Attributes:属性列表,如:"Method=POST" 3). LAST:结束符

提示:

python 一般做接口压测时使用;

练习

python 手动编写 iWebShop 的登录脚本;

未完待续, 同学们请等待下一期

全套笔记和代码自取移步gitee仓库: gitee仓库获取完整文档和代码

感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~

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

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

相关文章

列表推导式与生成表达式的区别

列表推导式与生成式表达式的区别&#xff1a; 列表推导式 res[i for i in range(6)] print(res) 结果&#xff1a; [0, 1, 2, 3, 4, 5] 生成表达式&#xff1a; res(i for i in range(6)) print(res) 结果&#xff1a; <generator object <genexpr> at 0x0000013EAD0…

linux系统---防火墙

目录 一、防火墙的认识 1.防火墙定义 2.防火墙分类 二、Linux系统防火墙 1.Netfilter 2.防火墙工具介绍 2.1iptables 2.2firewalld 2.3nftables 2.4netfilter的五个勾子函数和报文流向 2.4.1五个勾子 2.4.2三种报文流向 3.iptables 3.1iptables概述 3.2iptables…

Python在金融大数据分析中的AI应用实战

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 随着人工智能时代的到来&#xff0c;Python作为…

Java入门教程:介绍、优势、发展历史以及Hello World程序示例

Java入门教学 java语言介绍 Java是由Sun Microsystems公司(已被Oracle公司收购)于1995年5月推出的Java面向对象程序设计语言和Java平台的总称。由James Gosling和同事们共同研发&#xff0c;并在1995年正式推出。 Java分为三个体系&#xff1a; JavaSE&#xff08;J2SE&…

浅谈iPaaS对企业转型的重要性

面对数字化转型的大浪潮&#xff0c;众多企业都期望着能快速实现全面的数字化转型&#xff0c;让企业在日益激烈的竞争中拥有更稳的市场地位&#xff0c;提升自身的实力及能力&#xff0c;奠定更坚实的基底。但在数字化转型过程中&#xff0c;部分企业数字化基础水平较薄弱&…

开源软件:推动软件行业繁荣的力量

文章目录 &#x1f4d1;引言开源软件的优势分析开放性与透明度低成本与灵活性创新与协作 开源软件对软件行业的影响推动技术创新和进步促进软件行业的合作与交流培养人才和提高技能促进软件行业的可持续发展 结语 &#x1f4d1;引言 随着信息技术的飞速发展&#xff0c;软件已经…

设计模式Python实现

过年在家瞎折腾&#xff0c;闲着无聊看到设计模式&#xff0c;于是就想着用Python实现一下。 简单工厂 根据传入的参数决定创建出哪一种产品类的实例。 class CashFactory:def createCashAdapter(self, type):if type "满100减20":return CashReturn(100, 20)elif…

Sora爆火,普通人的10个赚钱机会

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通…

spring boot自动装配

第一步需要在pom.xml文件指定需要导入的坐标 要是没有自动提示需要检查maven有没有 实现代码 /*springboot第三方自动配置实现方法 * 什么是自动配置 自动配置就是springboot启动自动加载的类不需要在手动的控制反转自动的加入bean中 * * *//*第一种方案包扫描 不推荐因为繁琐…

2024 VNCTF----misc---sqlshark sql盲注+流量分析

流量分析 wireshark 可以看到很多 any/**/Or/**/(iF(((((Ord(sUbstr((sElect(grOup_cOncat(password))frOm(users)) frOm 1 fOr 1))))in(80))),1,0))# P any/**/Or/**/(iF(((((Ord(sUbstr((sElect(grOup_cOncat(password))frOm(users)) frOm 1 fOr 1))))in(104))),1,0))#…

18-k8s控制器资源-cronjob控制器

job控制器是执行完一次任务&#xff0c;就结束&#xff1b; cronjob控制器&#xff0c;是基于job控制器&#xff0c;定期频率性执行任务&#xff1b;等同于linux系统中的crontab一样&#xff1b; 1&#xff0c;编辑cronjob资源清单 [rootk8s231 pi]# vim cronjob.yaml apiVers…

mfc140u.dll文丢失导致应用程序无法正常,有哪些解决办法

mfc140u.dll是Microsoft Foundation Classes&#xff08;MFC&#xff09;的一个重要组件&#xff0c;它提供了许多用于开发Windows应用程序的功能和工具。然而&#xff0c;当系统或应用程序升级、恶意软件感染或文件损坏以及用户错误操作等情况发生时&#xff0c;mfc140u.dll文…

HarmonyOS—状态管理概述

在前文的描述中&#xff0c;我们构建的页面多为静态界面。如果希望构建一个动态的、有交互的界面&#xff0c;就需要引入“状态”的概念。 图1 效果图 上面的示例中&#xff0c;用户与应用程序的交互触发了文本状态变更&#xff0c;状态变更引起了UI渲染&#xff0c;UI从“He…

【OrangePi Zero2的系统移植】嵌入式Linux系统的组成、编译u-boot、编译内核、Linux根文件系统

一、嵌入式Linux系统的组成 二、编译u-boot 三、编译内核 四、Linux根文件系统 一、嵌入式Linux系统的组成 嵌入式Linux系统和PC完整的操作系统的对比如下&#xff1a; BIOS和UEFI的作用&#xff1a; a. 进行硬件自检&#xff0c;检测内存&#xff0c;CPU&#xff0c;显卡&a…

使用LlamaIndex和ChatGPT的无代码检索增强生成(RAG)

自从ChatGPT和类似的LLM推出以来&#xff0c;出现了大量的RAG工具和库。人们需要了解如何使用LlamaIndex和ChatGPT的无代码RAG。 检索增强生成(RAG)是使用大型语言模型(LLM)的关键工具。RAG使LLM能够将外部文档合并到它们的响应中&#xff0c;从而更紧密地与用户需求保持一致。…

Servlet要点总结

一、什么是 Servlet Servlet 在开发动态 WEB 工程中&#xff0c;得到广泛的应用&#xff0c;掌握好 Servlet 非常重要了 , Servlet( 基 石 ) 是 SpringMVC 的基础 Servlet(java 服务器小程序 ) &#xff0c;它的特点 : 1. 他是由服务器端调用和执行的 ( 一句话&…

RTC时钟

目录 一、STM32F407内部RTC硬件框图&#xff0c;主要由五大部分组成&#xff1a; 二、硬件相关引脚 三、具体代码设置步骤 四、了解其它知识点 一、STM32F407内部RTC硬件框图&#xff0c;主要由五大部分组成&#xff1a; ① 时钟源 (1)LSE&#xff1a;一般我们选择 LSE&am…

【EI稳定检索会议】第五届大数据、人工智能与软件工程国际研讨会(ICBASE 2024)

#往届均已成功检索# 投稿时邀请码请填H8053 第五届大数据、人工智能与软件工程国际研讨会&#xff08;ICBASE 2024&#xff09; 2024 5th International Conference on Big Data & Artificial Intelligence & Software Engineering 2024年09月20-22日 | 中国温州 &g…

16.Qt 工具栏生成

目录 前言&#xff1a; 技能&#xff1a; 内容&#xff1a; 1. 界面添加 2. 信号槽 功能实现 参考&#xff1a; 前言&#xff1a; 基于QMainWindow&#xff0c;生成菜单下面的工具栏&#xff0c;可以当作菜单功能的快捷键&#xff0c;也可以完成新的功能 直接在UI文件中…

Java并发基础:ConcurrentSkipListSet全面解析!

内容概要 ConcurrentSkipListSet类在多线程环境下&#xff0c;它能够轻松应对大量的插入、删除和查找操作&#xff0c;同时保持数据的完整性和一致性&#xff0c;其内部基于跳表数据结构的实现&#xff0c;确保了即使在处理大规模数据时&#xff0c;也能具有出色的性能表现。 …