性能测试流程
性能测试实战
- 一.资源指标分析
- 1.判断CPU是否瓶颈的方法
- 2.判断内存是否瓶颈的方法
- 3.判断磁盘I/O是否瓶颈的方法
- 4.判断网络带宽是否是瓶颈的方法
- 二.系统指标分析
- 三.性能调优
- 四.性能测试案例
- 1.项目背景
- 2.实施规划
- (1)需求分析
- (2)测试方案
- 3.性能测试执行
- 4.结果分析
一.资源指标分析
1.判断CPU是否瓶颈的方法
一般情况下CPU满负荷工作,有时候并不能判定为CPU出现瓶颈。比如Linux总是让CPU尽可能最大化使用。
判断CPU瓶颈的条件:CPU空闲持续为0 ;运行队列大于CPU核数(经验值3——4倍)
造成瓶颈的因素:应用程序不合理,硬件资源不足。比如SQL语句引起,则要优化CPU使用过高的SQL语句。
2.判断内存是否瓶颈的方法
一般至少有10%可用内存,内存使用率可接受上限85%。空闲内存过小可能是内存不足或内存泄漏引起的。
3.判断磁盘I/O是否瓶颈的方法
(1)计算每磁盘I/O数。
| RAID类型 | 计算方法 |
|---|---|
| RAID 0 | (Reads+Writes)/Numbers of Disks |
| RAID 1 | (Reads+2*Writes)/2 |
| RAID 5 | [Reads+(4*Writes)]/Numbers of Disks |
| RAID 10 | [Reads+(2*Writes)]/Numbers of Disks |
经过计算得到的每磁盘I/O数超过磁盘标称的I/O能力,则说明存在磁盘的性能瓶颈。
(2)监控磁盘的读/写。如果磁盘长时间进行大数据量读/写操作,且CPU等待超过20%,则说明磁盘I/O存在问题,考虑提高磁盘I/O读/写性能。
4.判断网络带宽是否是瓶颈的方法
通过减小网络带宽,查看并发用户数,响应时间与事务通过率等性能指标是否不能接受。反之,增加网络带宽,性能指标是否明显提高。
如果性能测试始终报连接超时,实际手工访问正常,可以用ping命令查看网络是否同,如果出现网络严重延迟或丢包,则说明网络不稳定。
二.系统指标分析
1.平均响应时间
如果持续并发性能测试,监控平均响应时间逐渐变长,这时需要借助监控到的资源指标,首先排除资源方面的限制元素,再从应用本身进行定位。
2.并发用户数
一般选用高吞吐量,高数据I/O,高商业风险的业务功能进行并发用户访问测试。
3.事务成功率,超时出错率
4.吞吐量
吞吐量通常由QPS(TPS)和并发数两个因素决定。
QPS(TPS)= 并发数/平均响应时间
三.性能调优
性能优化策略:用空间换时间,用时间换空间,简化代码,并行处理。






总结:性能指标是要结合分析的,这种指标都是相关联的,性能调优也是有多方面调优,需要对数据库,算法,网络,代码熟悉,根据积累的经验进行调优。
四.性能测试案例
1.项目背景
2.实施规划
(1)需求分析
-
新版本上线前
一般直接在生产环境上进行性能测试,进行压力测试,配置测试。
测试目标:验证系统在饱和负荷下的业务处理能力;发现系统瓶颈并通过相关参数调优,提高整体系统处理能力。 -
新需求版本上线前
一般在测试环境进行性能测试,进行基准测试。
测试目标:测试整体系统修改前后监控指标的变化;测试新需求是否达到预定的性能指标。 -
页面测试
侧重于测试关键业务的整体性能,例如登录,开户,变更等常用业务模块。
在页面上录制登录,业务操作,受理提交,退出系统的全流程,然后添加验证点,处理关联信息,精简脚本。 -
接口测试
侧重抽取底层,业务量大,响应时间要求高的业务模块测试,比如查询,业务开通类接口。
检查环境,检验报文,准备测试数据。
(2)测试方案
1.测试目标:新需求是否满足设计预期,改造需求是否有性能下降。
| 场景类型 | 业务模块 | 接口编号 | 场景描述 | 性能指标 |
|---|---|---|---|---|
| 接口 | 指标查询 | 43543 | 尝试不同并发下的接口调用,在TPS达到指标要求时,验证响应时间是否达标 | TPS>=6;平均响应时间<=3000ms |
| 页面 | 群组套餐变更 | 无 | 尝试不同并发下测试新旧版本,在TPS达到指标要求时,检验响应时间是否下降>=5% | 新版本较旧版本的响应时间是否下降>=5% |
2.测试环境:环境性能差异,中间件的参数配置都需要记录。硬件基本信息,中间件参数配置,数据库。
3.测试场景:初步确定一个业务的并发场景,比如5并发,10并发,20并发。
| 序号 | 业务名称 | 业务指标 | 性能指标 |
|---|---|---|---|
| 1 | 套餐变更 | TPS>=6,平均响应时间<3000ms | CPU <=85%,内存空闲率为80%,磁盘I/O没有出现分页现象 |
| 2 | 添加成员 | TPS>=12,平均响应时间<3000ms | CPU <=85%,内存空闲率为80%,磁盘I/O没有出现分页现象 |
4.测试数据
5.职责分工
6.测试环境准备
7.测试工具
| 软件名称 | 说明 |
|---|---|
| Load Runner | 性能测试工具 |
| soapUI | 接口功能调试工具 |
| HttpWatch | 页面连接加载测试工具 |
| Nmon | 主机资源监控工具 |
3.性能测试执行
1.录制脚本,录制接口
2…测试策略
3.监控
4.结果分析
相关文章:
性能测试流程
性能测试实战一.资源指标分析1.判断CPU是否瓶颈的方法2.判断内存是否瓶颈的方法3.判断磁盘I/O是否瓶颈的方法4.判断网络带宽是否是瓶颈的方法二.系统指标分析三.性能调优四.性能测试案例1.项目背景2.实施规划(1)需求分析(2)测试方…...
zookeeper集群的搭建,菜鸟升级大神必看
一、下载安装zookeeperhttp://archive.apache.org/dist/zookeeper/下载最新版本2.8.1http://archive.apache.org/dist/zookeeper/zookeeper-3.8.1/二、上传安装包到服务器上并且解压,重命名tar -zxvf apache-zookeeper-3.8.1-bin.tar.gzmv apache-zookeeper-3.8.1-b…...
C语言之习题练习集
💗 💗 博客:小怡同学 💗 💗 个人简介:编程小萌新 💗 💗 如果博客对大家有用的话,请点赞关注再收藏 🌞 文章目录牛客网题号: JZ17 打印从1到最大的n位数牛客网题号&#x…...
Buuctf [ACTF新生赛2020]Universe_final_answer 题解
1.程序逻辑 程序逻辑并不复杂: 首先输入字符串,然后对字符串进行一个判断是否满足条件的操作 如果满足则对字符串进行处理并输出,输出的就是flag 2.judge_860函数 显然根据这十个条件可以通过矩阵解线性方程组,这里对变量的命名做了一些调整,让Vi对应flag[i]方便读 …...
【Linux】环境变量
目录背景1.概念2.常见环境变量2.1 PATH指令和自定义程序向环境变量PATH中添加路径删除PATH中的路径2.2 env:显示所有环境变量2.3 环境变量相关的命令3.通过代码获取环境变量1.char* envp[]2.第三方变量enciron3.getenv函数获取指定环境变量4.利用获取的环境变量自制…...
单一职责原则
单一职责原则: 就一个类而言,应该只有一个引起它变化的原因,如果一个类承担的职责过多就等于把这些职责耦合在一起,至少会造成以下两方面的问题: 我们要去修改该类中的一个职责可能会影响到该类的其它职责。这种耦合…...
golangの并发编程(GMP模型)
GMP模型 && channel1. 前言2. GMP模型2.1. 基本概念2.2. 调度器策略2.3. go指令的调度流程2.4. go启动周期的M0和G02.5. GMP可视化2.6. GMP的几种调度场景3. channel3.1. channel的基本使用3.2. 同步器1. 前言 Go中的并发是函数相互独立运行的体现,Gorouti…...
MacBook Pro错误zsh: command not found: brew解决方法
问题描述:本地想安装Jenkins,但是brew指令不存在/我的电脑型号是19款的MacBook Pro(Intel芯片)。解决方法MacBook Pro 重新安装homebrew,用以下命令安装,序列号选择阿里巴巴下载源。/bin/zsh -c "$(cu…...
spring中BeanFactory 和ApplicationContext
在学习spring的高阶内容时,我们有必要先回顾一下spring回顾spring1.什么是springspring是轻量级的,指核心jar包时很小的;非侵入式的一站式框架(数据持久层,web层,核心aop),为了简化企业级开发。核心是IOC&a…...
HC32L17x的LL驱动库之dma
#include "hc32l1xx_ll_dma.h"/// //函 数: //功 能: //输入参数: //输出参数: //说 明: // uint8_t LL_DMA_DeInit(DMA_TypeDef* DMAx, uint32_t Channel) {__IO uint32_t* dmac NULL;dmac &(DMAx->CONFA0);Channel << 4;dmac …...
SSM项目 替换为 SpringBoot
一、运行SSM项目 保证项目改为SpringBoot后运行正常,先保证SSM下运行正常。 项目目录结构 创建数据库,导入sql文件 查看项目中连接数据jar版本,修改对应版本,修改数据库配置信息 配置启动tomcat 运行项目,测试正常…...
RL笔记:动态规划(2): 策略迭代
目录 0. 前言 (4.3) 策略迭代 Example 4.2: Jack’s Car Rental Exercise 4.4 Exercise 4.5 Exercise 4.6 Exercise 4.7 0. 前言 Sutton-book第4章(动态规划)学习笔记。本文是关于其中4.2节(策略迭代)。 (4.3) 策略迭代 基…...
2023软件测试金三银四常见的软件测试面试题-【测试理论篇】
三、测试理论 3.1 你们原来项目的测试流程是怎么样的? 我们的测试流程主要有三个阶段:需求了解分析、测试准备、测试执行。 1、需求了解分析阶段 我们的SE会把需求文档给我们自己先去了解一到两天这样,之后我们会有一个需求澄清会议, 我…...
蓝桥训练第二周
1 ,泛凯撒加密 内存限制:128 MB时间限制:1.000 S 题目描述 众所周知,在网络安全中分为明文和密文,凯撒加密是将一篇明文中所有的英文字母都向后移动三位(Z的下一位是A),比如a向后…...
详讲函数知识
目录 1. 函数是什么? 2. C语言中函数的分类: 2.1 库函数: 2.2 自定义函数 函数的基本组成: 3. 函数的参数 3.1 实际参数(实参): 3.2 形式参数(形参): …...
gin 框架初始教程文档
一 、gin 入门1. 安装gin :下载并安装 gin包:$ go get -u github.com/gin-gonic/gin2. 将 gin 引入到代码中:import "github.com/gin-gonic/gin"3.初始化项目go mod init gin4.完整代码package mainimport "github.com/gin-go…...
Maven的下载和安装【详细】
文章目录一、什么是Maven?二、Maven的安装与配置2.1下载Maven安装包2.2配置Maven环境变量2.3验证三、Idea配置Maven3.1配置 setting.xml文件3.2Idea配置Maven一、什么是Maven? Apache Maven是个项目管理和自动构建工具,基于项目对象模型&…...
[数据结构]:04-循环队列(数组)(C语言实现)
目录 前言 已完成内容 循环队列实现 01-开发环境 02-文件布局 03-代码 01-主函数 02-头文件 03-QueueCommon.cpp 04-QueueFunction.cpp 结语 前言 此专栏包含408考研数据结构全部内容,除其中使用到C引用外,全为C语言代码。使用C引用主要是为了…...
buu [GWCTF 2019]BabyRSA 1
题目描述: import hashlib import sympy from Crypto.Util.number import *flag GWHT{******} secret ******assert(len(flag) 38)half len(flag) / 2flag1 flag[:half] flag2 flag[half:]secret_num getPrime(1024) * bytes_to_long(secret)p sympy.nextp…...
codeforces 1669F
题意: alice和bob从数组两边的吃糖果, 数组的值就是糖果重量 要求alice和bob吃的糖果重量必须一样, 输出能吃几个糖果 这题最先想到的是前后缀相加 模拟一个前缀和 和 后缀和 在n/2的位置向前找前缀和 在n/2的位置向后找后缀和 找到第一个前缀和后缀和的下标输出就好 …...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...
用递归算法解锁「子集」问题 —— LeetCode 78题解析
文章目录 一、题目介绍二、递归思路详解:从决策树开始理解三、解法一:二叉决策树 DFS四、解法二:组合式回溯写法(推荐)五、解法对比 递归算法是编程中一种非常强大且常见的思想,它能够优雅地解决很多复杂的…...
