性能测试小白‘壁咚’~~~

news2024/11/25 8:12:03

很多时候,我们都知道软件有黑白盒测试,但往往还遗漏掉了一个性能测试。

性能测试种类:

  1. 负载测试
  2. 压力测试
  3. 并发测试
  4. 配置测试
  5. 可靠性测试
  6. 容量测试

1、负载测试

(1)定义

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

(2)举个例子

负载测试类似于举重运动,通过不断给运动员增加重量,确定运动员身体状况保持正常的情况下所能举起的最大重量。

对于负载测试来说,前提是满足性能指标要求,例如一个软件系统的响应时间要求不超过 2s ,则在这个前提下,不断增加用户访问量,当访问量超过1万人时,系统的响应时间就会变慢,响应时间会超过 2s 。因此,可以确定系统响应时间不超过 2s 的前提下最大负载量是1万人。

2、压力测试

(1)定义

压力测试也叫强度测试,它是指逐步给系统增加压力,测试系统的性能变化,使系统某些资源达到饱和或系统崩溃的边缘,从而确定系统所能承受的最大压力。

(2)压力测试与负载测试的区别

负载测试是在保持性能指标要求的前提下系统能够承受的最大负载,而压力测试则是使系统性能达到极限的状态。

压力测试可以揭露那些只有在高负载条件下才会出现的 Bug ,如同步问题、内存泄露等。

(3)峰值测试

性能测试中还有一种压力测试叫做峰值测试,它是指瞬间(不是逐步加压)将系统压力加载到最大,使测试软件系统在极限压力下的运行情况。

3、并发测试

(1)定义

并发测试是指通过模拟用户并发访问,测试多用户并发访问同一个应用、同一个模块或者数据记录时是否存在死锁或其他性能问题。

(2)举个例子

并发测试一般没有标准,只是测试并发时会不会出现意外情况,几乎所有的性能测试都会涉及到一些并发测试,例如多个用户同时访问某一条件数据,多个用户同时在更新数据,那么数据库可能就会出现访问错误、写入错误等异常情况。

4、配置测试

(1)定义

配置测试是指调整软件系统的软硬件环境,测试各种环境对系统性能的影响,从而找到系统各项资源的最优分配原则。

(2)举个例子

配置测试不改变代码,只改变软硬件配置,例如安装版本更高的数据库、配置性能更好的CPU、内存等,通过更改外部配置来提高软件的性能。

5、可靠性测试

(1)定义

可靠性测试是指给系统加载一定的业务压力,使其持续运行一段时间(如 7*24h ),测试系统在这种条件下是否能够稳定运行。

6、容量测试

(1)定义

容量测试是指在一定的软硬件及网络环境下,测试系统所能支持的最大用户数、最大存储量等。

(2)举个例子

容量测试通常与数据库、系统资源(如 CPU 、内存、磁盘等)有关,用于规划将来需求增长(如用户增长、业务量增加等)时,对数据库和系统资源的优化。

性能测试流程

 

1、性能测试流程分析

(1)分析性能测试需求

在性能测试需求分析阶段,测试人员需要收集有关项目的各种资料,并与开发人员进行沟通,对整个项目有一定的了解,针对需要进行性能测试的部分进行分析,确定测试目标。

例如客户要求软件产品的查询功能响应时间不超过 2s ,则需要明确多少用户量情况下,响应时间不超过 2s 。对于刚上线的产品,用户量不多,但几年之后可能用户量会巨增,那么在性能测试时是否要测试产品的高并发访问,以及高并发访问下的响应时间。

(2)制定性能测试计划

确定测试环境: 包括物理环境、生产环境、测试团队可利用的工具和资源等。

确定性能验收标准: 确定响应时间、吞吐量和系统资源(CPU、内存等)利用总目标和限制。

设计测试场景: 对产品业务、用户使用场景进行分析,设计符合用户使用习惯的场景,整理出一个业务场景表,为编写测试脚本提供依据。

准备测试数据: 性能测试是模拟现实的使用场景,例如模拟用户高并发,则需要准备用户数量、工作时间、测试时长等数据。

(3)设计测试用例

性能测试用例是根据测试场景为测试准备数据,例如模拟用户高并发,可以分别设计 100个 用户并发数量、 1000个 用户并发数量等,此外还要考虑用户活跃时间、访问频率、场景交互等各种情况。测试人员可以根据测试计划中的业务场景表设计出足够的测试用例以达到最大的测试覆盖。

(4)编写性能测试脚本

正确选择协议。

根据工具的支持情况和测试人员熟悉程度选取脚本语言。

编写测试脚本时,要遵循代码编写规范,保证代码的质量。

做好脚本的维护管理工作。

(5)测试执行及监控

1)了解几个指标

性能指标: 本次性能测试要测试的性能指标的变化。

资源占用与释放情况: CPU 、内存、磁盘、网络等使用情况。性能测试停止后,各项资源是否能正常释放以供后续业务使用。

警告信息: 一般软件系统在出现问题时会发出警告信息,当有警告信息时,测试人员要及时查看。

日志检查: 经常分析系统日志,包括操作系统、数据库等日志。

2)结果影响

性能测试监控对性能测试结果分析、对软件的缺陷分析都起着非常重要的作用。

在测试过程中,如果遇到与预期结果不符合的情况,测试人员要调整系统配置或修改程序代码来定位问题。

由于性能测试执行过程需要监控的数据复杂多变,它要求测试人员对监控的数据指标有非常清楚的认识,同时还要求测试人员对性能测试工具非常熟悉。作为性能测试人员,应该不断努力,深入学习,不断积累知识经验才能做的更好。

(6)运行结果分析

性能测试完成之后,测试人员需要收集整理测试数据并对数据进行分析,将测试数据与客户要求的性能指标进行对比,若不满足客户的性能要求,需要进行性能调优然后重新测试,直到产品性能满足客户需求。

(7)性能测试报告

性能测试完成之后需要编写性能测试报告,阐述性能测试的目标、性能测试环境、性能测试用例与脚本使用情况、性能测试结果及性能测试过程中遇到的问题和解决办法等。软件产品不能只进行一次性能测试,因此性能测试报告需要备案保存,作为下次性能测试的参考。

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

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

相关文章

NSS [SWPUCTF 2021 新生赛]easy_md5

NSS [SWPUCTF 2021 新生赛]easy_md5 先看题目,md5弱比较,可以0e,数组,或者强碰撞。 payload: GET: ?name[]1 POST:password[]7

【面试系列】八股文之线程篇202306

union all和union的区别 union all:包含重复行 union:不包含重复行 线程池的shutdown()与shutdownNow()方法的区别 shutdown(),调用shutdown方法,线程池会拒绝接收新的任务,处理中的任务和阻塞队列中的任务会继续处…

redis基础及哨兵集群部署、故障切换

一、概述 Redis是一个开源的,使用C语言编写,支持网络,可基于内存工作亦可持久化(AOF、RDB)的日志型,key-values(键值对)数据库,一个速度极快的非关系型数据库&#x…

R语言APSIM模型及批量模拟

随着数字农业和智慧农业的发展,基于过程的农业生产系统模型在模拟作物对气候变化的响应与适应、农田管理优化、作物品种和株型筛选、农田固碳和温室气体排放等领域扮演着越来越重要的作用。 APSIM (Agricultural Production Systems sIMulator)模型是世界知名的作物…

Python 数据类型转换

文章目录 每日一句正能量前言隐式类型转换实例实例 显式类型转换实例实例实例实例 每日一句正能量 在人生的道路上,即使一切都失去了,只要一息尚存,你就没有丝毫理由绝望。因为失去的一切,又可能在新的层次上复得。 前言 有时候&…

HOT41-二叉树的层序遍历

leetcode原题链接:二叉树的层序遍历 题目描述 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出&…

redis如何实现持久化

RDB快照 RDB是一种快照存储持久化方式,具体就是将Redis某一时刻的内存数据保存到硬盘的文件当中,默认保存的文件名为dump.rdb,而在Redis服务器启动时,会重新加载dump.rdb文件的数据到内存当中恢复数据。 开启RDB持久化方式 开启…

Vue生态及实践 - Vue Router(2)

目录 导航守卫 解析流程 代码演示 router.js pages/Foo.vue router/router.js router/history/base.js router/util/async.js router/components/RouterView.vue 接上一篇文章~,代码部分会有部分重叠,想看完整版的代码,看这篇文章的…

END-TO-END OPTIMIZED IMAGE COMPRESSION论文阅读

END-TO-END OPTIMIZED IMAGE COMPRESSION 文章目录 END-TO-END OPTIMIZED IMAGE COMPRESSION单词重要不重要 摘要: 单词 重要 image compression 图像压缩 quantizer 量化器 rate–distortion performance率失真性能 不重要 a variant of 什么什么的一个变体 …

大数据之flink容错机制

大数据之flink容错机制https://blog.51cto.com/dashujutongmeng/5241407

Spring Batch 批处理框架

一、SpringBatch 介绍 Spring Batch 是一个轻量级、全面的批处理框架,旨在支持开发对企业系统的日常操作至关重要的健壮的批处理应用程序。Spring Batch 建立在人们期望的 Spring Framework 特性(生产力、基于 POJO 的开发方法和一般易用性)…

从零开始 Spring Boot 60:一个实体映射到多个表

从零开始 Spring Boot 60:一个实体映射到多个表 图源:简书 (jianshu.com) 在之前的文章中我们讨论了 JPA 中的一对一关系,实际上存在一种特殊的一对一关系,即将一个实体映射到多张表,本文会讨论这种关系。 我之前提过…

elementui实现表格自定义排序

需求说明&#xff1a; 1、第一行不参与排序 2、实现带%排序 3、实现null值排序 4、实现值相等不排序 5、实现含有占位符‘–‘排序放到最后 效果图如下&#xff1a; <template> <div><template><el-table border :data"previewTableData" style…

ROS学习之从yaml文件中读取多传感器坐标系之间的静态TF关系并发布Topic

文章目录 0 引言1 工作空间创建并初始化2 创建ROS程序包3 创建yaml读取函数3.1 yaml文件3.2 读取函数 4 创建静态TF关系的发布主函数5 创建launch文件6 编辑CMakeLists.txt7 编译运行7.1 编译7.2 运行 0 引言 机器人中经常使用多种传感器来做定位和建图&#xff0c;而多个传感…

找出一个List中每个元素出现的次数

文章目录 一、需求&#xff1a;找出一个list中&#xff0c;每个元素出现的次数1. 普通实现&#xff08;hashmap&#xff09;&#xff1a;1.1 代码实现&#xff1a;1.2运行结果&#xff1a;1.3 案例分析&#xff1a; 2. 普通实现&#xff08;HashSet#Collections.frequency&…

Flask学习笔记(2)应用部署

本文将介绍如何部署Flask应用。   部署Flask应用&#xff0c;主要是要运用多线程与多进程&#xff0c;提高接口的并发能力。我们以下面的Python代码&#xff08;server.py&#xff09;为例进行演示&#xff1a; # -*- coding: utf-8 -*- import time import datetime from f…

04-HAL库UART配置及协议解析设计

本节内容介绍 1、HAL库UART 在cubemx中的配置及注意事项;2、HAL库UART详解与结构介绍;3、实现简单地UART数据收发&#xff1b; 源码地址&#xff1a; HAL库UART在cubemx中的配置 串口原理图 串口1咱们已经用作rtt的print使用了&#xff0c;所以使用另外一组串口来进行串口…

android studio 4.0以上隐藏调用方法参数名提示

引入&#xff1a; android studio在编辑代码的时候&#xff0c;调用函数时会接口处会自动提示参数名&#xff0c;方便代码书写时对传参命名的规范性。 可以如果代码是魂效过的&#xff0c;那会适得其反&#xff0c;l,l1,l2,i,i1,i2这样的参数名提醒反而会混淆视听。 这时候可…

图书馆机器人的应用,科技助力新趋势

随着科技的发展和智能化时代的到来&#xff0c;图书馆越来越多地引入了机器人作为服务和管理的工具。图书馆机器人可以轻松地完成多种任务&#xff0c;包括为用户提供导航服务、管理借还书、整理图书、清扫图书馆等。 首先&#xff0c;图书馆机器人可以为用户提供导航服务。在庞…

讲讲仿真软件的文件导入

仿真软件识别导入的设计文档是有区别的&#xff0c;实际的使用经历&#xff0c;ADS只是用于搭建Channel通道仿真&#xff0c;那本文以Cadence的Sigrity和Ansys的SIwave为例&#xff0c;讲讲仿真软件的文件导入。 先以Sigrity为例&#xff0c;打开软件&#xff0c;File 菜单Open…