性能测试基础

性能测试分类

客户端性能:测试APP自身的性能,例如CPU、内存消耗;web页面元素渲染速度
服务端性能:测试服务端项目程序的支持的并发、处理能力、响应时间等,主要通过接口来做性能测试

性能测试指标

并发

同时向服务器发送请求的用户数。

TPS/QPS

TPS:Transaction Per Second,每秒钟处理的事务数。在服务端接口性能测试中,事务可以理解成一次接口调用并返回,所以TPS其实就是每秒钟处理多少次接口调用。TPS越高,处理能力越高,性能越好。

QPS:也是指每秒处理的请求

平均响应时间

响应时间=网络传输的总时间+各组件业务处理时间
在这里插入图片描述
响应时间Response Time,简称RT,指的是服务端处理完一个请求所花费的时间,通常时间单位为毫秒ms。
平均响应时间就是n多个请求响应时间的平均值。
平均响应时间越短,代表性能越好,TPS就越高。

TOP响应时间

将所有请求的响应时间先从大到小进行排序,计算指定比例的请求都是小于某个时间。该指标统计
的是大多数请求的耗时。
Tp90(90%响应时间):90%的请求耗时都低于某个时间
Tp95(95%响应时间):95%的请求耗时都低于某个时间
Tp99(99%响应时间):99%的请求耗时都低于某个时间

并发数/虚拟用户(Vuser)

压测工具中设置的并发线程/进程数量

成功率

请求的成功率

PV(Page View)

页面/接口的访问量

UV(Unique Visitor)

页面/接口的每日唯一访客

吞吐量

网络中的流量,TPS越高,吞吐量越大

TPS、响应时间和并发数的关系

在系统达到性能瓶颈之前,TPS和并发数成正比关系,即并发数越高,TPS越高;达到瓶颈后,并发数增加,TPS
不会继续增高(甚至会下降),这个最高的tps出现的点,叫做拐点
TPS和平均响应时间成反比关系,即平均响应时间越小,TPS就越高
响应时间单位为秒的情况下
TPS = 1 / 响应时间 * 并发数
TPS = 并发数 / 响应时间

在这里插入图片描述

性能监控指标

操作系统级别监控

CPU使用率、内存使用率、网络IO(input/output)、磁盘(read/write/util)

中间件监控

连接数、长短连接、使用内存

应用层监控

线程状态、JVM参数、GC频率、锁

DB层监控

连接数、锁、缓存、内存、SQL效率

性能测试流程

需求调研

项目背景
测试范围
业务逻辑 & 数据流向
系统架构
配置信息
测试数据量(量级要一致)
外部依赖
系统使用场景,业务比例
日常业务量
预期指标
上线时间

测试计划

项目描述
业务模型及性能指标
测试环境说明
测试资源
测试方法以及场景设计原则(基准测试、单交易负载测试、混合场景测试、高可用性测试、稳定性测试、其他特殊场景)
测试进度安排及测试准则

环境搭建

测试机器硬件配置尽量和线上一致
系统版本与线上一致
测试环境部署线上最小单元模块
应用、中间件、数据库配置要与线上一致
其他特殊配置

数据准备

测试数据分为两部分:基础数据和参数化数据
通常采用以下三种方法进行构造
调业务接口
– 适合数据表关系复杂
– 优点:数据完整性比较好
执行SQL
– 适合表数量少,简单
– 优点:速度最快

脚本编写

选择工具(Loadrunner、Jmeter、Locust等)
选择协议(Http、TCP、RPC)
参数化
关联
检查点
事务判断

压测执行

选择工具(Loadrunner、Jmeter、Locust等)
选择协议(Http、TCP、RPC)
参数化
关联
检查点
事务判断

调优回归

性能调优需要整个团队完成
反复尝试
回归验证
监控工具
全链路排查
日志分析
模块隔离

测试报告

概述
测试环境
结果与分析
调优说明
项目时间表
结论
建议

性能测试工具

Loadrunner(功能强大、重量级、商业软件)
Jmeter(小巧灵活、轻量级、开源)
Locust(Python开源框架)
Ngrinder( 开源压测平台)

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

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

相关文章

大一作业习题

第一题&#xff1a;答案&#xff1a; #include <stdio.h> void sort(int a[], int m) //将数组a的前m个元素(从小到大)排序 {int i 0;for (i 0; i < m - 1; i){int j 0;int flag 1;for (j 0; j < m - 1 - i; j){if (a[j] > a[j 1]){int t 0;t a[j];…

Java八股文面试全套真题【含答案】- Servlet篇

以下是一些关于Servlet的经典面试题以及它们的答案&#xff1a; 什么是 Servlet&#xff1f; 答案&#xff1a;Servlet 是运行在服务器上&#xff0c;用于处理客户端请求并生成响应的 Java 类。 Servlet 和 JSP 之间的区别是什么&#xff1f; 答案&#xff1a;Servlet 是基于…

1.鸿蒙应用程序开发app_hap开发环境搭建

1.下载Node.js, Javascipts的运行环境 node.js版本下载v12.18.3/https://www.cnblogs.com/txwtech/p/17865780.html 2.下载并安装DevEco Studio DevEco Studio 3.1 DevEco Studio 3.1配套支持HarmonyOS 3.1版本及以上的应用及服务开发&#xff0c;提供了代码智能编辑、低代…

Docker笔记:Docker中简单配置Mysql/Redis/Mongodb容器

Docker 配置 Mysql 容器 1 &#xff09;方案1&#xff1a;基于centos等linux操作系统 启动centos镜像&#xff0c;在里面安装 mysql这样比较麻烦&#xff0c;配置的东西很多 … 2 &#xff09;方案2&#xff1a;直接用 mysql 镜像 (推荐) $ docker pull mysql 下载镜像$ do…

589. N 叉树的前序遍历

589. N 叉树的前序遍历 java1&#xff1a;stack栈&#xff1a;没看懂 class Solution {public List<Integer> preorder(Node root) {List<Integer> res new ArrayList<Integer>();if (root null) {return res;}Map<Node, Integer> map new HashMa…

C盘瘦身,C盘清理

以下只是我的C盘清理经验~ 一.【用软件简单清理C盘】 使用一些垃圾清理软件&#xff0c;简单的初步把C盘先清理一遍。&#xff08;这种软件太多我就不推荐了……&#xff09; 二.【WPS清理大师】 因为我电脑装了WPS&#xff0c;发现右键单击C盘有个选项【释放C盘空间】&#xf…

接口自动化框架(Pytest+request+Allure)

前言&#xff1a; 接口自动化是指模拟程序接口层面的自动化&#xff0c;由于接口不易变更&#xff0c;维护成本更小&#xff0c;所以深受各大公司的喜爱。 接口自动化包含2个部分&#xff0c;功能性的接口自动化测试和并发接口自动化测试。 本次文章着重介绍第一种&#xff0c…

Vue3.3.4中watch无法监测props的更改

背景 网上说了很多解决方案&#xff0c;都是通过watch(() > props.value, (newValue, oldValue) > {})解决&#xff0c;或者是加上{deep: true}附加属性。但是我在Vue3.3.4中&#xff0c;还是无法解决。 下面说一下我的解决方案。 解决方案 通过父组件调用子组件defineE…

点云/Mesh 常见处理库和软件汇总

注&#xff1a;参考 网址1、网址2 文章目录 软件通用点云/Mesh处理库通用几何处理库专用功能库 软件 Processing MeshLabCloudCompareTrimeshPyVistaVedo Visualization Simple-3dvizPlotOptiX (Requires CUDA-enabled GPU)PolyscopePyrender 通用点云/Mesh处理库 PCL &am…

【开发问题】vue的前端和java的后台,用sm4,实现前台加密,后台解密

sm4加密 vue引入的包代码加密解密 javamaven代码运行结果 vue 引入的包 npm install sm-crypto代码加密解密 加密&#xff1a; key &#xff1a;代表着密钥&#xff0c;必须是16 字节的十六进制密钥 password &#xff1a;加密前的密码 sm4Password &#xff1a;代表sm4加密…

Python之格式化保存数据点

功能&#xff1a;将平面点集存储为格式化txt文档&#xff0c;每个坐标值为5位整数&#xff0c;前三位为整数&#xff0c;后2位为小数 输入&#xff1a;平面点坐标&#xff0c;用列表存储&#xff0c;列表的元素为点坐标元组 输出&#xff1a;txt文件&#xff0c;每行一个点坐…

【计算机网络】应用层电子邮件协议

一、电子邮件系统架构 电子邮件是一个典型的异步通信系统&#xff0c;发送方从UA&#xff0c;也就是邮件客户端&#xff0c;通过应用层SMTP协议&#xff0c;传输层tcp协议&#xff0c;发送给发送方的邮件服务器&#xff0c;比如使用的是163邮箱&#xff0c;163提供的SMTP服务器…

python中实现yaml文件管理参数

yaml参数管理器 这是文件目录关系&#xff0c;其中config存放.yaml文件&#xff0c;scripts存放py文件 然后就可以自由使用了&#xff1a; import yaml import os#获取路径 script_directory os.path.dirname(os.path.abspath(__file__)) # 相对于脚本文件的路径 image_relat…

Swift “黑魔法”之动态获取类实例隐藏属性的值

概览 在 Swift 代码的调试中,我们时常惊叹调试器的无所不能:对于大部分“黑盒”类实例的内容,调试器也都能探查的一清二楚。 想要自己在运行时也能轻松找到 Thread 实例“私有”属性的值吗(比如 seqNum)? 在本篇博文中您将学到如下内容: 概览1. 借我,借我,一双慧眼吧…

字符统计[c]

#include<stdio.h> #include<string.h> int main() {int a,b,c;abc0;char s[100];int i0;while(1){i;scanf("%c",&s[i]);if(s[i]?)break;}for(int k1;k<i;k){if(s[k]>48&&s[k]<57){a;//数字}else if((s[k]>65&&s[k]<…

Altair Radioss碰撞 安全与冲击 衡祖仿真

Altair Radioss是解决瞬态加载工况下非线性问题的领先的结构分析求解器。其具备高扩展性、高品质、高鲁棒性&#xff0c;以及诸多功能&#xff1a;多域求解技术、高级材料功能(复合材料)等。Radioss求解器被广泛应用于汽车、航空航天、电子/家电、包装、轨道机车、生物医疗、能…

前端项目有关面试

目录 [TOC](目录) 1. MVC、MVP、MVVM2.大文件上传、多文件上传和断点续传的区别3. 前端存储4.什么是前端自适应5.浏览器原理5.1 从输入url到看到界面的过程5.2 跨域 1. MVC、MVP、MVVM MVC、MVP、MVVM 是常见的软件架构设计模式。MVVM&#xff1a;是一种软件架构设计模式&…

c语言实现链表

链表是一种常见的数据结构&#xff0c;用于存储一系列的元素。它由一系列的节点&#xff08;Node&#xff09;组成&#xff0c;每个节点包含数据和指向下一个节点的指针。不同于数组需要连续的内存空间来存储元素&#xff0c;链表使用指针将节点按照某种逻辑顺序连接起来。 每…

C 语言入门:如何编写 Hello World

C 语言简介 C 语言是由 Dennis Ritchie 于 1972 年在贝尔实验室创建的一种通用编程语言。尽管年代久远&#xff0c;它仍然是一款非常流行的语言。它之所以受欢迎的主要原因是它是计算机科学领域的基础语言之一。C 语言与 UNIX 紧密相连&#xff0c;因为它被用于编写 UNIX 操作…

Audio Signal (MATLAB) 代码学习1-常见问题

问题描述 使用MATLAB完成如下操作 加载音频文件,并存储到变量x中将x和一个频率为440Hz的正弦信号相加,用结果定义一个新的信号y绘制y信号的时域图,并正确定义时间轴利用Hann window(汉宁窗)从y中提取一个20ms的窗信号利用线性预测编码(阶数20)预测白化滤波器的参数。% …