性能测试怎么做?一文从5个方面带你做性能测试

news2024/11/26 7:50:38

大家好,今天小濠从5个方面来介绍性能测试

一、什么是性能测试
二、性能测试的目的
三、如何做性能测试
四、性能测试关注的指标
五、性能结果分析

一、什么是性能测试

是不断的通过不同场景的系统表现去探究系统设计与资源消耗之间的平衡。

我们可以认为性能测试是:通过在测试环境下对系统或构件的性能进行探测,用以验证在生产环境下系统性能是否达到预估的性能需求,发现系统可能存在的性能瓶颈,进而改善优化并系统的性能,提高系统的可扩展性、稳定性。

从上面的描述可以看出,性能测试的主要工作包括:获得预估的性能需求、搭建测试环境、执行测试、分析测试结果。其中,最为重要两个工作是确定测试的目的、方案,并对结果进行分析。

二、性能测试的目的

(1)验证系统是否满足预期需求;

(2)验证系统在高压下的表现;

(3)验证系统是否能持续稳定的运行;

(4)探测系统的瓶颈和产生瓶颈的原因;

(5)探测系统设计与资源之间的最佳平衡,改善并优化系统的性能。

三、如何做性能测试

1. 负载测试: 找到系统稳定时(或满足性能需求下)的最大吞吐量;(要有响应时间、成功率的限制,比如定义:99.9%的响应时间必需在1ms之内,平均响应时间在1ms以内,100%的请求成功)

2. 稳定性(通过浸泡测试soak test): 以系统稳定时的最大吞吐量(或满足性能需求时的最大吞吐量),长时间对系统进行测试,已检查系统是否稳定

3. 压力测试: 找到系统极限值,系统瓶颈(系统崩溃临界值)(要求:响应时间可以变慢,但系统不能崩溃;)(根据测试目的,选择是进行负载、压力、稳定性还是几种测试;)

4. 并发有两个概念:

多个用户同时进行相同操作,访问同一接口——单个业务接口并发;

多个用户同时访问系统,但进行不同的操作,访问不同的接口——系统级并发;(在性能测试过程中,根据 具体场景和业务 选择合适的方案,一般第2种更符合实际场景。以上2种都需要进行测试;)

5. 测试流程: 确定测试目的与需求——根据需求与场景,梳理测试要点——根据测试目的,制定测试方案——准备测试环境与数据——测试执行(脚本或工具)——统计测试结果——分析结果——测试报告

PS:

1 .测试执行时,执行多次,取平均结果更为准确。

2. 单机并发不够时,采用多机分布式并发;

3. 测试过程,一定要尽可能模拟实际应用场景;

四、性能测试关注的指标

测试人员关注(单次业务相关指标):

并发用户数

响应时间:TP(百分比分布统计)

吞吐量:tps/qps

成功率

失败率

开发人员关注(系统层面指标):

1. Tomcat、数据库等;

2. 容量:系统能承载的最大访问量是多少?系统最大的业务处理量是多少?

3. 稳定性:是否支持7*24小时(一周)的业务访问?

运维人员关注(硬件资源相关指标 ):

硬件资源消耗情况:CPU、内存、I/O读写速度、网络带宽等

五、性能结果分析

以下相关指标分析时需注意:

1.响应时间不要光看平均值,平均值不靠谱。要求最好定成:99.9%请求必须<1s,所有的平均响应时间必须<1s,这两个条件限制;

2.响应时间要和吞吐量TPS/QPS挂钩;

系统的性能如果只看吞吐量,不看响应时间是没有意义的。我的系统可以顶10万请求,但是响应时间已经到了5秒钟,这样的系统已经不可用了,这样的吞吐量也是没有意义的。

我们知道,当并发量(吞吐量)上涨的时候,系统会变得越来越不稳定,响应时间的波动也会越来越大,响应时间也会变得越来越慢,而吞吐率也越来越上不去(如上图所示),包括CPU的使用率情况也会如此。所以,当系统变得不稳定的时候,吞吐量已经没有意义了。吞吐量有意义的时候仅当系统稳定的时候。

所以,吞吐量的值必须有响应时间来卡。比如:TP99小于100ms的时候,系统可以承载的最大并发数是1000qps。这意味着,我们要不断的在不同的并发数上测试,以找到软件的最稳定时的最大吞吐量。

3. 响应时间吞吐量要和成功率挂钩 ;

不难理解,如果请求可以并发10w,但是成功率只有40%,那也没什么用。

性能测试的失败率的容忍应该是非常低的。对于一些关键系统,成功请求数必须在100%,一点都不能含糊。

4. CPU、内存等硬件资源占比持续超过90%,说明性能存在瓶颈;

5. 带宽波动起伏很大,说明带宽受限;

今天的分享就到此结束了,如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦......

最后: 可以在我的VX公众号:【自动化测试老司机】免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

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

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

相关文章

ARM day8 key1/2/3led

key_led.h #ifndef _KEY_H_ #define _KEY_H_#include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_exti.h" #include "stm32mp1xx_gic.h"//EXTI编号 typedef enum {EXTI0,EXTI1,EXTI2,EXTI3,EXTI4,EXTI5,…

D. Maximum Subarray

Problem - 1796D - Codeforces 思路&#xff1a;想了个假dp做法推了半天&#xff0c;果然是dp。考虑用dp[i][j]表示以i结尾的&#xff0c;并且选择j个&#xff0b;x的最长连续子序列&#xff0c;那么如果我不选择第i位&#xff0c;那么会有f[i][j]max(w[i]-x,f[i-1][j]w[i]-x)&…

理解基本的Android编程(2/2)

6、Android Activity 活动代表了一个具有用户界面的单一屏幕&#xff0c;如 Java 的窗口或者帧。 如果你曾经用 C,C 或者 Java 语言编程&#xff0c;你应该知道这些程序从 main() 函数开始。很类似的&#xff0c;Android 系统初始化它的程序是通过活动中的 onCreate() 回调的…

IO进程线程day2(2023.7.26)

一、Xmind整理&#xff1a; 二、课上练习&#xff1a; 练习1&#xff1a;全缓冲 //由于编译器优化&#xff0c;只打开不操作&#xff0c;此时不会真正申请缓冲区。 fputc(a, fp); printf("%ld\n", fp->_IO_buf_end - fp->_IO_buf_base ); 刷新条件&#xff…

[算法很美打卡] 多维数组篇 (打卡第一天)

文章目录 顺时针打印二维数组0所在的行列清零 顺时针打印二维数组 package 每日算法学习打卡.算法打卡.七月份.七月二十六号;public class test1 {public static void main(String[] args) {int[][] matrix {{1,2},{5,6},{9,10},{13,14},};print(matrix);}static void print(i…

⛳ 面向对象面试题

面向对象面试题目录 ⛳ 面向对象面试题&#x1f69c; 一&#xff0c;成员变量&#xff0c;局部变量&#xff0c;类变量存储在内存的什么地方&#xff1f;&#x1f43e; 1.1&#xff0c;类变量&#xff08;静态成员变量&#xff09;&#x1f4dd; 1.2&#xff0c;成员变量⭐ 1.3…

代码随想录算法训练营第59天|503 42

503 我的思路是既然是循环数组 那就最多遍历两圈 其他的跟单调栈写法一模一样 class Solution { public:vector<int> nextGreaterElements(vector<int>& nums) {vector<int> result(nums.size(), -1);if (nums.size()1) return result;stack<int>…

HttpRunner自动化测试之响应中文乱码处理

响应中文乱码&#xff1a; 当调用接口&#xff0c;响应正文返回的中文是乱码时&#xff0c;一般是响应正文的编码格式不为 utf-8 导致&#xff0c;此时需要根据实际的编码格式处理 示例&#xff1a; 图1中 extract 提取title标题&#xff0c;output 输出 title 变量值&#x…

yolov8系列[五]-项目实战-yolov8模型无人机检测

yolov8系列[五]-项目实战-yolov8模型无人机检测 项目介绍项目展示功能简介代码结构如何启动 开发者模式1. 安装依赖环境2. 启动程序 源代码下载其他 项目介绍 无人机识别项目,无人机搭载nvidia jetson边缘计算板子,进行实时识别。使用yolov8算法&#xff0c;训练了识别无人机的…

leetcode 1870. Minimum Speed to Arrive on Time(准时到达的最小速度)

需要找一个speed, 使得dist[i] / speed 加起来的时间 < hour, 而且如果前一个dist[i] / speed求出来的是小数&#xff0c;必须等到下一个整数时间才计算下一个。 speed最大不会超过107. 不存在speed满足条件时返回-1. 思路&#xff1a; 如果前一个dist[i] / speed求出来的…

【万字详解】Linux进程信号||一文搞定进程信号||附测试代码

进程信号 &#x1f373;信号理解&#x1f9c8;什么是信号&#xff1f;&#x1f95e;进程信号&#x1f953;查看系统信号&#x1f969;在技术角度理解信号&#x1f357;注意 &#x1f356;信号处理&#x1f9c7;信号异步机制 &#x1f354;信号产生&#x1f35f;通过终端按键产生…

【CSS】手写 Tooltip 提示组件

文章目录 效果示例代码实现 效果示例 代码实现 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>一颗不甘坠落的流星</title><style>body {padding: 120px;}.tooltip {position: relative;display: inline-blo…

Wish入驻防封指南——附最新运营要点

近日来&#xff0c;跨境电商平台Wish有了新改革&#xff0c;为提高产品质量把控效率&#xff0c;Wish最近将入驻机制又完全开放转变为“邀请制”&#xff0c;加强了品控措施&#xff0c;也意味着商家入驻门槛变高&#xff0c;流程与之前截然不同。但对于已有跨境电商经验/没有跨…

剑指offer12 矩阵中的路径 13 机器人的运动范围 34.二叉树中和为某一值得路径

class Solution { public:bool exist(vector<vector<char>>& board, string word) {int rowboard.size(),colboard[0].size();int index0,i0,j0;if(word.size()>row*col) return 0;//vector<vector<int>> visit[row][col];//标记当前位置有没有…

ES6: 对象简写/symbol()/ Iterator/set/map/await.......

对象简写 对象名字为变量 复制对象/还有个assign方法 symbol() 这种写法用户怎么添加属性都ok 获取属性,这个方法获取symbol属性 获取属性,这个方法获取symbol和普通属性 Iterator 比较复杂,可以看视频 有迭代器的可用for..of循环 012-ES6-Iterator_哔哩哔哩_bilibili Set 它…

安防监控视频汇聚平台EasyCVR修改录像计划等待时间较长是什么原因?

安防监控视频EasyCVR视频融合汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、云存储、回放与检…

【UE5 多人联机教程】05-更改角色颜色

效果 步骤 1. 打开“BP_ThirdPersonCharacter”&#xff0c;找到角色的材质 创建材质实例 2. 在“BP_ThirdPersonCharacter”中新建一个整型变量&#xff0c;命名为“PlayerColorIndex” 勾选可编辑实例、生成时公开&#xff0c;复制选择“RepNotify” 复制选择“RepNotify”…

7.26 作业 QT

1.继续完善登录框&#xff0c;当登录成功时&#xff0c;关闭登录界面&#xff0c;跳转到新的界面中&#xff1a; 结果图&#xff1a; second.h: #define SECOND_H#include <QWidget> #include<QDebug> //信息调试类&#xff0c;用于打印输出的 #inc…

学C的第三十天【自定义类型:结构体、枚举、联合】

相关代码gitee自取&#xff1a;C语言学习日记: 加油努力 (gitee.com) 接上期&#xff1a; 学C的第二十九天【字符串函数和内存函数的介绍&#xff08;二&#xff09;】_高高的胖子的博客-CSDN博客 1 . 结构体 &#xff08;1&#xff09;. 结构体的基础知识&#xff1a; 结构…

docker-compose yml配置、常用命令

下载完docker-compose后&#xff0c;如果想使用docker-compose命令开头&#xff0c;需要创建软连接 sudo ln -s /usr/local/lib/docker/cli-plugins/docker-compose /usr/bin/docker-compose 1.docker-compose.yml文件编排 一个 docker-compose.yml 文件的顶层元素有&#xff…