LoadRunner脚本测试——登录实践

2023-11-09

实习公司最近在做一款会计项目的财政管理系统。跟着测试组在做登录响应测试时,学到了不少实践经验。本文作以简单阐述和分享。

– 通过代理服务器录制脚本

测试系统的门户必须用Chrome打开,然而测试环境lr11似乎只对IE浏览器兼容。事实上,lr与浏览器不兼容、打开浏览器无响应的情况时常出现(详见我的上一篇blog)。通过使用代理可以解决二者不兼容的问题。

启用LR代理服务器后,它会监听设置的端口号是否有请求信息发送给服务器。有请求发生时,代理服务器接收请求,并转发给对应的系统服务器,同时LR获取请求的信息与数据,生成脚本。

注意:使用代理需要使本机IP和服务器IP处在同一网段内。

设置代理需要分别配置lr和浏览器。

  • lr代理
    打开Recording Options,在Mapping Filtering中添加New Entry,Target Server填写系统服务器地址,ID选择HTTP。
    在Traffic中同理,注意在设置端口号时避免被占用(尽量大一点,如9998)。
    最后将Application由浏览器更改为lr->bin目录下的wplus_init_wsock.exe。

  • 浏览器代理
    在浏览器的连接设置里,选择手动配置服务器,输入本机IP和与lr监听中相同的端口号

开始录制,Vugen会连接自带的代理,正常情况下用任一浏览器访问服务器的操作都会被录制。

我在手动配置浏览器代理后,出现了外网、局域网、本机服务器都无法连接的情况……Overwhelmed...
  

– 身份标识码token参数化

  • About token

token 是在服务端产生的。当前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 token 给前端。前端在后续的每次请求中可以通过token证明其合法身份。

token一般有两个用处:身份验证防止表单重复提交
因此,在测试登录脚本时,处理token的更新必不可少。

当录制好登陆脚本后,在Design Studio中检测到关联。启动关联后,脚本中自动生成了一段关联代码:

在这里插入图片描述(后面所有提交请求代码中的session值都被替换成了{userSession})

其实关联采用的也是类参数化的方法,新建了“userSession”变量,只不过它的参数取值是即时从服务器获取的。
web_reg_save_param()类函数按照一定的策略从服务器返回的信息中过滤和获取信息。
我们来看看上述代码在生成过程中的日志信息:
在这里插入图片描述
在这里插入图片描述可以找到userSession的值。同时也可以看到,当前端发出Body请求时,带上了这个值说明验证成功。
再回头看上面的关联代码中,RegExp的value建立了一个正则表达式来获取session值。
(其它同理,如web_reg_param_ex()是通过设置左右边界的方法,不过只适用于静态边界的情况。)

  • 题外话:token有效期的设置
    从确保安全的角度考虑,需要为token设置有效期,过期的token值会在服务器中被吊销。
    那么,有效期应该设置多久呢?从安全的角度考虑当然是越短越好,但不能短的过分。
    例如,在用户正常操作过程中突然被要求验证身份,用户体验会非常糟糕。
    方案1:保持token有效状态。当每次用户请求时,都刷新一次token值。但当每秒请求数很大时,频繁刷新会造成很大的传输压力和内存开销。
    方案2:Refresh token。当token即将过期时,客户端向服务器请求更新一个新的token。服务器只需要在这个时候检查Refresh token的有效性。
  • request 指在一次请求的全过程中有效,即从http请求到服务器处理结束,返回响应的整个过程,存放在HttpServletRequest对象中。在这个过程中可以使用forward方式跳转多个jsp。在这些页面里你都可以使用这个变量。
  • Session是用户全局变量,在整个会话期间都有效。只要页面不关闭就一直有效(或者直到用户一直未活动导致会话过期,默认session过期时间为30分钟。

– 通过云服务器资源占用分析性能缺陷(Fusion Cloud 华为云)

在对登录脚本测试时,50个独立用户并发登录的响应时间长达十几秒,其中还出现了Fail的情况。日志显示token没有及时返回导致登录不成功。
在服务器上查看服务资源使用(这还是笔者首次使用私有云服务,有点小惊喜),web-service的内存占用爆红了。
将summit请求代码注释掉,只测试登录动作,结果良好。
得出结论:可能是请求操作过多,占用大量内存,服务器处理不及时导致token值没有成功返回,同样也导致响应时间过长。

前端以单个请求为主,导致很多http请求仅仅包含单个业务请求,大量带宽浪费在http head上,cpu浪费在http协议的解析上。

优化策略:尽可能减少请求数,例如“获取日期、获取省份”可以整合在同一个请求中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LoadRunner脚本测试——登录实践 的相关文章

随机推荐

  • [Docker]Elasticsearch启动报错:Format version is not supported

    如果之前安装过Elasticsearch 安装新的Elasticsearch之前需要清空宿主机器对应的挂载目录下的文件数据
  • 打百万拳,走万里路。

    自我介绍 CSDN的大家你们好啊 我是一名大一的学生 与CSDN的相识还要从大一一次次查找知识点开始 当时由于刚接触编程 做什么都一头雾水而又不想去问老师那些简单的知识 于是自己在网上查找 就发现了CSDN这个大学生聚集地 由于很多都是和我
  • Python单重循环练习题

    第一次学python 求大佬指正 1 有1020个西瓜 第一天卖掉总数的一半后又多卖出两个 以后每天卖剩下的一半多两个 问几天以后能卖完 8天后能卖完 sum 1020 day 0 while sum gt 0 day 1 sum sum
  • 解决tomcat 启动超过45秒时间限制

    当在eclipse运行一个javaweb项目时 出现了如下图片中的问题 解决方法 1在如下页面中找到Servers 找不到的话可以通过Window gt gt Show View放到下方 2 双击Servers进到如下页面 3 打开箭头所指
  • C++: read SQL server data using System::Data::SqlClient;

    stdafx h stdafx h include file for standard system include files or project specific include files that are used frequen
  • 『学Vue2+Vue3』自定义指令、插槽、路由入门

    day05 一 学习目标 1 自定义指令 基本语法 全局 局部注册 指令的值 v loading的指令封装 2 插槽 默认插槽 具名插槽 作用域插槽 3 综合案例 商品列表 MyTag组件封装 MyTable组件封装 4 路由入门 单页应用
  • 20个最炫HTML5,jQuery和CSS3下拉菜单制作教程(附示例/源码)

    3 Level Navigation Menu 三级导航菜单 独具特色的导航菜单 包含CSS3渐变 多个子菜单和jQuery动画 CSS3 Minimalistic Navigation Menu 一个简单的CSS3动画导航菜单 SLIDE
  • python之logging模块详解

    python之 logging 模块 文章目录 python之 logging 模块 一 日志关概念 日志的作用 日志的等级 3 日志字段信息与日志格式 4 日志功能的实现 二 logging 模块介绍 什么是logging模块 loggi
  • Linux服务器启动tomcat的三种方式

    直接进入主题 首先cd进入tomcat的bin文件夹下 然后可以尝试以下三种启动方式 第一种 当前会话启动 startup sh 效果 然后tomcat就在后台启动了 我们还可以在当前会话中继续输入其它指令 比如 ps ef grep to
  • Source Insight 自动补全 C 关键字、keil 标准库关键字

    一开始遇到该问题疯狂 baidu bing 相关的 blog 寥寥无几 而且是差不多十年前的 blog 主要原因 Source Insight 默认不包含 C 库文件 keil 标准库 导致编辑代码时找不到 C 库的相关宏 变量类型 函数等
  • [1082]IDEA配置tomcat时出现的问题及解决(HTTP状态404-未找到)

    文章目录 问题1 没有新建环境变量 问题2 tomcat设置depolyment有误 问题1 没有新建环境变量 解决 在系统环境变量中添加变量CATALINA BASE和CATALINA BASE 两个变量的值都是tomcat的安装路径 如
  • 【Java SE】基本数据类型

    大家好 我是保护小周 本期为大家带来的是 Java的基本数据类型 内容会与C语言的基本数据类型进行基本的比较 数据类型提示 整型提升 以及简单了解 String 类型 进一步感受Java 的安全性 C语言混不下去了 面向对象的编程太爽了 目
  • Hyperledger Fabric 安装环境配置答疑(1)

    目录 1 Hyperledger Fabric只支持Ubuntu系统吗 2 cURL是什么 有什么作用 3 为什么要安装Docker及docker compose 4 能否不使用Golang而换作其他语言环境 5 一定要安装Node与npm
  • 多态的概念

    一 多态的概念 多态 Polymorphism 按字面的意思就是 多种状态 是面向对象的序设计语言最核心的特征 具体点就是去完成某个行为 当不同的对象去完成时会产生出不同的状态 多态建立在继承和封装的基础上 二 多态的分类 编译时多态 设计
  • 静态成员变量的初始化,以及可能引发的multiple define问题

    静态成员变量的初始化 以及可能引发的multiple define问题 先说个人问题的解决方式 不要再头文件中定义静态成员变量 示例 test h ifndef TEST H define TEST H class hh static in
  • 网络协议的三个要素是什么?各有什么含义?

    网络协议的三个要素是什么 各有什么含义 网络协议 为进行网络中的数据交换而建立的规则 标准或约定 由以下三个要素组成 1 语法 即数据与控制信息的结构或格式 2 语义 即需要发出何种控制信息 完成何种动作以及做出何种响应 3 规则 即事件实
  • 删除tomcat日志

    1 df 查看磁盘空间 2 对应用户进去删掉对应日志 3 重启tomcat 重新生成文件 或者 4 lsof grep deleted发现有大量刚刚删除文件的进程存在 kill掉进程 5 使用df 查看磁盘空间 发现已经回收 最好重启下to
  • 二叉搜索树的中序遍历为 递增序列_Go 刷 Leetcode 系列:恢复二叉搜索树

    二叉搜索树中的两个节点被错误地交换 请在不改变其结构的情况下 恢复这棵树 示例 1 输入 1 3 null null 2 1 3 2输出 3 1 null null 2 3 1 2 示例 2 输入 3 1 4 null null 2 3 1
  • 一维连续型随机变量的函数分布

    目录 a b N 2 a b N 0 1 2 N 2 e sin a b N 2 a b N 0 1 2 N 2 e sin
  • LoadRunner脚本测试——登录实践

    实习公司最近在做一款会计项目的财政管理系统 跟着测试组在做登录响应测试时 学到了不少实践经验 本文作以简单阐述和分享 通过代理服务器录制脚本 测试系统的门户必须用Chrome打开 然而测试环境lr11似乎只对IE浏览器兼容 事实上 lr与浏