基于某业务单登陆场景并发测试实战
文章目录
- 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 测试工具
工具 | 版本 | 说明 |
---|---|---|
LoadRunner | V11 | 服务端压测工具 |
Nmon | X86_64_centos7 | 服务器指标监控工具 |
Python | V3.7.0 | 脚本设计语言 |
Pycharm | V2021.2 | 脚本编写工具 |
Postman | V7.34.0 | http接口调试工具 |
Fiddler | V5.0 | http接口抓包工具 |
Proxifier | V3.42 | 代理工具辅助抓取接口数据 |
Xshell | V6.0 | ssh客户端连,接服务器工具 |
Xftp | V6.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 测试分析
性能指标 | 预期值 | 实际值 | 结论 |
---|---|---|---|
虚拟用户并发情况 | 150 | 150 | PASS |
事物响应时间 | 1s | 1s | PASS |
每秒点击次数 | 150 | 144 | PASS |
平均每秒点击次数 | 150 | 143 | PASS |
事物平均响应时间 | <1s | 0.032s | PASS |
磁盘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内存模型
程序计数器 多线程时,当线程数超过CPU数量或CPU内核数量,线程之间就要根据时间片轮询抢夺CPU时间资源。因此每个线程有要有一个独立的程序计数器,记录下一条要运行的指令。线程私有的内存区域。如果执行的是JAVA方法,计数器记录正…...

三、NetworkX工具包实战3——特征工程【CS224W】(Datawhale组队学习)
开源内容:https://github.com/TommyZihao/zihao_course/tree/main/CS224W 子豪兄B 站视频:https://space.bilibili.com/1900783/channel/collectiondetail?sid915098 斯坦福官方课程主页:https://web.stanford.edu/class/cs224w NetworkX…...

分布式之Raft共识算法分析
写在前面 在分布式之Paxos共识算法分析 一文中我们分析了paxos算法,知道了其包括basic paxos和multi paxos,并了解了multi paxos只是一种分布式共识算法的思想,而非具体算法,但可根据其设计具体的算法,本文就一起来看…...
数据库——范式
目录 一、概念 二、各范式 第一范式 第二范式 第三范式 BC范式 第四范式 第五范式(略) 一、概念 基本概念 关系:通常一个关系对应一张表;元组:一行;属性:一列;码࿱…...
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工作机制 以上内容我们之前文章或多或少介绍过,就已网络上比较流行的该图进行理解学习吧 MapTask分为五大阶段 Read阶段Map阶段Collect阶段溢写阶段Merge阶段 2.ReduceTask工作机制 ReduceTask分为三大阶段 Copy阶段Sort阶段Reduce阶段 3.ReduceTask并…...
java 面试过程中遇到的几个问题记录20230220
微服务注册中心的作用微服务注册中心的作用是协调和管理微服务实例的注册和发现。它充当了服务注册表,可以维护服务实例的元数据,例如服务名称、IP 地址和端口号等。当一个微服务启动时,它会向注册中心注册自己的元数据,以使其他服…...
面试题:【数据库三】索引简述
目录 一、索引是什么 二、索引规则 三、索引失效场景 一、索引是什么 索引是帮助Mysql高效获取数据的【数据结构】索引存储在文件系统中索引的文件存储形式与存储引擎相关 mysql有三种存储引擎 InnoDBMyISAMMEMORY索引文件的结构 Hash Hash索引底层是哈希表,哈希…...

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

电源大事,阻抗二字
作者:一博科技高速先生成员 姜杰PCB设计时,我们通常会控制走线的特征阻抗;电源设计时,又会关注电源分配系统(PDN)的交流阻抗,虽然都是阻抗,一个是信号的通道要求,一个是电…...

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

nginx 代理01(持续更新)
1、如果请求是post,而且请求原是188.188.3.171,处理方式403 if ($request_method ~* "POST") # $request_method 等同于request的method,通常是“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....
前言 转眼过去,距离读书的时候已经这么久了吗?,从18年5月本科毕业入职了一家小公司,到现在快4年了,前段时间社招想着找一个新的工作,前前后后花了一个多月的时间复习以及面试,前几天拿到了阿里…...

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

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

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

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

合并两个有序链表——递归解法
题目描述21. 合并两个有序链表难度简单2922收藏分享切换为英文接收动态反馈将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1:输入:l1 [1,2,4], l2 [1,3,4]输出:[1,1,2,3,4,4]示例…...
【Go语言基础【6】】字符串格式化说明
文章目录 零、格式化常用场景一、Go 字符串格式化核心概念二、常用格式化占位符1. 整数类型2. 浮点数类型3. 字符串与布尔类型4. 指针与通用类型 三、宽度与精度控制1. 宽度控制2. 精度控制(浮点数/字符串) 零、格式化常用场景 数值转字符串:…...
Git 切换到旧提交,同时保证当前修改不丢失
在 Git 中,可以通过以下几种方式切换到之前的提交,同时保留当前的修改 1. 使用 git checkout 创建临时分离头指针(推荐用于查看代码) git checkout <commit-hash>这会让你进入"分离头指针"状态,你可…...

二叉树-226.翻转链表-力扣(LeetCode)
一、题目解析 翻转可以理解为树的左右子树交换,从根到叶子节点,但是这里交换的是链接的指针,而不是单纯的交换值,当出现nullptr时,也是可以交换链接的,交换值的话就不行了。 二、算法原理 依旧的递归&…...

javaweb -html -CSS
HTML是一种超文本标记语言 超文本:超过了文本的限制,比普通文本更强大,除了文字信息,还可以定义图片、音频、视频等内容。 标记语言:由标签"<标签名>"构成的语言。 CSS:层叠样式表,用于…...

跟进一下目前最新的大数据技术
搭建最新平台 40C64G服务器,搭建3节点kvm,8C12G。 apache-hive-4.0.1-bin apache-tez-0.10.4-bin flink-1.20.1 hadoop-3.4.1 hbase-2.6.2 jdk-11.0.276 jdk8u452-b09 jdk8终于可以不用了 spark-3.5.5-bin-hadoop3 zookeeper-3.9.3 trino…...
word操作(持续更新)
1、图片前面(无间隔格式),有像标题标记一样的黑点 word段落左边的黑色小方块小黑点是什么(段落的换行和分页属性)_哔哩哔哩_bilibili...
如何写一篇基于Spring Boot + Vue + 微信小程序的软件的接口文档
如何写一篇基于Spring Boot Vue 微信小程序的软件的接口文档 下面是一个例子,仅供参考! 基于Spring Boot Vue 微信小程序的博客系统接口文档 技术栈:Spring Boot 3.x Vue 3 Element Plus 微信小程序原生框架 文档版本:v1…...

基于单片机的病房呼叫系统(源码+仿真)
该系统由以 STM32F4 为平台的监控终端以及以 CC2530 为平台的无线传感网组成。系统上电后自动完成 ZigBee 网络的组建、终端节点的加入,病人可利用便携式的病人终端发出呼叫求助请求信息、节点在线信息以及对护士的服务评价信息等,这些信息通过路由节点发…...
Spark 写文件
Repartition Spark 输出文件数量 假设每个 Task 的输出数据都包含了全部 8 个分区值,那么最终的文件生成情况如下: 总文件数 = Task 数量 分区组合数 假设: Task 数量:200 分区组合数:8 个 (from_cluster 和 ds 的组合) 则: 总文件数:200 8 = 1600 …...

Spring Boot 常用注解面试题深度解析
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot 常用注解面试题深度解析一、核心…...