性能测试(一)—— 概述、策略、指标、流程

news2024/11/24 17:04:03

目录

一、性能测试概述

1、为什么要进行性能测试?

2、性能测试的概念

2.1 什么是性能?

2.2 什么是性能测试?

2.3 性能测试目的

3、性能测试与功能测试

3.1 焦点不一样

3.2 关系

二、性能测试策略

1、性能测试策略

1.1 基准测试

1.2 负载测试

1.3 稳定性测试

1.4 其他测试策略

三、性能测试指标

1、性能测试指标介绍

1.1 什么是指标

1.2 性能指标

2、常用性能指标

2.1 响应时间

2.2 并发数

2.3 吞吐量

2.4 点击数

2.5 错误率

2.6 资源利用率

四、性能测试流程

1、性能测试流程

1.1 性能需求分析

1.2 性能测试计划及方案

1.3 性能测试用例

1.4 测试脚本编写/录制

1.5 建立测试环境

1.6 执行测试脚本

1.7 性能测试监控

1.8 性能分析和调优

1.9 性能测试报告总结


一、性能测试概述

1、为什么要进行性能测试?

  • 在真实项目商用时,需要大量的用户进行使用,因此需要模拟大量用户的使用场景
  • 可以提升薪资

2、性能测试的概念

2.1 什么是性能?

性能: 就是软件质量属性中的“效率”特性

效率特性:

  • 时间特性: 指系统处理用户请求的响应时间
  • 资源特性: 指系统在运行过程中, 系统资源的消耗情况
    • CPU
    • 内存
    • 磁盘IO(磁盘的写入Input和读取Output, 简称IO)

2.2 什么是性能测试?

概念: 使用自动化工具, 模拟不同的场景, 对软件各项性能指标进行测试和评估的过程就是性能测试。


1. 后台处理程序的性能(代码性能)
2. 中间件、 数据库、 架构设计等是否存在瓶颈
3. 服务器资源消耗(CPU、 内存、 磁盘、 网络)


中间件: 是提供系统软件和应用软件之间连接的软件。 如: Tomcat、 Apache...

2.3 性能测试目的

  1. 评估当前系统能力
    1. - 例如: 验收第三方提供的软件
    2. - 例如: 获取关键的性能指标, 与其他类似产品进行比较
  2. 寻找性能瓶颈, 优化性能
  3. 评估软件是否能够满足未来的需要

3、性能测试与功能测试

3.1 焦点不一样

  • 功能测试: 验证软件系统操作功能是否符合产品功能需求规格, 主要焦点在功能(正向、 逆向) ;
  • 性能测试: 验证软件系统是否满足业务需求场景, 主要焦点是业务场景的满足(时间、 资源);

3.2 关系

  • 功能测试和性能测试是相辅相成的, 对于一款优秀的软件产品来讲, 它们是不可减少的2个重要测试环节;
  • 注意: 一般新项目中, 先功能测试通过后, 再进行性能测试。 

二、性能测试策略

1、性能测试策略

1.1 基准测试

基准测试:

  • 狭义上讲: 也是单用户测试, 测试环境确定以后, 对业务模型中的重要业务做单独的测试, 获取单用户运行时的各项性能指标。 (进行基础的数据采集)
  • 广义上讲: 是一种测量和评估软件性能指标的活动。 你可以在某个时刻通过基准测试建立一个已知的性能水平(称为基准线) , 当系统的软硬件环境发生变化之后再进行一次基准测试以确定那些变化对性能的影响。

基准测试数据的用途:
1. 为多用户并发测试和综合场景测试等性能分析提供参考依据
2. 识别系统或环境的配置变更对性能响应带来的影响
3. 为系统优化前后的性能提升/下降提供参考指标   

1.2 负载测试

说明: 通过逐步增加系统负载, 测试系统性能的变化, 并最终确定在满足系统的性能指标情况下, 系统所能够承受的最大负载量的测试。


负载: 指向服务器发送的请求数量, 请求越多, 负载越高

注意: 负载测试关注的重点是逐步增加压力

1.3 稳定性测试

说明: 稳定性测试是指, 在服务器稳定运行(用户正常的业务负载下) 的情况下进行长时间测试, 并最终保证服务器能满足线上业务需求。 时长一般为1天、 一周等。

1.4 其他测试策略

性能测试中, 测试策略其实有很多种, 但是掌握基础的用法后, 其他不同名称的测试策略只是基础用法的一个变形用法。

  • 并发测试: 并发测试是指在极短的时间内, 发送多个请求, 来验证服务器对并发的处理能力。 如: 抢红包、 抢购、 秒杀活动等。
  • 压力测试: 压力测试是在强负载(大数据量、 大量并发用户等) 下的测试, 查看应用系统在峰值使用情况下操作行为, 从而有效地发现系统的某项功能隐患、 系统是否具有良好的容错能力和可恢复能力。 压力测试分为高负载下的长时间(如24小时以上) 的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试。
  • 容量测试: 关注软件的极限压力下的各个极限参数值, 例如: 最大TPS, 最大连接数, 最大并发数, 最多数据条数等。

三、性能测试指标

1、性能测试指标介绍

1.1 什么是指标

说明: 一些经过运算得出的结果, 来衡量某种操作性能统称; 比如: 错误率 0.5% 

1.2 性能指标

1. 响应时间
2. 并发数
3. 吞吐量
4. 点击数
5. 错误率
6. 资源利用率
7. PV和UV 

2、常用性能指标

2.1 响应时间

说明: 响应时间指用户从客户端发起一个请求开始, 到客户端接收到从服务器端返回的结果, 整个过程所耗费的时间。
组成: 响应时间 = 网络时间 + 应用程序处理时间

2.2 并发数

说明: 并发测试的用户数
扩展:

  • 系统用户数: 系统注册的总用户数据
  • 在线用户数: 某段时间内访问系统的用户数, 这些用户并不一定同时向系统提交请求
  • 并发用户数: 某一物理时刻同时向系统提交请求的用户数 

2.3 吞吐量

说明: 吞吐量(Throughput) 指的是单位时间内处理的客户端请求数量, 直接体现软件系统的性能承载能力
注意:
        1. 从业务角度来看, 吞吐量也可以用“业务数/小时”、 “业务数/天”、 “访问人数/天”、 “页面访问量/天”来衡量
        2. 从网络角度来看, 还可以用“字节数/小时”、 “字节数/天”等来衡量网络的流量
        3. 从技术指标来看, 可以用每秒事务数(TPS) 和每秒查询数(QPS) 来衡量服务器具体性能处理能力

TPS
说明: Transactions Per Second, 每秒事务数 (单位时间内系统处理的客户端请求的事务次数)
计算: TPS = 并发数/平均响应时间
事务: 就是业务请求, 对应一个或者多个操作。 如支付请求, 包括服务器查询用户余额, 支付安全校验等多个操作。 一个业务请
求发送给服务器后, 最终会定位到服务器对应的业务请求的代码, 既有可能是一段代码也有可能是多段代码。

QPS
说明: QPS(Query Per Second)每秒查询数
应用: 控制服务器每秒处理指定请求数(如: 控制服务器达到每秒60QPS, 服务器的性能各项性能指标是否正常) 。 (衡量web服务器处理能力一个重要指标)
 

2.4 点击数

说明: 点击数是衡量Web服务器处理能力的一个重要指标。
提示:
        1. 点击数不是通常一般人认为的访问一个页面就是1 次点击数, 点击数是该页面包含的元素(图片、 链接、 框架等) 向Web服
务器发出的请求数量。
        2. 通常我们也用每秒点击次数(Hits per Second) 指标来衡量Web服务器的处理能力。
注意: 只有web项目才有此指标。

2.5 错误率

说明: 错误率指系统在负载情况下, 失败业务的概率。 错误率=(失败业务数/业务总数)*100%。
提示:
        1. 不同系统对错误率要求不同, 但一般不超过千分之五;
        2. 稳定性较好的系统, 其错误率应该由超时引起, 即为超时率。

2.6 资源利用率

说明: 是指系统各种资源的使用情况, 一般用“资源的使用量/总的资源可用量×100%”形成资源利用率的数据。
提示: 通常, 没有特殊需求的话
        1). 建议CPU不高于80%(±5)
        2). 内存不高于80%
        3). 磁盘不高于90%
        4). 网络不高于80%

四、性能测试流程

1、性能测试流程

1. 性能测试需求分析
2. 性能测试计划及方案
3. 性能测试用例
4. 测试脚本编写/录制
5. 建立测试环境
6. 执行测试脚本
7. 性能测试监控
8. 性能分析和调优
9. 性能测试报告总结


提示: 使用不同的性能测试工具时, 主要流程是不变的。 

1.1 性能需求分析

说明: 性能需求分析是整个性能测试工作开展的基础, 性能需求分析做的好不好直接影响到性能测试的结果。


性能需求分析的目标:
1. 熟悉被测系统

  • 熟悉被测系统的业务功能
  • 熟悉被测系统的技术架构

2. 明确性能测试内容

  • 从业务角度明确测试内容
    • 确定关键业务。 即: 用户使用频率较高的业务功能
  • 从技术角度明确测试内容
    • 如: 通常逻辑复杂度较高的业务也是CPU密集运算较大的地方, 考量服务器CPU在预定性能指标下是否达标
    • 如: 通常数据量较大的业务很占用系统内存, 考量服务器内存在预定性能指标下是否达标

3. 明确性能测试策略

  • 负载测试
  • 稳定性测试
  • 并发测试

4. 明确性能测试的指标

  • 无明确需求指标
    • 通过查找相关资料, 和类似的系统对比, 以及对未来流量的预估, 确定性能测试需求的指标
  • 有明确需求指标
    • 例如, 类似如下指标
      • 下订单业务并发20个用户
      • 平均响应时间要小于等于3s
      • 事务成功率为100%
      • CPU使用率小于等于85%
    • 只需要根据执行分析结果与预期指标做对比, 如果有不满足的, 就需要分析问题所在

1.2 性能测试计划及方案

说明: 性能测试实施第一份文档, 也是最重要的一份文档。
主要内容:
        1. 项目背景
        2. 测试目的
        3. 测试范围
        4. 测试策略
        5. 风险控制
        6. 交付清单
        7. 进度与分工 

1.3 性能测试用例


 

1.4 测试脚本编写/录制

说明: 性能测试用例编写完成以后, 接下来就需要结合用例的需要, 进行测试脚本的编写工作。
提示: 录制或编写, 根据不同的工具要注意代码冗余。 

1.5 建立测试环境

说明: 在进行性能则试之前, 需要先完成性能测试环境的搭建工作, 测试环境一般包括硬件环境、 软件环境及网络环境
提示: 一般情况下可以要求运维和开发工程师协助完成 

1.6 执行测试脚本

说明: 先保证脚本调试通过之后, 才能进入正式压测阶段
执行测试脚本时, 要先进行性能运行场景的设置, 再运行脚本 

1.7 性能测试监控

性能监控就是监控服务器的各项性能指标。 例如: 监控CPU、 内存、 网络、 TPS、 磁盘IO等 

1.8 性能分析和调优

说明: 性能测试分析人员经过对结果的分析以后, 有可能提出系统存在性能瓶颈。
提示:
        1. 调优人员(开发人员、 数据库管理员、 系统管理员、 网络管理员、 性能测试分析人员)相关人员对系统进行调整;

        2. 验证-性能测试人员继续进行第二轮、 第三轮……的测试, 与以前的测试结果进行对比, 从而确定经过调整以后系统的性能是否有提升。

注意:
系统调优由易到难的先后顺序如下:
        1. 硬件问题
        2. 网络问题
        3. 应用服务器、 数据库等配置问题
        4. 源代码、 数据库脚本问题
        5. 系统构架问题 

1.9 性能测试报告总结

性能测试总结要包含以下内容:

1. 性能测试需求覆盖情况, 测试过程回顾, 及测试中出现的问题(如何去分析、 调优、 解决的) ---基本要求
2. 性能测试过程中遇到各类风险是如何控制的; 目前是否还有其他的性能风险存在
3. 经过该项目性能测试后, 有那些经验和教训等内容 

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

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

相关文章

PageObject(PO)设计模式在 UI 自动化中的实践总结(以 QQ 邮箱登陆为例)

1080608 28.8 KB PO的思想最早是2013年由IT大佬Martin Flower提出的: martinfowler.com bliki: PageObject A page object wraps an HTML page, or fragment, with an application-specific API, allowing you to manipulate page elements for testing without d…

MVC操作方法如何绑定Stream类型的参数

1、我需要读取HTTP消息的整个 body 来填充 MVC 方法参数; 2、HTTP消息的 body 不是 form-data,而是完全的二进制内容。 最简单的方法就是不使用模型绑定,即在MVC方法中直接访问 HttpContext.Request.Body。 var request HttpContext.Requ…

[附源码]计算机毕业设计Python的物品交换平台(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

使用设备树给DM9000网卡_触摸屏指定中断

目录 1 在设备树中描述网卡中断 2 dm9dev9000c.c 3 在设备树中描述触摸屏中断 1 在设备树中描述网卡中断 srom-cs420000000 {compatible "simple-bus";#address-cells <1>;#size-cells <1>;reg <0x20000000 0x8000000>;ranges;ethernet20000…

ESP 常用的低功耗配置选项解析

此篇博客介绍 ESP 常用的低功耗配置选项。 1.常用功耗优化配置选项 1.1.动态调频 CPU 工作的频率越高&#xff0c;功耗消耗也越大。通过 DFS&#xff08;dynamic frequency scaling&#xff0c;动态调频&#xff09;可以让系统自动切换工作频率&#xff0c;达到功耗和性能间…

Transformers学习笔记1. 一些基本概念和编码器、字典

Transformers学习笔记1. 一些基本概念和编码器、字典一、基本概念1. Hugging Face简介2. Transformers&#xff08;1&#xff09;简介&#xff08;1&#xff09;预定义模型&#xff08;2&#xff09;使用方法3. Datasets查看有哪些公开数据集方法1&#xff1a; 使用datasets包的…

深入分析JVM执行引擎

程序和机器沟通的桥梁 一、闲聊 相信很多朋友在出国旅游&#xff0c;或者与外国友人沟通的过程中&#xff0c;都会遇到语言不通的烦恼。这时候我们就需要掌握对应的外语或者拥有一部翻译机。而笔者只会中文&#xff0c;所以需要借助一部翻译器才能与不懂中文的外国友人交流。咱…

Android入门第51天-使用Android的SharedPreference存取信息

简介 上一篇我们介绍了在android里如何读写本地文件。我们有一种场景&#xff0c;类似网页的cookie&#xff0c;要把用户的一些储如上一次登录、使用的痕迹等信息保存下来以便于每次不需要做重复“填表单”的操作&#xff0c;当在这种场景下我们如果也使用本地文件读写的话显然…

关于Unity使用Aspose.Words创建表格单元格垂直合并不生效情况说明

文章目录&#x1f449;一、前言&#x1f449;二、问题重现1、首先看一下我用下面两段代码创建的表格&#xff1a;2、被这个问题折磨的心路历程&#x1f449;三、分析原因&#x1f449;四、解决方法&#x1f449;一、前言 最近在使用Aspose.Words.dll实现创建表格功能时&#x…

Google Earth Engine APP(GEE)——用一个选择器选择不同城市的应用

我们很多时候在进行应用制作的时候,都会用到选择器用于添加不同的城市,从而进一步选择不同的区域进行分析,本文就将准备一个包含有城市的矢量数据,按照名字进行筛选,最终展示不同城市的所在范围,从而实现简单的select选择器的调用。本文最主要的就是这个回调函数。 具体…

C语言基础—指针(地址引用、指针数组、二次指针)

本章主要讲解指针的基本定义和指针的传递、偏移。后面继续讲解指针数组和多维指针、二级指针等 知识点&#xff1a; 指针的定义和指针分类各类指针的字节长度取决于系统位数指针的传递&#xff08;值传递和引用(地址传递)&#xff09;指针的偏移&#xff08;自增自减号&#x…

动态优化解决方案空间中的最小支持(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 相对于求解函数极值这类静态问题&#xff0c;许多存在于真实世界的优化问题都是在动态变化的&#xff0c;这一类问题被称为动态…

201732-35-6,H2N-AFP-pNA

AFP-pNA&#xff0c;来自牙周病原体牙龈卟啉单胞菌和黑普氏菌的脯氨酸三肽基氨基肽酶的底物。 编号: 189876中文名称: 三肽Xaa-Xaa-Pro tripeptidylpeptidase substrateCAS号: 201732-35-6单字母: H2N-AFP-pNA三字母: H2N-Ala-Phe-Pro-pNA氨基酸个数: 3分子式: C23H27N5O5平均分…

React 入门:脚手架代理配置

文章目录React AjaxAxios在 React 中使用 Axios脚手架代理配置React Ajax 理解 React 本身只关注于界面&#xff0c;并不包含发送 ajax 请求的代码。前端应用需要通过 ajax 请求与后台进行交互&#xff08;json 数据&#xff09;。React 应用中需要继承第三方 ajax 库&#xff…

C++ · 入门 | 准备知识

啊我摔倒了..有没有人扶我起来学习.... &#x1f471;个人主页&#xff1a;《CGod的个人主页》\color{Darkorange}{《CGod的个人主页》}《CGod的个人主页》交个朋友叭~ &#x1f492;个人社区&#xff1a;《编程成神技术交流社区》\color{Darkorange}{《编程成神技术交流社区》…

uniapp实现楼层导航 ,滚动定位,锚点导航

uniapp实现楼层导航的核心技术要点&#xff1a; 1、scroll-view作为视图容器&#xff0c; 2、用其属性scroll-into-view,用于完成点击联动 3、uni.createSelectorQuery().selectAll();获取右侧所有元素信息&#xff0c;获取top值存入数组&#xff0c;用于计算滑动时需要的联动…

Vue-cli工程中每个文件夹和文件的用处

dist 文件夹&#xff1a;默认 npm run build 命令打包生成的静态资源文件&#xff0c;用于生产部署 node_modules&#xff1a;存放npm命令下载的开发环境和生产环境的依赖包 public&#xff1a;有的叫assets&#xff1a;存放项目中需要用到的资源文件&#xff0c;css、js、im…

【Linux】软件包管理器yum

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《学会Linux》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;Linux软件…

未来已来,光伏产业将走向何方?十大趋势待揭晓!

碳中和大背景下&#xff0c;光伏已经成为发展最迅猛的热门产业之一。在能源产业变革中&#xff0c;光伏将成为未来最大的绿电来源。 据预测&#xff0c;到2030年&#xff0c;全球可再生能源的占比将超过50%。届时&#xff0c;光伏发电和风电将成为全球可再生能源的主力军。根据…

Android入门第50天-读写本地文件

简介 为了这个系列&#xff0c;我的代码已经准备到了第150天了。接下来的内容会越来越精彩&#xff0c;我们也越来越开始进入Android的一些高级功能上的编程了。今天我们就要讲Android中对本地文件进行读写的全过程。 课程目标 输入文件名、输入文件内容后按【保存到SD卡】&a…