软件测试的重要一环:「性能测试」怎么做?

news2024/11/23 19:07:34

性能测试是软件测试中的重要一环,今天给大家介绍性能测试及如何使用RunnerGo完成性能测试任务。

性能测试是什么?

一句话概括:不断地通过不同场景的系统表现去探究系统设计与资源消耗之间的平衡,为开发人员提供消除瓶颈所需的诊断信息。

测试类型:

性能测试中常用的性能有:负载测试、压力测试两种。

负载测试(Load Testing)主要是通过逐渐增加系统负载,如并发用户数、数据量等,来测试系统的性能变化。测试的目的是确定在满足性能指标的情况下,系统所能承受的最大负载量。负载测试通常从较小的负载开始,逐渐增加并发数和数据量,观察并记录不同负载下系统的各项指标,直至系统无法承受而崩溃或服务不可用。

压力测试(Stress Testing)则更侧重于测试系统的限制和故障恢复能力,通常是在超强的、近乎会导致系统崩溃的负荷(如大数据量、大量并发用户等)下进行。这种测试方法旨在观察系统在极限负荷下的性能变化,如CPU利用率、内存使用率、磁盘I/O吞吐率、网络吞吐量等,以及系统是否会出现内存泄漏、功能性故障等问题。压力测试包括稳定性压力测试和破坏性压力测试。稳定性压力测试是在选定的压力值下长时间持续运行,以考察各项性能指标是否在指定范围内;而破坏性压力测试则是通过继续加压的手段,使系统迅速崩溃,以暴露潜在的问题。

不同的测试类型需要配置不同的测试脚本,如我们常用的阶梯压测、高并发的压力测试等等。通过RunnerGo内置的六种压测模式可以满足多种性能测试类型。

图片

性能测试指标:

常见的测试指标:

吞吐量:系统在指定时间内处理多少个信息单元。

响应时间:从用户输入的请求到系统开始响应该请求之间经过的时间量。

带宽:每秒可以在工作负载之间移动的数据量,通常是指通过网络。

每秒 CPU 中断次数:取的是平均值。指处理器每秒接收和处理的硬件中断数。

内存使用:计算机上进程可用的物理内存量。

磁盘使用:磁盘忙于执行读取或写入请求的时间量

确定测试指标:

实际我们在测试时,只要不报错我们关注吞吐量、响应时间就可以了。测试指标需要根据以下两点进行确定:

根据系统在线用户数,来计算生产环境的用户 TPS,通过基准环境的测试,来验证真实的 TPS 是否满足生产环境的 TPS 需求,以及我们的运维架构和资源使用是否合理。

保证在 CPU 利用率小于80%,内存小于80%,并且没有错误的 Http 请求。

并发压力测试tps计算:

在开始计算前需要了解三个概念:

用户数:数据库中的总用户数

在线用户数:登录状态的用户数,挂在系统上,但是不会对系统产生压力=

并发用户数:真正产生操作的用户,产生压力之源

TPS计算公式为:tps=持续时长/总请求数

秒杀活动压测数据计算

假如平台总注册用户数有100w,有10w用户约定好同时对某一接口进行访问,比如1分钟,陆续来访10w用户,那么我们系统并发用户是比实际的10w要小的

那一个秒杀活动开始时,10w用户在10秒内重复请求多次,平均3次每个人,那么tps=100000/10=10000tps,表明我们目标的tps应达到10000才能抗住100000用户的同时请求

领券活动压测

平台注册用户数100w,用10w用户准备抢券,即10w人同时在10秒内访问抢券接口,在过程中每个用户可能会多次点击抢券,估算每个用户点击3次抢券接口,那么

tps=100000*3/10=30000tps,系统的目标tps需达到30000才抗住10w用户的并发访问压力

使用RunnerGo做性能测试:
RunnerGo支持单接口压测和场景压测。并且使用RunnerGo做性能时只需简单几个操作:

单接口压测:

每个接口在测试完成后可以在一键压测处进行单接口压测,同样支持测试模式选择:

图片

场景压测:

RunnerGo可以创建测试场景,在场景的基础上进行场景性能测试,在右侧任务配置栏,根据需求配置控制模式、压测模式并配置并发数即可开始测试。

图片

开始测试:

这里我们使用RunnerGo对单个商品评论接口进行一次阶梯模式的压力测试:

配置如下图:(配置完成后会显示加压梯度图)

图片

测试完成后 RunnerGo会提供可视化图形测试报告,测试人员根据预定的测试指标进行多次调节从而得到 API 请求的实际 TPS 和 RT再与理想中TPS和RT做对比,来确定当前API性能情况。

图片

图片

还可查看debug日志和压力机情况对测试结果进行分析:

图片

除此之外,RunnerGo在进行性能测试时还支持分布式服务器部署、接口权重、服务器权重配置,更好地满足性能测试需求。

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IntelliJ IDEA 设置数据库连接全局共享

前言 在日常的软件开发工作中,我们经常会遇到需要在多个项目之间共享同一个数据库连接的情况。默认情况下,IntelliJ IDEA 中的数据库连接配置是针对每个项目单独存储的。这意味着如果你在一个项目中配置了一个数据库连接,那么在另一个项目中…

从零搭建开源陪诊系统:关键技术栈与架构设计

构建一个开源陪诊系统是一个涉及多种技术的复杂工程。为了让这个系统具备高效、可靠和可扩展的特点,我们需要从架构设计、技术栈选择到代码实现等方面进行全面的考量。本文将从零开始,详细介绍搭建开源陪诊系统的关键技术栈和架构设计,并提供…

C#中的委托、匿名方法、Lambda、Action和Func

委托 委托概述 委托是存有对某个方法的引用的一种引用类型变量。定义方法的类型,可以把一个方法当作另一方法的参数。所有的委托(Delegate)都派生自 System.Delegate 类。委托声明决定了可由该委托引用的方法。 # 声明委托类型 委托类型声…

汽车免拆诊断案例 | 2019 款奥迪 A6L 车行驶中偶发熄火

故障现象  一辆2019款奥迪A6L车,搭载2.0T发动机,累计行驶里程约为9万km。车主反映,车辆行驶中偶发熄火,故障频率较高。 故障诊断  接车后试车,起动发动机,可以正常起动着机。使用故障检测仪检测&#x…

ELK之路第一步——Elasticsearch集群的搭建以及踩坑记录

elasticSearch集群 前言一、架构二、下载三、虚拟机相关设置3.1 创建es用户3.2 为建es用户赋权sudo3.3 更换es目录所属用户 四、Elasticsearch配置文件修改4.1 修改elasticsearch.yml4.2 修改jvm.options4.3 修改jdk路径 五、启动六、启动报错七、可视化界面cerebro 前言 Elk&…

springboot080房屋租赁管理系统的设计与实现(论文+源码)_kaic

毕 业 设 计(论 文) 题目:房屋租赁管理系统的设计与实现 摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好…

Linux 基础io_ELF_虚拟物理地址_动态库加载

1.可执行程序格式 ELF [wwshcss-ecs-178e myshell]$ ll total 56 -rw-rw-r-- 1 wws wws 92 Oct 17 19:14 file -rw-rw-r-- 1 wws wws 82 Oct 12 16:51 makefile -rw-r--r-- 1 wws wws 90 Oct 17 19:13 myfile -rwxrwxr-x 1 wws wws 20128 Oct 16 21:02 myshell -rw-r…

005:航空力学基础、无人机操纵、飞机性能

摘要:本文详细介绍无人机稳定性、操控性、飞机性能等概念。 一、飞机的稳定性 概念: 飞机的稳定性(安定性),是指在飞机受到扰动后,不经飞行员操纵,能恢复到受扰动前的原始状态(即原…

萤石设备视频接入平台EasyCVR私有化视频平台变电站如何实现远程集中监控?

一、方案背景 随着城市经济的发展和电力系统的改造,变电站的数量和规模逐渐增加,对变电站的安全管理和监控需求也越来越高。视频监控系统作为重要的安全管理手段,在变电站中起到了关键的作用。 目前青犀视频研发的萤石设备视频接入平台EasyC…

刷题 - 图论

1 | bfs/dfs | 网格染色 200. 岛屿数量 访问到马上就染色(将visited标为 true)auto [cur_x, cur_y] que.front(); 结构化绑定(C17)也可以不使用 visited数组,直接修改原始数组时间复杂度: O(n * m),最多将 visited 数…

生信软件39 - GATK最佳实践流程重构,提高17倍分析速度的LUSH流程

1. LUSH流程简介 基因组测序通常用于分子诊断、分期和预后,而大量测序数据在分析时间方面提出了挑战。 对于从FASTQ到VCF的整个流程,LUSH流程在非GVCF和GVCF模式下都大大降低了运行时间,30 X WGS数据耗时不到2 h,从BAM到VCF约需…

力扣143:重排链表

给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln - 1 → Ln请将其重新排列后变为: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示…

【已解决】C# NPOI如何在Excel文本中增加下拉框

前言 上图&#xff01; 解决方法 直接上代码&#xff01;&#xff01;&#xff01;&#xff01;综合了各个大佬的自己修改了一下&#xff01;可以直接规定在任意单元格进行设置。 核心代码方法块 #region Excel增加下拉框/// <summary>/// 增加下拉框选项/// </s…

在 Ubuntu 上安装 OpenCV 3.2.0 的详细指南

以下步骤将指导您如何在 Ubuntu 系统上从源码编译并安装 OpenCV 3.2.0。 步骤 1&#xff1a;更新系统并安装必备工具 首先&#xff0c;更新您的系统并安装编译 OpenCV 所需的基本工具和库。 sudo apt-get update sudo apt-get upgrade sudo apt-get install build-essential…

docker 可用镜像服务地址(2024.10.25亲测可用)

1.错误 Error response from daemon: Get “https://registry-1.docker.io/v2/” 原因&#xff1a;镜像服务器地址不可用。 2.可用地址 编辑daemon.json&#xff1a; vi /etc/docker/daemon.json内容修改如下&#xff1a; {"registry-mirrors": ["https://…

C++进阶之路:日期类的实现、const成员(类与对象_中篇)

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

Qt之QCamera的简单使用

文章目录 一、相机操作相关示例1.摄像头操作内容使用示例2.摄像头信息展示使用示例3.摄像头设置切换、预览操作示例 二、相机使用个人操作理解1.相机类支持信息获取2.相机类曝光、焦点、图像处理控制信息获取3.快速启动相机设置&#xff08;各个设备处于理想状态&#xff09; 三…

内网穿透:如何借助Cloudflare连接没有公网的电脑的远程桌面(RDP)

内网穿透&#xff1a;如何借助Cloudflare连接没有公网的电脑的远程桌面(RDP)-含详细原理配置说明介绍 前言 远程桌面协议(RDP, Remote Desktop Protocol)可用于远程桌面连接&#xff0c;Windows系统&#xff08;家庭版除外&#xff09;也是支持这种协议的&#xff0c;无需安装…

基础数据结构——队列(链表实现,数组实现)

1.概述 计算机科学中&#xff0c;queue 是以顺序的方式维护的一组数据集合&#xff0c;在一端添加数据&#xff0c;从另一端移除数据。习惯来说&#xff0c;添加的一端称为尾&#xff0c;移除的一端称为头&#xff0c;就如同生活中的排队买商品 接口信息如下 public interfa…

Java如何实现PDF转高质量图片

大家好&#xff0c;我是 V 哥。在Java中&#xff0c;将PDF文件转换为高质量的图片可以使用不同的库&#xff0c;其中最常用的库之一是 Apache PDFBox。通过该库&#xff0c;你可以读取PDF文件&#xff0c;并将每一页转换为图像文件。为了提高图像的质量&#xff0c;你可以指定分…