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

news/2024/4/19 21:19:22/文章来源:https://blog.csdn.net/NoamaNelson/article/details/129125519

文章目录

  • 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 下期计划

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

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

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

相关文章

面试攻略,Java 基础面试 100 问(十二)

如何将字符串转换为基本数据类型&#xff1f; 调用基本数据类型对应的包装类中的方法 parseXXX(String)或 valueOf(String)即可返回相应基本类型&#xff1b; 如何将基本数据类型转换为字符串&#xff1f; 一种方法是将基本数据类型与空字符串&#xff08;””&#xff09;连…

微服务03 分布式搜索引擎 elasticsearch ELK kibana RestAPI RestClient

分布式搜索引擎01-- elasticsearch基础0.学习目标1.初识elasticsearch1.1.了解ES1.1.1.elasticsearch的作用elasticsearch是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大功能&#xff0c;可以帮助我们从海量数据中快速找到需要的内容例如&#xff1a;在GitHub搜索代码…

半年前学习了性能测试涨薪5k, 经验+技术积累+坚持很重要

做测试一年多来&#xff0c;虽然平时的工作都能很好的完成&#xff0c;但最近突然发现自己在关于测试的整体知识体系上面的了解很是欠缺&#xff0c;所以&#xff0c;在工作之余也做了一些测试方面的知识的补充。不足之处&#xff0c;还请大家多多交流&#xff0c;互相学习。现…

系列三、docker相关指令

一、docker指令 1.1、查看docker详细信息 docker info 1.2、查看docker版本 docker version 1.3、帮助命令 docker --help 二、images指令 2.1、查看本地仓库中有哪些镜像 docker images 2.2、下载新的镜像 # 语法 docker pull 镜像名:版本号# 案例 docker pull mysql…

Node.js安装配置及Angular CLI的安装

NodeJS的安装node.js官网下载地址: https://nodejs.org/en/download/在node.js的官网上面下载适合自己机型的&#xff0c;如果是Windows系统的话&#xff0c;建议下载对应的 Windows Installer (.msi) 。下载完成后&#xff0c;双击打开安装&#xff0c;安装路径最好自定义&…

12款适合小团队协作、任务管理和进度跟踪的在线任务管理的工具推荐?

国内外12款主流任务管理软件测评: 1.开发任务管理PingCode; 2.多合一项目任务管理Worktile;3.个人和小团队项目任务管理Notion; 4.企业任务管理平台SmartTask; 5.小团队任务管理Teambition;6.IT任务追踪管理Jira等。无论是做好工作任务管理还是个人任务管理&#xff0c;从来都不…

Flink-多流转换(Union、Connect、Join)

文章目录多流转换分流基本合流操作联合&#xff08;Union&#xff09;连接&#xff08;Connect&#xff09;基于时间的合流——双流联结&#xff08;Join&#xff09;窗口联结&#xff08;Window Join&#xff09;间隔联结&#xff08;Interval Join&#xff09;窗口同组联结&a…

Git复习

1. 引言 现在要用到Git&#xff0c;复习一下关于Git的指令&#xff0c;知识摘自《Pro Git》 2. 起步 git和其他版本控制软件最大的差别在于git是直接记录某个版本的快照&#xff0c;而不是逐渐地比较差异。 安装: sudo apt install git-all设置用户信息&#xff1a; git c…

Vue3搭建记录

一、初始化项目&#xff1a;项目名称vue3-element-admin npm init vitelatest vue3-element-admin --template vue-ts 二、整合Element-Plus 1.本地安装Element Plus和图标组件 npm install element-plus npm install element-plus/icons-vue 2.全局注册组件 // main.ts imp…

【LeetCode】No.232. 用栈实现队列 -- Java Version

题目链接&#xff1a;https://leetcode.cn/problems/implement-queue-using-stacks/ 1. 题目介绍&#xff08;232. 用栈实现队列&#xff09; 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff…

【前端】小程序开发入门:安装开发工具、目录结构与项目配置

文章目录前期准备目录结构app.jsonpageswindow其他前期准备 开发小程序要先申请一个对应的AppID&#xff1a;微信小程序 (qq.com) 微信官方小程序开发文档&#xff1a;微信开放文档 (qq.com) 然后安装一个小程序开发工具&#xff1a; 选择稳定版&#xff1a; 安装后打开&…

如何在SpringBoot项目上让接口返回数据脱敏,一个注解即可

1 背景需求是某些接口返回的信息&#xff0c;涉及到敏感数据的必须进行脱敏操作2 思路①要做成可配置多策略的脱敏操作&#xff0c;要不然一个个接口进行脱敏操作&#xff0c;重复的工作量太多&#xff0c;很显然违背了“多写一行算我输”的程序员规范。思来想去&#xff0c;定…

【linux】——gcc/g++,make/makefile的简单使用

目录 1.gcc的基本使用 2.Linux下的静态库和动态库的理解 3.Linux项目自动化构建工具——make/makefile 1.gcc的基本使用 gcc是专门用来编译c语言的 g是专门用来编译c的&#xff0c;但是g也能够用来编译c语言 预处理&#xff08;进行宏替换&#xff09; 预处理功能主要包括宏…

【前端提效】-- VsCode 实用插件推荐

EditorConfig for VS Code ***** 作用&#xff1a;多人协同开发&#xff0c;规范缩进风格&#xff0c;缩进大小&#xff0c;tab长度以及字符集等&#xff0c;解决不同IDE的编码范设置&#xff0c;在这里配置&#xff08;.editorconfig&#xff09;的代码规范规则优先级高于编辑…

java诊断与调优常用命令jmap、jstack、jstat使用实战

java应用运行过程中难免会出现问题&#xff0c;特别是在生产环境&#xff0c;发生异常或宕机情况&#xff0c;需要诊断与分析&#xff0c;定位原因&#xff0c;进行优化&#xff0c;避免下次再次出现问题。 虽然现在有很多可视化工具&#xff0c;使用起来比命令行更方便&#x…

Julia 语言环境安装

Julia 语言支持以下系统&#xff1a; LinuxFreeBSDmacOSWindowsAndroid Julia 安装包下载地址为&#xff1a;Download Julia。 Github 源码地址&#xff1a;GitHub - JuliaLang/julia: The Julia Programming Language。 国内镜像地址&#xff1a;Index of /julia-releases/…

逻辑回归—二元分类问题的操作顺序

对于二元分类问题来说&#xff0c;分类的结果和数据的特征之间仍呈现相关关系&#xff0c;但是y的值不再是连续的&#xff0c;是0&#xff5e;1的跃迁。但是在这个过程中&#xff0c;什么仍然是连续的呢&#xff1f;”是概率&#xff0c;概率是逐渐升高的&#xff0c;当达到一个…

AI制药 - TMScore(US-align)、RMSD、Sequence 源码

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/129125467 参考文档:Nature Methods | 蛋白、RNA、DNA及其复合物结构的比对算法US-align 官网地址:https://zhanggroup.org/US-align/ TMScore TMScore,…

文件系统与动静态库的基本了解

目录文件系统与动静态库的基本了解文件系统了解Access Modify Changeinode硬链接软链接静态库与动态库概念静态库的制作使用静态库动态库的制作使用动态库总结如何制作文件系统与动静态库的基本了解 文件系统 了解Access Modify Change 当文件没有被打开时&#xff0c;他们存…

数据挖掘,计算机网络、操作系统刷题笔记50

数据挖掘&#xff0c;计算机网络、操作系统刷题笔记50 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;orac…