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

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

时间:2024-02-17 19:57:06浏览次数:28  
标签:脚本 web VuGen 请求 运维 录制 测试 time

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

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

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


共 5 章,25 子模块

性能测试工具-LoadRunner

学习目标

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

VuGen操作

一、VuGen介绍

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

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

案例1

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

【案例】-启动服务程序

创建脚本

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

创建脚本

启动成功界面

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

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 创建脚本

创建脚本

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

选择协议

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

录制选项

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

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

退出登录

WebTours

停止录制

WebTours

生成脚本

WebTours

2.6 运行(回放)脚本

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

WebTours

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

查看回放脚本的运行结果

WebTours

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

三、总结

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-扩展(录制、回放)

目标

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

一、录制选项-扩展

WebTours

1.1 录制设置Options选项

WebTours

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

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

提示:

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

WebTours

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
1. Run Logic      脚本运行迭代次数
2. Think Time     运行时思考时间处理方式
1. RunLogic 迭代次数

WebTours

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

WebTours

提示:
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 常用函数
1. lr_output_message()
2. lr_think_time()
1) 函数 lr_output_message()
输出到运行日志  如:lr_output_message("hello Action");
参数:要输出的文本信息
2) lr_think_time()
思考时间 最大可能模仿用户真实操作 如:lr_think_time(4);
参数:停顿多少秒

练习

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

练习脚本

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

2.3 扩展 编译

编译

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

提示:

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

VuGen-手动编写脚本

目标

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

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

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

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

一、手动编写脚本

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

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

  2. C语言【推荐】

提示:

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

提示:

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

只能做GET请求;

语法:

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请求。

语法:

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:结束符

提示:

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

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

语法:

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

提示:

一般做接口压测时使用;

练习

手动编写 iWebShop 的登录脚本;

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

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

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

标签:脚本,web,VuGen,请求,运维,录制,测试,time
From: https://www.cnblogs.com/yinuo112/p/18018269

相关文章

  • 2024初三年后集训模拟测试1
    前言总分\(310\)\(T1~100\)\(T2~100\)\(T3~50\)题解方法属实巧妙,考场上想到了枚举平均值和前缀和,但没想到满足\(sum_{l-1}=sum_r\)(见下面题解)。\(T4~60\)离谱题:存在多组可能的解,输出满足条件的一组解即可。评测方式:文本比较。没有\(special~judge\)......
  • 2024初三集训模拟测试1
    2024初三集训模拟测试1\(T1\)edit\(100pts\)字符串模拟即可。貌似不能写成while(cin>s),因为每两个单词中可能不只有一个空格。点击查看代码strings;intmain(){ freopen("edit.in","r",stdin); freopen("edit.out","w",stdout); getline(cin,s); cou......
  • 2024初三集训模拟测试1
    2024初三集训模拟测试1所以正解和一行\(-1\)等分T1edit:语法题。考getline正确使用T2game:简单\(dp\)也可以贪心,见The_Shadow_Dragon。注意初始化。CODE#include<bits/stdc++.h>usingnamespacestd;usingllt=longlong;usingull=unsignedlonglong;......
  • 【高可用高性能环境】多用户、高并发环境研究设计与测试验证
    在设计和测试多用户、高并发环境时,需要考虑以下几个方面:一、架构设计:采用分布式架构,将系统拆分为多个服务,每个服务负责不同的功能,降低单点故障风险。使用负载均衡技术,将流量均匀地分发到不同的服务器上,提高系统整体性能和可用性。二、数据库设计:使用适当的数据库技术,如主从复......
  • 【QA与QC】质量控制与测试
    QA与QC概念说明:1.QA是QualityAssurance,如质量人员。QA主要是事先的质量保证类活动,以预防为主,期望降低错误的发生几率。质量保证(QA):是指确保产品符合预定质量要求而作出的所有有组织、有计划活动的总和。2.QC是QualityControl,如测试人员。QC:主要是事后的质量检验类活动为......
  • 华为云GES助力九洲平台:探索确定性运维的新实践
    本文分享自华为云社区《基于华为云GES的九洲平台确定性运维实践》,作者:华为云GES团队华为云SRE九洲团队。1制约运维自动化的三大挑战传统的云资源运维存在诸多问题:对风险的管控仍然依赖人工而不是工具系统,风火水电基础设施在遇到问题时因无法定位影响只能全局管控,使影响面无故......
  • 8.【2024初三年前集训测试3】
    \(\Huge打了一场模拟赛,终于不垫底了。qwq\)2024初三年前集训测试3T1夕景昨日\(90pts\)不好想,一直做到最后了,然后发现过不了样例,发现读假题了\(\Largeqwq\Huge......
  • 渗透测试工具
     渗透测试工具是用于评估网络、系统或应用程序安全性的软件工具,它们可以帮助识别潜在的安全漏洞。这些工具范围广泛,包括网络扫描器、漏洞评估工具、密码破解工具和应用程序分析工具等。下面是一些常用的渗透测试工具:BurpSuite:一个用于测试Web应用程序安全性的工具套件,包括爬......
  • dotnet-cnblog tool 测试案例
    这是测试donet-cnblog工具是否能将正常的Typora图片转换为博客园格式测试1:本地图片导入测试2:QQ截图测试3:urlhttps://pics3.baidu.com/feed/9345d688d43f8794105499b2ead60ef819d53ad8.jpeg@f_auto?token=d70fe4868ac1356d70833be721199be3结论成功!!!随后整理出自己的实践......
  • 性能测试-性能压测脚本的生成以及完善和增强
    1.通过JMeter代理服务器录制脚本为什么用JMeter做性能测试时要 设置客户端的代理JMeter在进行性能测试时,设置客户端代理的主要目的是为了监听和记录浏览器在相应端口的操作。通过设置代理,JMeter可以捕获和记录用户的网络请求和响应,从而模拟用户在真实场景中的行为,对系统进行性......