【涨薪技术】0到1学会性能测试 —— LR录制回放事务检查点

上一次推文我们分享了性能测试分类和应用领域,今天带大家学习性能测试工作原理、事务、检查点!后续文章都会系统分享干货,带大家从0到1学会性能测试,另外还有教程等同步资料,文末免费获取~

01、LR工作原理

​通常我们认为LoadRunner是由三部分组成:VuGen、Controller、Analysis

VuGen:录制与增强脚本的地方,即将我们的操作行为变成代码;

Controller:模拟多用户执行脚本,相当于模拟多用户口对服务器进行操作;

Analysis:将运行时的结果保存到EXCEL表中,然后再将数据读取出来,并以视图的方式来显示;

也人会说LoadRunner工作是由4部分组成;

02、录制与回放原理

LoadRunner在录制过程中其实是将所有客户端向服务器发送的请求变成了函数,由函数来代替人向服务器发送请求。

之所以需要在录制时选择协议,是因为LoadRunner一定要能看的懂客户端向服务器所发送的数据内容,如果LoadRunner看不懂客户端向服务器发送的数据,那么LoadRunner就无法生成代码。

而生成的代码所看的内容,其实与抓包所看到的内容是一样的。

所以我们通常说性能测试是基于协议录制,自动化测试是基于对象属性录制。

LoadRunner录制的方式有两种:一是基于HTML录制;二是基于URL录制

HTML模式:基于用户行为录制;

URL录制:将所有的HTTP请求都录制下来;

03、事务
  • 为什么需要插入事务

正常我们录制好的脚本是不能获取业务的响应时间的,所谓的业务响应简单的来说就是我们一串操作步骤的响应时间。

为了获取这个响应时间我们会在操作前插入开始,操作结束后插入结束事务,通过可以获取业务的响应时间。

  • 如何插入事务

插入事务的方法有两种:

一是:录制过程中插入事务;

二是:录制后插入事务;

一般建议在录制过程中插入事务,因为录制后插入事务,如果对代码不是很熟悉的话,那么很容易把位置插入错了,这样会导到得到的响应时间不对。

插入事务后会生成以下代码:

  1. //开始事务

  2. lr_start_transaction("LOGIN");

  3. .....

  4. //结束事务

  5. lr_end_transaction("LOGIN", LR_AUTO);

  6. 当运行开始事务时,loadrunner会计时,运行到结束事务时loadrunner也会计时

  7. 将结束事务时的计时减去开始事务的计时,所得到的时间差即为事务的响应时间。

  8. 其实就是计算开始事务到结束事务这段请求所消耗的时间

  • 事务的结束状态

事务的结束状态有四种:LR_AUTO、LR_PASS、LR_FAIL、LR_STOP

LR_AUTO:LoadRunner自动判断事务的结束状态

LR_PASS:运行结果为通过状态

LR_FAIL:运行结果为失败状态

LR_STOP:运行结果为停止状态

之所以结束事务有结束状态的要求,是因为通过结束状态可以来确定事务是否成功,即业务是否成功。最后可以计算出业务成功率。

那么如何确定事务的结束状态呢?正常应该是先做检查点,通过检查点的结果来判断业务是否成功。

04、检查点
  • 如何插入检查点

插入检查点的步骤如下:

1.将代码切换为tree模式,在tree模式下,显示请求的信息有两种方式:

一是:html viewer;

二是:httpviewer

2.找到需要验证的页面

3.选择我们需要检查的内容,单击右键,选择“add text check”

4.在弹出的find text对话框中,输入相关信息

  • 如何通过检查点判断事务的结束状态

通过检查来判断被检查的对象出现的次数,如果出的次数大于说明,至少找到一次,则说明业务是成功的,否则业务为失败。

  1. if(atoi(lr_eval_string("{num}")) > 0)

  2. {

  3. lr_end_transaction("LOGIN", LR_PASS);

  4. }

  5. else

  6. {

  7. lr_end_transaction("LOGIN", LR_FAIL);

  8. }

  • 检查点函数
  1. 检查点函数语法:

  2. int web_reg_find( const char *attribute_list, LAST );

  3. 参数说明:

  4. Text:表示需要查找的内容;

  5. Search:表示所查找的内容所出现的位置,在哪个部分去查找我们要的内容。有三个选项:Body、

  6. Headers、All,一般情况都是在Body,默认选项为Body。

  7. SaveCount:将匹配到的次数保存在这个变量中。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

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

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

相关文章

gitee拉取与推送

🌱博客主页:青竹雾色间 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 目录 一,从本地推送项目到gitee1.首先我们在gitee上创建一个仓库2.clone远程仓库到本地3.git的三板斧3.1. add - 将代码添加到本地仓库3.2. commit …

HarmonyOS实战开发-实现Ability内页面间的跳转和数据传递。

介绍 本篇Codelab基于Stage模型下的Ability开发,实现Ability内页面间的跳转和数据传递。 最终效果图如下: 相关概念 页面路由:提供通过不同的url访问不同的页面,包括跳转到应用内的指定页面、用应用内的某个页面替换当前页面、…

UWB辅助RTK如何应对极端环境

1.UWB定位 - UWB(Ultra-Wideband)是一种无线通信技术,其特点是具有较宽的频带,可以提供0.1-0.5m高精度的距离测量。 - UWB定位需要四台基站(每台基站视距间隔50-100米)呈矩形安装部署,以实现…

JHY-31复合电压继电器 额定电压Un=110VDC 板后接线 JOSEF约瑟

用途: JHY-31复合电压继电器使用于电力系统的继电保护线路中,作为各种类型故障的判别元件和电压闭锁元件。 继电器型号名称: 例:辅助直流工作电压为110V的复合电压继电器的订货代号为: JHY-31/110V。 工作原理: 继电器内部具有负…

9、jenkins微服务持续集成(一)

文章目录 一、流程说明二、源码概述三、本地部署3.1 SpringCloud微服务部署本地运行微服务本地部署微服务3.2 静态Web前端部署四、Docker快速入门一、流程说明 Jenkins+Docker+SpringCloud持续集成流程说明 大致流程说明: 开发人员每天把代码提交到Gitlab代码仓库Jenkins从G…

基于GA遗传优化的离散交通网络双层规划模型设计matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于GA遗传优化的离散交通网络双层规划模型设计.优化输出路段1和路段2的收费情况收敛过程。 2.测试软件版本以及运行结果展示 MATLAB2022a版本运行 3.核心程序…

Web前端—(原生JS)歌词滚动效果

歌词滚动效果实现 歌词滚动效果HTML部分CSS部分JS部分解析歌词字符串,得到歌词的对象数组计算在当前情况下,播放器播放到第几秒的情况创建歌词元素设置ul元素的偏移量最后对时间变化的事件进行监听完整JS代码 歌词滚动效果 实现效果如图所示&#xff1a…

可重复不限数量结构数列的演化

有一个6*6的平面,这个平面的行和列可以自由的变换,在这个平面上有一个4点结构数列 按照8,13,5,8的顺序排列。让这个数列按照4-5-4的方式演化 这个数列很快收敛,收敛顺序为13,8,8,5 8…

前端小白如何理解mvc mvp mvvm

架构、框架、设计模式是都是啥? 架构:抽象出来不同组织或者对象亦或是简单组件,根据需求和各个单元的功能,进行组合排列。 从而完成系统的运行或者是实现目标。 框架:使用什么样的规则,什么样的开发语言&…

接口自动化测试问题汇总

本篇文章分享几个接口自动化用例编写过程遇到的问题总结,希望能对初次探索接口自动化测试的小伙伴们解决问题上提供一小部分思路。 sql语句内容出现错误 空格:由于有些字段判断是变量,需要将sql拼接起来,但是在拼接字符串时没有…

npm mongoose包下载冲突解决之道

我在新电脑下载完项目代码后,运行 npm install --registryhttps://registry.npm.taobao.org 1运行就报错: npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: lowcode-form-backend1.0.0 npm …

Python | 单变量时间序列分析与预测

时间序列数据是机器学习中最具挑战性的任务之一,也是与数据相关的现实问题之一,因为数据实体不仅取决于物理因素,而且主要取决于它们发生的时间顺序。我们可以基于一个单变量特征和两个双变量或多变量特征来预测时间序列中的目标值&#xff0…

合集:JS异步的六个解决方案详解。

Hello,各位老铁,最近发表了js异步的解决方案,是分开发的,这次我把他汇总起来,方便大家收藏、查看,欢迎点赞评论私信交流。 01.详解:JS异步解决方案之回调函数,及其弊端 02.详解&…

全套医院手术麻醉系统源码 人工智能麻醉系统源码 医疗管理系统源码

全套医院手术麻醉系统源码 人工智能麻醉系统源码 医疗管理系统源码 手术麻醉临床信息系统有着完善的临床业务功能,能够涵盖整个围术期的工作,能够采集、汇总、存储、处理、展现所有的临床诊疗资料。通过该系统的实施,能够规范麻醉科的工作流…

【LV16 day2 平台总线驱动开发---名称匹配】

一、总线、设备、驱动 硬编码式的驱动开发带来的问题: 垃圾代码太多结构不清晰一些统一设备功能难以支持开发效率低下 1.1 初期解决思路:设备和驱动分离 ​ struct device来表示一个具体设备,主要提供具体设备相关的资源(如寄…

[深度学习]yolov8+pyqt5搭建精美界面GUI设计源码实现二

【简单介绍】 基于目标检测算法YOLOv8和灵活的PyQt5界面开发框架,我们精心打造了一款集直观性、易用性和功能性于一体的目标检测GUI界面。通过深度整合YOLOv8在目标识别上的卓越能力与PyQt5的精致界面设计,我们成功研发出一款既高效又稳定的软件GUI。 …

java全排列(力扣Leetcode46)

全排列 力扣原题链接 问题描述 给定一个不含重复数字的数组 nums,返回其所有可能的全排列。你可以按任意顺序返回答案。 示例 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例 2…

OpenHarmony error: signature verification failed due to not trusted app source

问题:error: signature verification failed due to not trusted app source 今天在做OpenHarmony App开发,之前一直用的设备A在测试开效果,今天换成了设备B,通过DevEco Studio安装应用程序的时候,就出现错误&#xf…

gpt 3d三角形 重心坐标填充 沿x轴炫赵师傅

go import pygame from pygame.locals import * import sys import math# 初始化Pygame pygame.init()# 设置窗口大小 width, height 800, 600 screen pygame.display.set_mode((width, height)) pygame.display.set_caption(3D Triangle Fill with Barycentric Coordinates)…

Windows 远程访问 Ubuntu Desktop - 虚拟网络控制台 (Virtual Network Console,VNC)

Windows 远程访问 Ubuntu Desktop - 虚拟网络控制台 [Virtual Network Console,VNC] References 1. Desktop Sharing 2. Desktop Sharing Preferences 勾选 允许其他人查看您的桌面 勾选 要求远程用户输入此密码 取消勾选 必须为对本机器的每次访问进行确定 3. 虚拟…