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

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 基于某业务单登陆场景并发测试实战
说明:
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 下期计划

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

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
2月前
|
机器学习/深度学习 PyTorch 算法框架/工具
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
这篇文章介绍了如何使用PyTorch框架,结合CIFAR-10数据集,通过定义神经网络、损失函数和优化器,进行模型的训练和测试。
134 2
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
|
25天前
|
测试技术 持续交付 UED
软件测试的艺术:确保质量的实战策略
在软件开发的舞台上,测试是那把确保每个功能如交响乐般和谐奏响的指挥棒。本文将深入探讨软件测试的重要性、基本类型以及如何设计高效的测试策略。我们将通过一个实际的代码示例,展示如何运用这些策略来提升软件质量和用户体验。
|
24天前
|
JavaScript 安全 编译器
TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法
本文深入探讨了 TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法,并通过实际案例展示了其在项目中的应用效果,旨在提升代码质量和开发效率。
37 6
|
1月前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
59 3
|
1月前
|
网络协议 关系型数据库 应用服务中间件
【项目场景】请求数据时测试环境比生产环境多花了1秒是怎么回事?
这是一位粉丝(谢同学)给V哥的留言,描述了他在优化系统查询时遇到的问题:测试环境优化达标,但生产环境响应时间多出1秒。通过抓包分析,发现MySQL请求和响应之间存在500毫秒的延迟,怀疑是网络传输开销。V哥给出了以下优化建议:
|
2月前
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
2770 1
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
1月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
52 1
|
2月前
|
PyTorch 算法框架/工具 计算机视觉
目标检测实战(二):YoloV4-Tiny训练、测试、评估完整步骤
本文介绍了使用YOLOv4-Tiny进行目标检测的完整流程,包括模型介绍、代码下载、数据集处理、网络训练、预测和评估。
153 2
目标检测实战(二):YoloV4-Tiny训练、测试、评估完整步骤
|
2月前
|
Java 程序员 应用服务中间件
「测试线排查的一些经验-中篇」&& 调试日志实战
「测试线排查的一些经验-中篇」&& 调试日志实战
25 1
「测试线排查的一些经验-中篇」&& 调试日志实战
|
1月前
|
前端开发 数据管理 测试技术
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第27天】本文介绍了前端自动化测试中Jest和Cypress的实战应用与最佳实践。Jest适合React应用的单元测试和快照测试,Cypress则擅长端到端测试,模拟用户交互。通过结合使用这两种工具,可以有效提升代码质量和开发效率。最佳实践包括单元测试与集成测试结合、快照测试、并行执行、代码覆盖率分析、测试环境管理和测试数据管理。
57 2