测试人员须要知道的性能测试那些事

news2024/11/14 13:52:30

随着各企业的业务发展、用户量以及数据量的不断增加,系统承载的压力也会随之增加,服务系统的性能好坏又严重影响企业的利益。因此,性能测试重要性与需求越来越强烈。

常见的性能测试目的

性能测试是确定系统在特定工作负载下的稳定性和响应能力。在进行性能测试之前,首先是要明确性能测试的目的,目的不同,对应的解决方案会有很大差异,最常见的性能测试目的(或契机)有三种:

· 评测当前系统性能

通过性能测试了解系统当前的性能是否达到预期。例如:新系统上线前、技术升级后,都会进行性能测试,确保系统在线上稳定可靠地运行。

· 寻找瓶颈,优化性能

系统已知有性能问题,进行测试寻找瓶颈,以便优化其性能。例如:用户提出业务操作响应时间长,需要定位问题,调整性能;系统运行一段时间后,速度变慢,寻找瓶颈,进而优化。

· 预测系统未来的性能、可扩展性

通过性能测试预测系统在未来达到一定负载量的情况下,系统的性能表现。为的是提前预防并降低风险。扩展能力非常好的系统,性能是随资源扩展呈线性或接近线性提升。 

性能测试的不同类型

· 基准测试

基准测试:系统较低压力时,查看系统的运行状况并记录相关数作为基础参考。

· 负载测试

负载测试是通过逐渐增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统能承受的最大负载量的测试。目标:确定系统的性能容量(如系统在保证一定响应时间情况下能够允许多少并发用户的访问),系统各项指标,如吞吐量、响应时间、CPU负载、内存使用等如何决定系统的性能。
 

· 压力测试

压力测试通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。目标:压力测试是为了发现在什么条件下您的应用程序的性能会变得不可接受。

· 并发性能测试

负载测试和压力测试通常被合称为并发性能测试。即大并发场景下的系统性能,多用户同时访问时,检测系统是否能够稳定运行。

平均并发用户数C=nL/T n:平均每天访问用户数(login session的数量); L:一天内用户从登录到退出的平均时间(login session的平均长度); T:考察的时间段长度(一天内多长时间有用户使用系统); 并发用户数峰值:C'≈C+3*根号C

· 大数据量测试

大数据量测试包括独立的数据量测试和综合数据量测试。独立的数据量测试指针对某些系统存储、传输、统计、查询等业务进行的大数据量测试。综合数据量测试指系统在具备一定数据量时,在负载压力测试下,考察业务是否能够正常运行的测试。目标:测试数据量较大时系统的性能状况。

· 容量测试

容量测试的目的是通过测试预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数),系统在其极限状态下没有出现任何软件故障且能正常运行。

· 配置测试

通过对被测系统软硬环境的调整,了解各种不同环境对系统性能的影响程度,从而找到系统各项资源的最优分配原则。

· 稳定性测试

稳定性是通过给系统加载一定的压力,让系统持续运行一段时间(通常为7x24小时),检测系统是否能够稳定运行。稳定性测试也称为疲劳强度测试,属于可靠性测试的范畴。目标:测试系统长时间无故障稳定运行的能力。

· 失效恢复测试

失效恢复测试是针对有冗余备份或负载均衡的系统来说,检验如果系统局部发生故障,系统灾备措施是否可以正常启动,用户是否可以继续使用。(如:集群、热备等) 目标:通过实施失效恢复测试,评估系统的健壮性和可恢复性。

在实际项目当中,可根据不同的性能测试目的,选相对应的性能测试方式。 

性能测试的监控指标

在进行各类性能测试时,需要同步检测系统各项性能指标,从而分析系统的实际的响应能力与稳定性等。常用的性能监测指标有四类:业务性能指标、资源性能指标、中间件监测指标、数据库监测指标。

业务性能指标

  •   · 每秒交易数(TPS):每秒钟系统能够处理的交易或事务的数量。
  •   · 响应时间:从请求端发起请求开始,到请求端接收到服务器端的返回结束,这个过程所耗费的时间。
  •   · 并发用户数:指系统可以同时承载的正常使用系统功能的用户的数量,即在给定的时间段内正在使用系统的用户数。
  •   · 在线用户数:没有提交请求,会话状态在线的用户数。
  •   · 吞吐量:指系统在单位时间内处理请求的数量。即在给定时间段内系统完成的交易数量。

响应时间行业标准

  •   ·互联网企业:500毫秒以下,例如淘宝业务10毫秒左右。
  •   · 金融企业:1秒以下为佳,部分复杂业务3秒以下。
  •   · 保险企业:3秒以下为佳。
  •   · 制造业:5秒以下为佳。
  •   · 时间窗口:不同数据量结果是不一样的,大数据量的情况下,2小时内完成。

TPS行业标准

  •   · 互联网企业:500毫秒以下,如某宝业务10毫秒左右。
  •   · 金融行业:1000TPS~50000TPS,不包括互联网化的活动。
  •   · 保险行业:100TPS~100000TPS,不包括互联网化的活动。
  •   · 制造行业:10TPS~5000TPS。
  •   · 互联网电子商务:10000TPS~1000000TPS。
  •   · 互联网中型网站:1000TPS~50000TPS。
  •   · 互联网小型网站: 500TPS~10000TPS。

资源性能

  •   · CPU指标:主要指的CPU使用率、利用率,包括用户态(user)、系统态(sys)、等待态(wait)、空闲态(idle)。一般情况下,CPU使用率、利用率要低于警戒值范围75%。
  •   · 内存/SWAP:内存利用率100%并不代表内存有瓶颈,衡量系统内有瓶颈主要靠SWAP(与虚拟内存交换)交换空间利用率,一般情况下,SWAP交换空间利用率要低于70%,太多的交换将会引起系统性能低下。
  •   · 磁盘吞吐量:磁盘吞吐量是指在无磁盘故障的情况下单位时间内通过磁盘的数据量。磁盘繁忙率,磁盘队列数,平均服务时间,平均等待时间,空间利用率。其中磁盘繁忙率是直接反映磁盘是否有瓶颈的重要依据,一般情况下,磁盘繁忙率要低于70%。
  •   · 网络吞吐量:网络吞吐量是指在无网络故障的情况下单位时间内通过的网络的数据数量。一般情况下不能超过设备或链路最大传输能力的70%。

 


  资源性能(CPU、内存、磁盘)行业标准:
  CPU 利用率要低于业界警戒值范围之内,即小于或者等于75%;
  CPU sys%小于或者等于30%;
  CPU wait%小于或者等于5%;
  SWAP交换空间利用率低于70%;
  磁盘繁忙率低于70%;
  网络吞吐不能超过最大传输能力70%。
  中间件指标
  中间件监测指标主要包括JVM、线程池、JDBC连接池,常用的中间件如:Tomcat、Weblogic等。


  中间件监控内容及行业标准:
  线程数最小设置50和最大设置200比较合适。
  JDBC最小设置50和最大设置200比较合适。
  JVM最小堆大小和最大堆大小分别设置1024M比较合适。
  数据库性能指标
  SQL:执行SQL耗时。
  吞吐量:每秒事务次数(TPS),每秒查询次数(QPS)。
  锁:锁等待次数和锁等待时间。
  命中率:索引缓冲区命中率、线程缓存命中率、表缓存命中率、查询缓存命中率等。


  数据库监控内容及行业标准:
  SQL耗时越小越好,一般情况下微秒级别。
  命中率越高越好,一般情况下不能低于95%。
  锁等待次数越低越好,等待时间越短越好。
  操作系统内核参数主要包括信号量、进程、文件句柄。
  性能测试流程
  首先要制定测试计划,明确目的、策略等。以测试计划为依据,逐步开展性能测试工作。

明确性能测试目标

确定本次性能测试的目标,包括性能测试对象、需求范围,以及性能指标达标要求,即测试退出条件。

制定性能测试计划

确定了测试对象和测试需求之后,需要制定一份性能测试计划,指导性能测试工作的进行。包括:简介、测试环境、测试场景、测试数据、测试策略、测试时间与人员安排。

· 测试环境

描述性能测试环境的物理架构。

· 测试场景

针对各业务功能模块,设计不同测试类型(稳定性测试、负载测试、压力测试)等的单场景、组合场景测试。

· 测试数据

描述各性能测试场景下的数据量要求,加压多大数据量需要提前与业务侧对齐目标,系统现存数据体量以及每年增长幅度也可以通过与业务人员(产品经理)确定,当然也可以一些经验方法或公式来估算。比如:有并发用户数与峰值公式,以及二八原理估算方法。

【并发用户数公式】:C = nL/T。C:平均的并发用户数;n:平均每天访问用户数(login session的数量);L:一天内用户从登录到退出的平均时间(login session的平均长度);T:考察的时间段长度(一天内多长时间有用户使用系统);

【并发用户数峰值公式】:C'≈C+3*根号C。其中:C:公式1中的平均并发用户数;

【二八原理估算测试强度】:每个工作日中80%的业务在20%的时间内完成。例如:每年业务集中在8个月,每个月20个工作日,每个工作日8小时,即每天80%的业务的在1.6小时完成。去年全年处理业务约100万笔,其中15%的业务处理中每笔业务需对应用服务器提交7次请求;其中70%的业务处理中每笔业务需对服务器提交5次请求;其余15%的业务处理中每笔业务需对应用服务器提交3次请求。(根据以往统计结果,每年的业务增量为15%,考虑到今后3年业务发展的需要,测试需按现有业务量的两倍进行。)

· 性能测试策略

描述性能测试方法和流程与工具等。需要进行哪几种类型的测试。

· 测试时间与人员安排

描述参与性能测试的人员,以及性能测试时间计划。

执行性能测试

依据性能测试计划进行实施测试,准备测试环境、构造测试数据 、执行测试用例 、记录测试结果。在此过程中,如发现性能问题,提交Bug,修正Bug。

性能测试报告

完成性能测试之后,编写性能测试报告,整理总结本次性能测试的背景、目的、测试范围、测试指标需求、测试环境与工具、测试内容、测试结果与分析等。

其中测试结果与分析主要是罗列测试指标结果数据及图表,并且对测试的结果及发现的性能问题进行总结、分析。性能测试报告样例参见下图:

性能测试工具
  为了更高效的进行性能测试,选用适合的测试工具非常关键,下面列举了一些常用的性能测试工具供参考。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 

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

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

相关文章

数智引航 共赢未来 | 科士达2023数据中心合作伙伴大会圆满召开!

3月5日,科士达2023年全国合作伙伴大会在广东深圳隆重召开,本次大会以“数智引航 共赢未来”为主题,来自全国各地的核心渠道伙伴齐聚一堂,深度交流,展望未来,共同探讨数据中心技术发展趋势,碰撞…

[Python图像处理] 使用高通滤波器实现同态滤波

使用高通滤波器实现同态滤波同态滤波基础实现同态滤波相关链接同态滤波基础 同态滤波是一种去除图像中乘性噪声的技术,常用于校正图像中的不均匀照明。根据图像形成的光照反射模型,图像 f(x,y)f(x,y)f(x,y) 可以由以下两个分量表征: 入射到…

linux中改变了jdk版本,为什么其他用户无法使用?

linux中改变了jdk版本,为什么其他用户无法使用? 1、jdk建在/usr/local目录下 2、环境变量写在/etc/profile下 3、如果发现root用户下,java -version可以出现版本信息,其他用户下查询不到jdk版本信息 问题:root用户下&…

关于递归处理,应该怎么处理,思路是什么?

其实问题很简单,就是想要循环遍历整个data对象,来实现所有name转成label,但是想到里面还有children属性,整个children里面可能还会嵌套很多很多的name,如此循环,很难搞,知道使用递归&#xff0c…

Linux系统安装Hbase,通过Zookeeper管理

目录 一、安装包解压,重命名 二、修改环境配置 2.1、修改 Hbase配置 2.2、修改 zookeeper配置 2.3、修改/etc/profile 环境,添加Hbase和Zookeeper环境路径 三、启动Hbase 四、退出服务 一、安装包解压,重命名 安装包:链接…

数据分析:基于随机森林(RFC)对酒店预订分析预测

数据分析:基于随机森林(RFC)对酒店预订分析预测 作者:AOAIYI 作者简介:Python领域新星作者、多项比赛获奖者:AOAIYI首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞&#x1f…

微信小程序上拉、下拉刷新组封装件

在开发小程序的时候通常会遇到上拉或者下拉刷新的功能需求&#xff0c;然而这个功能很多页面也都会用到&#xff0c;因此这里&#xff0c;把这个功能封装为组件&#xff0c;方便复用 我很直接&#xff0c;不多说&#xff0c;上代码 首先index.wxml <scroll-view scroll-y…

LNMP架构的源码编译环境下部署 Discuz!社区论坛与Wordpress博客

目录 一.编译安装Nginx 1.关闭防火墙 2.安装依赖包 3.创建运行用户 4.解压软件包并编译安装 5.软链接路径优化 6.添加Nginx系统服务 二.编译安装MySQL服务 1.安装依赖环境 2.创建运行用户 3.解压软件包并编译安装 4.数据库目录进行权限调整 5.修改配置文件 6.设…

linux面试基础篇

题目目录1.简述DNS分离解析的工作原理&#xff0c;关键配置2.apache有几种工作模式&#xff0c;分别简述两种工作模式及其优缺点&#xff1f;3.写出172.0.0.38/27 的网络id与广播地址4.写出下列服务使用的传输层协议&#xff08;TCP/UDP&#xff09;及默认端口5.在局域网想获得…

Uni-app页面路由的几种写法

uni.navigateTo( OBJECT) 保留当前页面&#xff0c;跳转到应用内的某个页面&#xff0c;使用 uni.navigateBack 可以返回到原来页面 ONJECT参数说明&#xff1a; 注意&#xff1a; 页面跳转路径有层级限制&#xff0c;不能无限跳转新页面跳转到 tabBar 页面只能使用 switchT…

NCRE计算机等级考试Python真题(十二)

第十二套试题1、以下关于程序设计语言的描述&#xff0c;错误的选项是&#xff1a;A.Python语言是一种脚本编程语言B.汇编语言是直接操作计算机硬件的编程语言C.程序设计语言经历了机器语言、汇编语言、脚本语言三个阶段D.编译和解释的区别是一次性翻译程序还是每次执行时都要翻…

LCD液晶段码屏显示驱动IC -VK2C23高抗干扰/抗噪,适用于瓦斯表/燃气表/煤气表

产品型号&#xff1a;VK2C23A/B产品品牌&#xff1a;永嘉微电/VINKA封装形式&#xff1a;LQFP64/48可定制&#xff1a;DICE(COB邦定片)&#xff1b;COG(邦定玻璃用)产品年份&#xff1a;新年份原厂 工程服务&#xff0c;技术支持&#xff01;VK2C23A/B概述&#xff1a;VK2C23A/…

微信小程序this指向问题

前言 最近在开发微信小程序时不时会遇到一个很奇怪的问题&#xff0c;有些情况下用 this.setData 可以改变视图显示&#xff0c;有些情况下使用 this.setData 无效&#xff0c;这又是为什么呢&#xff1f; 问题描述 在解释这个问题前&#xff0c;我们先来看两段代码&#xff1…

强烈推荐YouTube精选wxWidgets视频教程汇总

wxWidgets介绍 wxWidgets介绍 —— 一文全面了解wxWidgets_boomworks的博客-CSDN博客wxWidgets由爱丁堡大学的Julian Smart于1992年创立。最初是一个用于创建在Unix和Windows上可移植的应用程序的项目&#xff0c;后来它已成长为支持MacOS&#xff0c;GTK以及许多其他工具包和…

【Linux】-- 权限和Shell运行原理

目录 Shell的运行原理 用户切换 su - / su sudo 权限 chmod chown chgrp 八进制方法修改文件属性 目录权限 粘滞位 umask 自定义默认权限 Shell的运行原理 广义上&#xff0c;Linux发行版 Linux内核 外壳程序 Linux 从广义上来理解它是一个操作系统 而从狭义上…

NTLM Relay利用

简介 NTLM Relay也被就是Net-NTLM Relay攻击&#xff0c;当获得Net-NLTM Hash之后可以进行攻击重放, 进行中间人攻击,攻击者作为中间人在客户端与服务端之间转发NTLM认证数据包,从而模拟客户端 身份访问服务端的资源,本篇文章主要是介绍NTLM Relay常见的利用手法以及漏洞,Rela…

蓝桥杯真题31日冲刺 |第一天

蓝桥杯真题31日冲刺 |第一天 一&#xff1a;完全平方数 题目&#xff1a;[链接](完全平方数 - 蓝桥云课 (lanqiao.cn)) 思路&#xff1a; 将 每个 完全平方数都 消掉&#xff0c;剩下的就是 不能构成平方的数 以12 为例&#xff1a; 所以 12 只要再 乘个三 即可满足 代…

leetcode-每日一题-1653(中等,字符串判断)

这道题想清楚原理的话解决起来还是比较简单的&#xff0c;就是从第一个字母开始向两边排除字母给你一个字符串 s &#xff0c;它仅包含字符 a 和 b​​​​ 。你可以删除 s 中任意数目的字符&#xff0c;使得 s 平衡 。当不存在下标对 (i,j) 满足 i < j &#xff0c;且 s[i]…

当ChatGPT遇见stable-diffusion,你不敢相信的创意艺术之旅!

前言 欢迎来到一场创意的旅程&#xff0c;这里将聚焦于 ChatGPT 和 stable-diffusion 这两个令人激动的技术。在这篇文章中&#xff0c;我们将会探索这两种技术如何结合使用&#xff0c;为艺术创作带来全新的可能性。我们将探讨如何利用 ChatGPT 生成富有想象力的创意&#xf…

Java异常详解

文章目录1. 异常1.1 异常概述1.2 异常机制概述1.3 程序错误一般分为三种1.4 异常继承结构1.5 编译时异常和运行时异常别称1.6 编译时异常和运行时异常的区别1.7 Throwable中java的异常一般分为受查异常和非受查异常1.8 异常处理方式1.9 Java常见异常1.10 throw和throws的区别1.…