商城性能测试LoadRunner快速上手教学

软件介绍

  • Virtual User Generator ,记录用户流程并创建一个自动化性能测试脚本
  • Controller,单一控制点,轻松、有效地控制所有Vuser,执行期间监控场景性能
  • Analysis,生成性能测试报告,以图表形式呈现。

由于教程篇幅较大,尽可能地照顾大部分学习情况,更多还是要大家多读官方文档,多去上手测试学习。

如果你还没有安装软件,或者是用的LoadRunner 12这样的老版本,我在阿里云盘分享了LoadRunner 2023的安装包。

前置要求

  1. 需要简单了解LoadRunner软件功能有哪些
  2. 了解HTTP网络工作方式
  3. 拥有C语言基础
  4. 软件测试术语

本次教学应该会花费20-30分钟,生成测试报告也要接近半个小时

如果对软件测试、接口、自动化、性能测试、测试开发、面试经验交流。感兴趣可以加裙485187702,群内会有不定期的发放免费的资料链接,这些资料都是从各个技术网站搜集、整理出来的,如果你有好的学习资料可以私聊发我,我会注明出处之后分享给大家。
 

选用被测系统

这里选用华测教育在线商城

关于接口文档,在他们培训机构资料领取里面,同时我也放在了上面链接里面。

VuGen的推荐配置

录制设定

由于是模拟用户真实行为,所以录制应当是基于HTML

脚本只要有包含的URL请求就好了,Web用户的界面动作并不重要。

日志设定

也许你有参数化,但是如果次次手动打印到output太麻烦了

 

当然,你还可以将服务器返回的数据打印,但是没必要,snapshot快照就能很清楚查看。

现在不管是关联的,还是预先设定好的参数,都可以很清晰看到值。

录制脚本

初始动作 - 登录

打开VuGen软件

默认创建

 

新建后,有3个行为(Action),代表的启动脚本、运行时脚本、结束脚本。

那就开始录制吧

 

进入到了商城首页,我们需要先进行登录,以模拟场景下用户第一次的动作

 

账号密码
lisi123456
huace_testerhuace_tester

提示登录成功后,就可以将vuser_init切换至Action

事务 - 添加购物车

这里就点进小米4手机,作为要加入购物车的商品。

 

进入详细商品页面之后。

加入购物车之前,先点击开始事务(Start Transcation),这里命名为add_car

 然后成功加入购物车后,一定不要忘记结束事务

结束动作 - 退出登录

接下来就是模拟用户的退出系统操作,切换成录制vuser_end脚本

 

然后点击系统的左上角退出登录

 可以结束录制脚本了

修改脚本

回放脚本 - 程序介绍

修改脚本之前,简单的聊一下录制后的脚本(程序)

可以看到Action都是标准的C语言程序。 不过,并不支持C99语法,要正常写的话,得是C89语法,也就是ANSI C

 

C语言基础很好的同学,可以一眼就能理解脚本程序了。

可以说,函数名就是脚本Action名称,vuser_initvuser_end对应着启动和结束的钩子函数。执行一个脚本,就相当于调用了这个函数。

进入Actionsvuser_init程序来看一下调用了哪些函数

  • web_set_sockets_option,用于设置与网络通信和套接字操作相关的选项
  • web_add_auto_header自动请求头加入信息,这个自动的意思是“后续的请求,都会有这个请求头信息”。
  • web_url,实际上是发送HTTP请求,可以简单理解“模拟浏览器请求一个新的页面(HTML文件),并同时包含了其他静态文件的请求(cssjspng文件等等)”。
  • web_revert_auto_header,对应结束自动请求头加入信息
  • web_add_header下一个请求,会加入此请求头信息
  • lr_think_time,思考时间函数,也就是程序睡眠时间,等同于Windows库中的sleep函数
  • web_submit_data,模拟用户的表单提交操作,也就是HTMLform标签事件。

F5,或者是点击下面的按钮,先进性回放脚本

 

回放脚本的意思,等同于执行脚本

在底部的output中,可以看到添加购物车事务,正常执行并结束

然后看一下快照Snapshot

 

然后此时,鼠标点击函数的地方,就可以看见整个网络请求。 比如我这里演示的是,vuser_init.c脚本中的登录POST请求。

 

检查点 - 登录成功

这里需要用到函数创建工具,在LoadRunner里叫步骤工具箱(Steps Toolbox

 然后要使用一个注册类型的函数,web_reg_find可以查找下一个动作函数中,是否符合对应的匹配值(文本)。

再次回放脚本,可以发现已经找到了这个值,如果不成功的话

 

关联参数化 - 登录账号

这里我们的任务是,随机抽取一个账号密码进行登录

首先必须要有一个外部参数的引入,也就是类似账号密码表格的文件

文件路径可以自己起个名字保存。 ’选择下一次‘ 一定要是 Ramdom(随机),才符合任务要求。(这里其实不只是下一次随机,第一次也会随机)

为什么不用File类型?因为在LoadRunner中,File类型只能读取行中一列数据,而账户密码是与之相对应的行数据,如果需要随机账户密码登录,就必须让行完整。

这样,拿到的参数值,为 账号,密码 形式,接下来就是分割字符串,要用到string.h库的strtok

#include <string.h>
vuser_init()  
{char * tableResultString = lr_eval_string("{account}");  // 分割符  const char * delim = ",";  // 账号  char * account = strtok(tableResultString,delim);  // 密码      char * pwd = strtok(NULL,delim);  // 注册关联参数  lr_save_string(account, "acc");  lr_save_string(pwd, "pwd");  // --- 输出变量的值  lr_log_message("account变量 %s",account);  lr_log_message("pwd变量 %s",pwd);  // --- 输出关联参数的值  lr_log_message("关联参数的账号为 %s",lr_eval_string("{acc}"));  lr_log_message("关联参数的密码为 %s",lr_eval_string("{pwd}"));...return 0;
}

 

lr_eval_string的意思是,将LoadRunner可以执行的参数,转换成C语言的字符串。 lr_save_string的意思是,将C语言字符串值,保存到LoadRunner参数。 lr_log_message则是在LoadRunner的输出中打印信息。

 

可以看到,实现了随机抽取用户。

接着就是,在网络提交的时候,使用这个值。

找到唯一POST请求,在请求体字符串中,参数值替换成{参数名}形式。

外部参数化 - 不同商品加入购物车

来看看录制的时候,网络请求和Web页面有哪些关系

 这是小米4的,那其他的呢?

可以看到,2、3、4、5对应着苹果、三星、华为、魅族手机。

这个数字,就是商品id,现在我们的任务是:将商品id为1-10的,按每次迭代顺序添加到购物车

打开参数列表,开始创建一个外部参数吧,参数类型为File

参数值手动录入进去,或者是用工具生成。

 然后,将代码中所有的网络请求,引用商品id为1的字段,换成LoadRunner参数goods

有一个便携的办法,那就是通过action脚本中,搜索全部id/1的地方。因为这里只引用了商品id。

 

这样我们就完成了本任务,但是会发现output,只引用了goods = 1,因为本脚本只运行一次,后面我们需要加入迭代次数。

集合点 - 加入购物车

本任务:为加入购物车业务设置一个集合点

 

在设计中,或者是右击脚本,可以找到 插入(Insert) - 集合点(Rendezvous),然后命名为add_car_r

集合点不应该被包含事务里面,否则集合点等待时间,会被算在事务时间

这样就完成了,集合点的目的是,某个业务功能的压力测试,也就是一群用户做相同功能。

回放脚本

迭代次数

这一次任务,将把1-10商品ID都用到,那么需要加入迭代次数

进入 运行时设定(Runtime Settings) - 运行逻辑(Run Logic) - 迭代次数(Number of iterations) 这里设置为15吧,意味着run生命周期Action(脚本)重复15次。

然后开始点击回放

最后:下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!【100%无套路免费领取】

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

8小时传疯!大厂面试真题全被大佬整理在这个小程序上了!【软件测试,建议收藏】

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础 

  全套资料获取方式:点击下方小卡片自行领取即可

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

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

相关文章

UE5使用Dash插件实现程序化地形场景制作

目录 0 dash下载后激活 1 初步使用 2 导入bridge的资产路径 3 练习成果 4 参考链接 0 dash下载后激活 1 初步使用 Dash插件点击蓝色的A&#xff0c;可以使用。 通过输入不同提示命令&#xff0c;来激活不同的功能。 2 导入bridge的资产路径 这里需要注意是UAsserts…

解决Linux Debian12系统中安装VirtualBox虚拟机无法使用USB设备的问题

Debian12系统中安装VirtualBox&#xff0c;再VirtualBox虚拟机中无法使用 USB设备。如下图所示&#xff1a; 解决方法如下&#xff1a; 1.安装 Virtualbox增强功能。如下图所示&#xff1a; 2.添加相关用户、用户组&#xff08; Virtualbox 装完成后会有 vboxusers 和 vboxs…

Vue:实现输入vue组件名称,就可以从网页上加载出组件

作者:CSDN @ _乐多_ 本文记录了使用动态组件实现在网页上输入vue组件名称,就可以从网页上直接加载组件的功能的代码。 实现效果如下所示, 在许多Vue.js应用中,我们有大量的组件,但并不是每个组件都需要在应用初始化时加载。动态加载组件的好处包括: 减小初始加载时间:…

Android页面周期、页面跳转

1.什么是Activity&#xff1f; Activity是Android的四大组件之一&#xff0c;它是一种可以包含用户界面的组件&#xff0c;主要用于和用户进行交互。Activity用于显示用户界面&#xff0c;用户通过Activity交互完成相关操作&#xff0c;一个APP允许有多个Activity。 2.Activi…

职业规划:如何成为年薪80W+的Salesforce项目经理?

Salesforce项目经理负责监督各种Salesforce云和端到端Salesforce项目&#xff0c;首要任务是确保项目成功&#xff0c;并在预算范围内按时交付。Salesforce项目经理的薪资是不断增长的Salesforce经济中的热门话题。 Salesforce项目经理的职责 项目经理的职业发展更多地关注经验…

JS 去除字符串中所有标点符号

直接上代码了 var str 这是《书》中的一段&#xff0c;两段文字。; var new_str str.replace(/[:_.~!#$%^&*() \ <>?"{}|, \/ ; \\ [ \] ~&#xff01;#&#xffe5;%……&*&#xff08;&#xff09;—— \ {}|《》&#xff1f;&#xff1a;“”【】、&a…

Goby 漏洞发布| Cisco IOS XE ebui_wsma_http 接口权限绕过漏洞(CVE-2023-20198)

漏洞名称&#xff1a; Cisco IOS XE ebui_wsma_http 接口权限绕过漏洞&#xff08;CVE-2023-20198&#xff09; English Name&#xff1a; Cisco IOS XE ebui_wsma_http API Permission Bypass Vulnerability (CVE-2023-20198) CVSS core: 10 影响资产数&#xff1a; 307282…

分享一下微信小程序里怎么开店

如何在微信小程序中成功开店&#xff1a;从选品到运营的全方位指南 一、引言 随着微信小程序的日益普及&#xff0c;越来越多的人开始尝试在微信小程序中开设自己的店铺。微信小程序具有便捷、易用、即用即走等特点&#xff0c;使得开店门槛大大降低。本文将详细介绍如何在微…

概念解析 | 神经网络中的位置编码(Positional Encoding)

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:Positional Encoding 神经网络中的位置编码(Positional Encoding) A Gentle Introduction to Positional Encoding in Transformer Models, Part 1 1.背景介绍 在自然语言处理任…

RocketMQ消费者和队列对应关系

参考 RocketMQ 5.0 POP 消费模式探秘 https://www.cnblogs.com/alisystemsoftware/p/15535925.html 旧版本MQ结论 消费者应用和topic队列一对多的关系。 &#xff08;一个消费组consumer group里&#xff0c;一个消费者应用可以消费多个队列的消息。一个队列的消息只能被一个…

​LeetCode解法汇总1465. 切割后面积最大的蛋糕

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; 矩形蛋糕的…

C++对象的内存分布和虚函数表

Linux C/C 开发(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全) c中一个类中无非有四种成员&#xff1a;静态数据成员和非静态数据成员&#xff0c;静态函数和非静态函数。 1.非静态数据成员被放在每一个对象体内作为对象专有的数据成员。 2.静态数据成员被提取出来…

uniapp leven系列原生插件(2)

目录 11.安卓客户端之间wifi文件传输 插件介绍 插件地址 预览图片 12.安卓热敏打印机打印插件 插件介绍 插件地址 使用文档 预览图片 13.安卓TCP原生插件 插件介绍 插件地址 使用文档 预览图片 14.安卓文字转拼音原生插件 插件介绍 插件地址 使用文档 预览图…

迅镭激光董事长颜章健荣膺“2023年如皋市科技强企人物”!

10月28日&#xff0c;2023如皋科技人才洽谈会开幕式在如皋隆重举行。江苏省科学技术厅副厅长、党组成员蒋洪&#xff0c;江苏省商务厅副厅长、党组成员孙津&#xff0c;中共南通市委副书记、政法委书记沈雷&#xff0c;中共如皋市市委书记何益军&#xff0c;中共如皋市委副书记…

人人都能看懂的DDPM反向降噪过程公式推导

0 前言 上一篇介绍了前向加噪过程&#xff0c;得到如下从 x 0 x_0 x0​ 一步到 x t x_t xt​ 过程&#xff1a; α t β t 1 \alpha_t \beta_t1 αt​βt​1&#xff0c;其中 β t \beta_t βt​ 是正态分布方差&#xff0c;即第 t t t 步产生的噪声从 N ( 0 , β t ) …

效率提升测试工具开发的思考

本文针对测试部效率提升测试工具开发、管理、维护暴露出来的问题的一些思考以及一些个人改进观点。 写在前面 本文提到的效率提升测试工具不是指的部门中固有的自动化测试工具&#xff0c;这里提到的测试工具统一指测试人员在工作之余自主开发用于期望替代重复、繁琐、耗时的手…

【设计模式】第6节:创建型模式之“原型模式”

由于本人现在所使用的语言主要是golang&#xff0c;所以后面的代码主要使用golang编写。语言实现应该不是障碍&#xff0c;主要是理解每种设计模式它的思想。 如果对象的创建成本比较大&#xff0c;而同一个类的不同对象之间差别不大&#xff08;大部分字段都相同&#xff09;…

【金银钻思】

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

希亦T800 Pro双滚刷双活水洗地机发布:颠覆纯水洗,水汽混动技术的旗舰新杰作

11月1日&#xff0c;CEYEE希亦正式发布首款双滚刷双活水洗地机&#xff0c;集吸尘、洗拖、烘干于一体&#xff0c;双刷双喷淋一分钟洗地机1000次&#xff0c;可达10倍洁净效果&#xff01;该产品已正式在各大平台上开售&#xff0c;首发价2399元。 近年来&#xff0c;洗地机市…

Redis 原理缓存过期、一致性hash、雪崩、穿透、并发、布隆、缓存更新策略、缓存数据库一致性

redis过期策略 redis的过期策略可以通过配置文件进行配置 一、定期删除 redis会把设置了过期时间的key放在单独的字典中&#xff0c;定时遍历来删除到期的key。 1&#xff09;.每100ms从过期字典中 随机挑选20个&#xff0c;把其中过期的key删除&#xff1b; 2&#xff09;.…