当前位置: 首页 > news >正文

【软件测试】性能测试相关指标

性能测试

了解性能测试相关指标

1.什么是做性能测试

1.1 生活中遇到的软件性能问题

软件用着用着就不能用了,一看热搜,发现该软件的服务器崩崩溃了。

1.2 性能测试定义

测试人员借助性能测试工具,模拟系统在不同场景下,对应的性能指标是否满足需求。

1.3 性能测试和功能测试的区别

  • 功能测试依靠人工去执行。性能测试依靠工具完成。
  • 功能测试:验证软件是否实现了需求。不管在什么场景下,只要能够正常运行即可。
  • 性能测试:在软件能够正常运行的前提下。软件在极端的情况下,是不是能正常运行。

性能测试是在功能测试之后执行的。

1.4 什么样的表现属于软件性能好的表现

相应时间短,资源利用率高,日活跃用户数多,吞吐量大。

  • 一个软件登录时间3ms比登录时间3s的性能要好
  • 软件日活跃用户数多的,比日活跃用户数少要性能好
  • 软件由于用户访问次数多,软件采用了较少并发数,软件算法优化,服务器升级的软件性能比用户访问人数一多就崩溃的软件好。

image-20231128172205669

DAU:日活跃用户数。

1.5 影响一个软件性能因素

  • 硬件:服务器CPU利用率,内存,磁盘操作频率,CPU核心数,网络带宽。
  • 软件:实现软件的算法,编写软件的编程语言
  • 用户:用户数量,用户使用时长,用户的使用频率

为什么要做性能测试?

  • 获取系统性能的指标,作为性能指标的基准(基准性能测试)
  • 验证系统的性能指标是否达到要求(性能需求)
    • 应用程序是否能够满足系统要求的各种性能指标
    • 应用程序是否能处理预期的用户负载并有盈余能力
    • 应用程序是否能处理业务所需要的事务数量
    • 在预期和非预期的用户负载下,应用程序是否稳定
    • 是否能确保用户在真正使用软件时获得舒服的体验
  • 发现系统的性能瓶颈,内存泄漏等问题。
  • 系统正常工作的情况下的最大容量。
  • 帮助系统运维部门能更好的规划硬件配置

2.性能测试常见术语以及衡量指标

2.1 并发:

  • 1个用户访问该网站(×)
  • 100万个用户每隔10s时间访问该网站(×)
  • 100万个用户同时访问该网站(√)

并发要满足大量用户同时访问

业务层面的并发用户数:指的是同时向服务器发送请求的用户数量。 后端服务器层面的并发用户数:指的是同时向服务器发送请求的请求数量

后端服务器层面的并发用户数 >= 业务层面的并发用户数

2.2 用户数:

  • 系统用户数:系统注册用户数(数据库对其进行维护,不一定访问系统,不访问的不会对系统产生压力)
  • 在线用户数:成功登录系统的用户数(相当于qq登录上账号了 ,停留在登录成功页面。并不会对系统产生压力)
  • 并发用户数:大量用户同时访问系统,此时访问的用户数就是并发用户数。

数量 系统用户数 > 在线用户数 > 并发用户数

2.3响应时间

image-20230918081412023

用户响应时间:发出请求开始,到客户端接收完所有的字节数据所消耗的时间 N1+A1+N2+A2+N3+A3+N4

请求响应时间:服务器收到请求发出相应这段时间是请求响应时间。A1+N2+A2+N3+A3

影响一个软件的响应时间因素有那些?

用户设备,网络带宽,服务器的配置(CPU,内存),软件算法逻辑,数据库性能

2.4 事务

数据库的事务就是把多个操作打包到一起,构成原子操作。

性能测试中,事务指的是指一组密切相关的子操作的组合 ,比如一次登录、一次筛选条件查询,一次支付等;

  • 事务响应时间:用户完成某个具体事务(比如支付操作)所需要的时间。
  • 358原则:对于一般系统而言,如果用户点击按钮后,系统可以在3秒钟内得到应答,则用户比较满意;如果系统在5秒内得到应答,则用户能够忍受;如果系统在8秒后得到应答,则用户不能忍受
  • 每秒事务通过数: 处理的事务数量/事务花费的时间, 每秒事务通过的数量越多说明软件性能越好的。

TPS 是指每秒系统能够处理的事务数。它是衡量系统处理能力的重要指标。这个指标衡量了系统在同一时间内处理业务的最大能力。 当压力加大时,TPS曲线如果变化缓慢或者有平坦的趋势,很有可能是服务器开始出现瓶颈了。如果环境没有发生大的变化,对于同一系统会存在一个最大处理事务能力,它并不随着并发用户的增减而改变

2.5 点击率

点击量:用户点击发送的http请求数,并不能衡量软件性能

点击率:点击量/时间

每秒点击数代表用户每秒向Web 服务器提交的HTTP请求数。点击率越大,服务器压力越大。这里的点击并不是鼠标的一次点击,一次点击可能有多次HTTP请求。

2.6 吞吐率

吞吐量:用户一次请求和服务器之间的数据交互量。并不能衡量软件性能

吞吐率:吞吐量/时间。吞吐率越高软件性能越好

2.7 思考时间

用户在对软件进行操作的时候,每一个操作中间的时间间隔。

2.8 资源利用率

不同系统资源的使用情况。包含CPU,内存,硬盘,网络等。

面试题:了解性能测试,那么你给我说一下你做性能测试的时候,你关注哪些指标?

image-20231128172317966

3.性能测试的分类

基准性能测试

定义:让系统在正常情况下运行,观察性能指标。建立一个性能基准,作为以后性能测试的参考。

应用场景:软件刚上线需要对性能进行摸底,软件进行升级后,性能测试的参考,衡量软件是变好了还是变坏了。

负载性能测试

验证软件在一定的压力情况下运行,观察性能指标是否出现拐点。

压力性能测试

系统处于临界饱和的情况下,观察系统性能指标。(往往会把系统搞崩溃)

可靠性测试

验证系统在一个持续的时间段内运行,在这个运行时间段内,观察系统各项性能指标是否正常。

持续1day -> 持续运行一周 -> 持续运行1个月 -> 一个季度 -> 一年

如果持续一天没问题就持续一周,如果持续一周没问题就持续一个月……

可靠性就是可用性,正常使用时间的占比。可靠性 = 正常运行时间/(正常运行时间+非正常运行时间)* 100*%*可用性指标一般要求达到4个或5个“9”,即99.99%或者99.999%

如果可用性达到99.99%,对于一个全年不间断(7*24的方式)运行的系统,意味着全年(252600min)不能

正常工作的时间只有52min,不到一个小时。

如果可用性达到99.999%,意味着全年不能正常工作的时间只有5min 。

可靠性测试靠人为是达不到要求的,需要借助工具比如(loadrunner)

造成可靠性降低的原因:软件硬件出现问题,网络故障出现问题,自然灾害导致服务器损坏出现问题,停电。

4.性能测试的执行流程

功能测试的执行流程:需求分析→测试计划→ 测试设计、测试开发→ 测试执行→ 测试评估(发布测试报告)→ 上线

性能测试的执行流程:需求分析→测试计划→选择一款性能测试工具→性能测试脚本编写→执行性能测试脚本→产生性能测试报告

性能测试中出现了不符合预期的情况,我们不叫做BUG,叫做性能瓶颈

在性能测试中,出现了性能瓶颈,开发修复的过程叫做优化

相关文章:

【软件测试】性能测试相关指标

性能测试 了解性能测试相关指标 1.什么是做性能测试 1.1 生活中遇到的软件性能问题 软件用着用着就不能用了,一看热搜,发现该软件的服务器崩崩溃了。 1.2 性能测试定义 测试人员借助性能测试工具,模拟系统在不同场景下,对应…...

Leetcode 2943. Maximize Area of Square Hole in Grid

Leetcode 2943. Maximize Area of Square Hole in Grid 1. 解题思路2. 代码实现 题目链接:2943. Maximize Area of Square Hole in Grid 1. 解题思路 这一题的话其实横轴和竖轴可以分开来独立考察,因为两者互不影响,我们最终的答案一定是两…...

qt 简单了解QHBoxLayout QVBoxLayout QFormLayout水平,垂直,表单布局管理器.

QHBoxLayout水平布局,QVBoxLayout垂直布局,QFormLayout表单布局管理器,是常用的布局管理器,是用代码编写应用界面必不可少的功能类. 1.tips 这里值得注意的是,2个单选按钮(QRadioButton)同时放进一个水平布局管理器(QHBoxLayout)中,相当于放进了一个分组器中,此时,2个单选按钮…...

springboot中4级配置文件优先级

springboot中4级配置文件优先级...

Python(八十九)函数的参数的内存分析

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…...

西南科技大学C++程序设计实验二(类与对象一)

C++最大的特点就是面向对象,掌握它的几种基本性质还是好理解的,可以看我C++专栏的期末速成,希望对你们学习C++有帮助。 一、实验目的 1.理解简单类的定义、说明与使用 2.理解类中不同属性数据成员的访问特点 3.理解构造函数、析构函数的作用 重点:掌握类的定义与实现,…...

代码随想录二刷 |哈希表 |四数之和

代码随想录二刷 |哈希表 |四数之和 题目描述解题思路 & 代码实现 题目描述 18.四数之和 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nu…...

KMP算法【数据结构】

KMP算法 KMP算法是一种改进的字符串匹配算法 Next[j] k :一个用来存放子串返回位置的数组,回溯的位置用字母k来表示。其实就是从匹配失败位置,找到他前面的字符串的最大前后相等子串长度。默认第一个k值为-1(Next[0] -1),第二个k值为0(Next[1] 0),我…...

测开笔记--Typescript: 文件复制到指定目录

开发背景: 自动化开发语言使用的是TypeScript;框架用的是playwright。有个测试脚本需要先将几个文件复制粘贴到新建的项目文件夹下,系统会读取该文件,然后生成页面信息。 关键字:文件复制粘贴; 新建的项目…...

数字滚动vue-count-to

数字滚动 下载插件 npm i vue-count-to 使用 start-val 起始值&#xff0c;表示从什么值开始滚 end-val 终点值&#xff0c;表示要滚到多大值 duration 滚动事件&#xff0c;表示用多长时间来滚动 <countTo :start-val"0" :end-val"228" :duration&quo…...

扩散模型实战(十一):剖析Stable Diffusion Pipeline各个组件

推荐阅读列表&#xff1a; 扩散模型实战&#xff08;一&#xff09;&#xff1a;基本原理介绍 扩散模型实战&#xff08;二&#xff09;&#xff1a;扩散模型的发展 扩散模型实战&#xff08;三&#xff09;&#xff1a;扩散模型的应用 扩散模型实战&#xff08;四&#xff…...

Mysql面试题总结

数据库三大范式是什么 第一范式&#xff1a;每个列都不可以再拆分。 第二范式&#xff1a;在第一范式的基础上&#xff0c;非主键列完全依赖于主键&#xff0c;而不能是依赖于主键的一部分。 第三范式&#xff1a;在第二范式的基础上&#xff0c;非主键列只依赖于主键&#…...

学习知识随笔(Django)

文章目录 MVC与MTV模型MVCMTV Django目录结构Django请求生命周期流程图路由控制路由是什么路由匹配反向解析路由分发 视图层视图函数语法reqeust对象属性reqeust对象方法 MVC与MTV模型 MVC Web服务器开发领域里著名的MVC模式&#xff0c;所谓MVC就是把Web应用分为模型(M&#…...

基于element自动表格

需求是根据JSON文件生成表格&#xff0c;包含配置和自动props属性以及过滤器&#xff1b; 数据示例&#xff1a; 表格设置&#xff1a; /*** 表格表头信息* chineseToPinYin: 这是封装的根据中文汉字转换为拼音的方法* prop: 表头字段名* filter: 数据过滤器* label: 表头显示…...

Python基础语法之学习数据转换

Python基础语法之学习数据转换 一、代码二、效果 一、代码 #数字转换成字符串 num_str str(11) print(type(num_str))#字符串转整数 numint("11") print(type(num),num)#浮点数转整数 float_num int(11.1) print(type(float_num),float_num)#整数转浮点数 num_flo…...

最新AI创作系统ChatGPT网站运营源码、支持GPT-4-Turbo模型,图片对话识图理解,支持DALL-E3文生图

一、AI创作系统 SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧&#xff01;本系统使用NestjsVueTypescript框架技术&#xff0c;持续集成AI能力到本系统。支持OpenAI DALL-E3文生图&#xff0c;…...

Kotlin中常见的List使用

文章目录 1.filter2.map3.count4.first,last5.any,all,none6.find&#xff0c;findLast7.indexOf()和lastIndexOf()查找元素下标8.Slice切片9.Take()和drop()获取指定长度 1.filter filter 就像其本意一样&#xff0c;可以通过 filter 对 Kotlin list 进行过滤。 fun main() …...

汽车电子 -- 车载ADAS之LCA(变道辅助系统)

相关法规文件: LCA: ISO 17387-2008 Intelligent transport systems — Lane change decision aid systems 一、变道辅助系统 LCA &#xff08;Lane Change Assist&#xff09; LCA 系统&#xff08;变道辅助系统&#xff09;监测后方相邻车道区域&#xff0c;如果有车辆在后…...

MongoDB——golang操作(链接,CURD,聚合)

MongoDB golang操作 中文文档 链接 package mainimport ("context""fmt""log""go.mongodb.org/mongo-driver/mongo""go.mongodb.org/mongo-driver/mongo/options" )func main() {// 设置客户端连接配置clientOptions : o…...

音视频项目—基于FFmpeg和SDL的音视频播放器解析(十八)

介绍 在本系列&#xff0c;我打算花大篇幅讲解我的 gitee 项目音视频播放器&#xff0c;在这个项目&#xff0c;您可以学到音视频解封装&#xff0c;解码&#xff0c;SDL渲染相关的知识。您对源代码感兴趣的话&#xff0c;请查看基于FFmpeg和SDL的音视频播放器 如果您不理解本…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...