当前位置: 首页 > news >正文

基于某业务单登陆场景并发测试实战

文章目录

  • 1 测试目的
  • 2 测试目标和测试对象
  • 3 名词解释
  • 4 测试说明
  • 5 测试环境和工具
    • 5.1 测试工具
    • 5.2 测试环境
    • 5.3 人力计划
  • 6 测试用例
    • 6.1 方案设计
    • 6.2 接口地址
    • 6.3 接口参数
      • 6.3.1 header参数
      • 6.3.2 请求参数
  • 7 脚本设计
  • 8 监控数据
    • 8.1 虚拟用户并发情况
    • 8.2 事务响应时间
    • 8.3 每秒点击次数
    • 8.4 测试数据总览
    • 8.5 平均每秒点击次数
    • 8.6 事务平均响应时间
    • 8.7 服务器IO和CPU使用率
    • 8.8 服务器CPU变化趋势
    • 8.9 双核CPU使用情况
    • 8.10 内存使用情况
    • 8.11 进程占CPU的使用情况
    • 8.12 各进程使用情况
  • 9 测试分析
  • 10 测试结论
  • 11 下期计划

说明:
1、以下为基于某业务单登陆场景并发测试实战过程,仅供参考;
2、本文为本站首发,转载及他用请注明出处,谢谢。


1 测试目的

通过对某业务用户登录接口进行并发测试,模拟用户真实场景,发现服务器存在的服务瓶颈,辅助提升产品稳定性。

2 测试目标和测试对象

根据产品要求,系统必须支持150用户同时在线(具体参考名词解释内容)。本次测试只测试单登录场景,不任何带业务。

3 名词解释

  • **在线用户数:**用户同时在一定的时间段的在线数量;
  • **并发用户数:**某一时刻同时向服务器发送请求的用户数;
  • 事物:“从用户发送请求->server接受到请求,进行处理->server向DB获取数据->生成用户页面”的过程;
  • **请求响应时间:**是指从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束的过程所耗费的时间;
  • **事物响应时间:**针对用户而言,属于宏观概念,为了向用户说明业务响应时间而提出的,是直接衡量系统性能的参数;
  • **吞吐量:**在以此性能测试过程中网络上传输的数据量的总和;
  • **吞吐率:**吞吐量与传输时间的比值;
  • **每秒点击次数:**运行压测场景过程中虚拟用户每秒向服务器提交的http请求数。

4 测试说明

  • 并发用户数与在线用户数的关系:一般并发用户数与在线用户数的比值为5%-20%;
  • 本次测试并发150,其实按照平均值10%来算,用户在线数为1500个。

5 测试环境和工具

5.1 测试工具

工具版本说明
LoadRunnerV11服务端压测工具
NmonX86_64_centos7服务器指标监控工具
PythonV3.7.0脚本设计语言
PycharmV2021.2脚本编写工具
PostmanV7.34.0http接口调试工具
FiddlerV5.0http接口抓包工具
ProxifierV3.42代理工具辅助抓取接口数据
XshellV6.0ssh客户端连,接服务器工具
XftpV6.0服务器文件传输工具
Navicat Premium具V11.1.8(64bit)数据库脚本导入工

5.2 测试环境

5.3 人力计划

  • 测试人员:测试工程师A
  • 测试周期:2人/天

6 测试用例

6.1 方案设计

登录接口并发150,不带任何业务,使用LoadRunner进行虚拟用户并发压测,使用Nmon监控服务端性能指标,分析测试结果,给出优化建议。

6.2 接口地址

http://192.168.1.5:8001/user/login

6.3 接口参数

6.3.1 header参数

web_add_header("Accept","*/*;");
web_add_header("signature","abcdefg");
web_add_header("trace","abcdefg");
web_add_header("Content-Type","application/json");

6.3.2 请求参数

{\"name\":\"{name}\",\"password\":\"c4ca4238a0b923820dcc509a6f75849b\"}"

其中用户名已被参数化,其中{name}是取得已经提前创建好的用户名,通过dat进行参数化

脚本设计图

7 脚本设计

Action()
{lr_start_transaction("login");web_add_header("Accept", "*/*");web_add_header("signature", "abcdefg");web_add_header("trace", "abcdefg");web_add_header("Content-Type", "application/json");//web_add_header("EnablingCompression", "0");//web_add_header("Expect", "100-continue");web_custom_request("URL = http://192.168.1.5:8001/user/login","Method" = POST,"TargetFrame = ""Resource = 0","RecContentType = text/html","Referer = ","Snapshot = t3.inf","Mode = HTML","Body = {\"name\":\"{name}\",\"password\":\"c4ca4238a0b923820dcc509a6f75849b\"}",LAST);lr_think_time(1);lr_end_transaction("login", LR_AUTO);return 0;
}

8 监控数据

  • 通过nmon进行监控数据获取,获取格式为:nmon –f –t –s 10 –c 30;
  • 通过LoadRunner进行并发压测和部分结果分析;
  • 通过nmon analyser v51_2.xlsm进行nmon结果分析;
  • 并发持续时间300s。

8.1 虚拟用户并发情况

8.2 事务响应时间

8.3 每秒点击次数

8.4 测试数据总览

8.5 平均每秒点击次数

8.6 事务平均响应时间

8.7 服务器IO和CPU使用率

8.8 服务器CPU变化趋势

8.9 双核CPU使用情况

8.10 内存使用情况

8.11 进程占CPU的使用情况

8.12 各进程使用情况

9 测试分析

性能指标预期值实际值结论
虚拟用户并发情况150150PASS
事物响应时间1s1sPASS
每秒点击次数150144PASS
平均每秒点击次数150143PASS
事物平均响应时间<1s0.032sPASS
磁盘IO<80%81%FAILED
CPU使用率<80%40%PASS
内存使用率<80%68%PASS

通过前边的图标数据,我们整理出以上的测试数据,通过分析,除了磁盘IO有瓶颈外,其他指标全部OK。

10 测试结论

  • 经过对单登录接口进行并发150,服务各指标基本满足需要(在2核心8G的情况下),测试通过/不通过
  • 瓶颈点在于磁盘方面,建议以后采用SSD硬盘实体物理机(本次采用机械硬盘+虚拟机)

11 下期计划

登录接口+业务并发测试,满足客户真实的使用场景。

相关文章:

基于某业务单登陆场景并发测试实战

文章目录1 测试目的2 测试目标和测试对象3 名词解释4 测试说明5 测试环境和工具5.1 测试工具5.2 测试环境5.3 人力计划6 测试用例6.1 方案设计6.2 接口地址6.3 接口参数6.3.1 header参数6.3.2 请求参数7 脚本设计8 监控数据8.1 虚拟用户并发情况8.2 事务响应时间8.3 每秒点击次…...

JVM内存模型

程序计数器 多线程时&#xff0c;当线程数超过CPU数量或CPU内核数量&#xff0c;线程之间就要根据时间片轮询抢夺CPU时间资源。因此每个线程有要有一个独立的程序计数器&#xff0c;记录下一条要运行的指令。线程私有的内存区域。如果执行的是JAVA方法&#xff0c;计数器记录正…...

三、NetworkX工具包实战3——特征工程【CS224W】(Datawhale组队学习)

开源内容&#xff1a;https://github.com/TommyZihao/zihao_course/tree/main/CS224W 子豪兄B 站视频&#xff1a;https://space.bilibili.com/1900783/channel/collectiondetail?sid915098 斯坦福官方课程主页&#xff1a;https://web.stanford.edu/class/cs224w NetworkX…...

分布式之Raft共识算法分析

写在前面 在分布式之Paxos共识算法分析 一文中我们分析了paxos算法&#xff0c;知道了其包括basic paxos和multi paxos&#xff0c;并了解了multi paxos只是一种分布式共识算法的思想&#xff0c;而非具体算法&#xff0c;但可根据其设计具体的算法&#xff0c;本文就一起来看…...

数据库——范式

目录 一、概念 二、各范式 第一范式 第二范式 第三范式 BC范式 第四范式 第五范式&#xff08;略&#xff09; 一、概念 基本概念 关系&#xff1a;通常一个关系对应一张表&#xff1b;元组&#xff1a;一行&#xff1b;属性&#xff1a;一列&#xff1b;码&#xff1…...

Geospatial Data Science(2):Geospatial Data in Python

Geospatial Data Science(2):Geospatial Data in Python PART 1: 检查数据 1.1 Imports import geopandas as gpd # for geospatial data handling import osmnx # for handling data from OpenStreetMap (osm) with the help of networkX (nx) import contextily as cx # f…...

16.hadoop系列之MapReduce之MapTask与ReduceTask及Shuffle工作机制

1.MapTask工作机制 以上内容我们之前文章或多或少介绍过&#xff0c;就已网络上比较流行的该图进行理解学习吧 MapTask分为五大阶段 Read阶段Map阶段Collect阶段溢写阶段Merge阶段 2.ReduceTask工作机制 ReduceTask分为三大阶段 Copy阶段Sort阶段Reduce阶段 3.ReduceTask并…...

java 面试过程中遇到的几个问题记录20230220

微服务注册中心的作用微服务注册中心的作用是协调和管理微服务实例的注册和发现。它充当了服务注册表&#xff0c;可以维护服务实例的元数据&#xff0c;例如服务名称、IP 地址和端口号等。当一个微服务启动时&#xff0c;它会向注册中心注册自己的元数据&#xff0c;以使其他服…...

面试题:【数据库三】索引简述

目录 一、索引是什么 二、索引规则 三、索引失效场景 一、索引是什么 索引是帮助Mysql高效获取数据的【数据结构】索引存储在文件系统中索引的文件存储形式与存储引擎相关 mysql有三种存储引擎 InnoDBMyISAMMEMORY索引文件的结构 Hash Hash索引底层是哈希表&#xff0c;哈希…...

数据库必知必会:TiDB(12)TiDB连接管理

数据库必知必会&#xff1a;TiDB&#xff08;12&#xff09;TiDB连接管理TiDB连接管理TiDB的连接特性连接TiDBMySQL命令行客户端图形界面客户端连接其他连接方式写在后面TiDB连接管理 TiDB的连接特性 TiDB Server主要负责接收用户的会话请求&#xff0c;接收SQL并负责SQL语句…...

电源大事,阻抗二字

作者&#xff1a;一博科技高速先生成员 姜杰PCB设计时&#xff0c;我们通常会控制走线的特征阻抗&#xff1b;电源设计时&#xff0c;又会关注电源分配系统&#xff08;PDN&#xff09;的交流阻抗&#xff0c;虽然都是阻抗&#xff0c;一个是信号的通道要求&#xff0c;一个是电…...

ASE20N60-ASEMI的MOS管ASE20N60

编辑-Z ASE20N60在TO-247封装里的静态漏极源导通电阻&#xff08;RDS(ON)&#xff09;为0.4Ω&#xff0c;是一款N沟道高压MOS管。ASE20N60的最大脉冲正向电流ISM为80A&#xff0c;零栅极电压漏极电流(IDSS)为10uA&#xff0c;其工作时耐温度范围为-55~150摄氏度。ASE20N60功耗…...

nginx 代理01(持续更新)

1、如果请求是post&#xff0c;而且请求原是188.188.3.171&#xff0c;处理方式403 if ($request_method ~* "POST") # $request_method 等同于request的method&#xff0c;通常是“GET”或“POST” # 如果访问request的method值为POST则返回“o” {set…...

初阶C语言——操作符【详解】

文章目录1.算术操作符2.移位操作符2.1 左移操作符2.2 右移操作符3.位操作符按位与按位或按位异或4.赋值操作符复合赋值符5.单目操作符5.1单目操作符介绍6.关系操作符7.逻辑操作符8.条件操作符9.逗号表达式10.下标引用、函数调用和结构成员11表达式求值11.1 隐式类型转换11.2算术…...

37k*16 薪,年后直接上岗,3年自动化测试历经3轮面试成功拿下阿里Offer....

前言 转眼过去&#xff0c;距离读书的时候已经这么久了吗&#xff1f;&#xff0c;从18年5月本科毕业入职了一家小公司&#xff0c;到现在快4年了&#xff0c;前段时间社招想着找一个新的工作&#xff0c;前前后后花了一个多月的时间复习以及面试&#xff0c;前几天拿到了阿里…...

利用Rust与Flutter开发一款小工具

1.起因 起因是年前看到了一篇Rust iOS & Android&#xff5c;未入门也能用来造轮子&#xff1f;的文章&#xff0c;作者使用Rust做了个实时查看埋点的工具。其中作者的一段话给了我启发&#xff1a; 无论是 LookinServer 、 Flipper 等 Debug 利器&#xff0c;还是 Flutt…...

零入门kubernetes网络实战-16->使用golang给docker环境下某个容器里添加一个额外的网卡

《零入门kubernetes网络实战》视频专栏地址 https://www.ixigua.com/7193641905282875942 本篇文章视频地址(稍后上传) 上一篇文章&#xff0c;我们使用了golang在veth pair链接的网络命名空间里添加了网卡&#xff0c; 本篇文章&#xff0c;我尝试&#xff0c;在docker环境下…...

音频信号处理笔记(二)

文章目录1.1.3 过零率1.1.4 谱质心和子带带宽1.1.5 短时傅里叶分析法1.1.6 小波变换相关课程&#xff1a; 音频信号处理及深度学习教程傅里叶分析之掐死教程&#xff08;完整版&#xff09;更新于2014.06.06 - 知乎 (zhihu.com)1.1.3 过零率 过零率&#xff1a;是一个信号符号…...

钓鱼网站+bypassuac提权

本实验实现1 &#xff1a;要生成一个钓鱼网址链接&#xff0c;诱导用户点击&#xff0c;实验过程是让win7去点击这个钓鱼网站链接&#xff0c;则会自动打开一个文件共享服务器的文件夹&#xff0c;在这个文件夹里面会有两个文件&#xff0c;当用户分别点击执行后&#xff0c;则…...

合并两个有序链表——递归解法

题目描述21. 合并两个有序链表难度简单2922收藏分享切换为英文接收动态反馈将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a;输入&#xff1a;l1 [1,2,4], l2 [1,3,4]输出&#xff1a;[1,1,2,3,4,4]示例…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...