2023从0开始学性能(3) —— 探索性能测试流程2

news2024/10/6 18:24:12

性能测试计划

性能测试的计划中应该由项目描述、项目的业务模型和性能指标(指标来源于调研需求中预期指标),性能测试环境说明(前期调研的配置信息)以及测试的场景设计,具体的我们后面再慢慢说。

性能测试场景(只做个简单介绍)

单交易基准测试

什么是基准测试?就是为了找到性能的基准,同时基准数据可以作为性能指标的参照物。举个简单的例子,一个查询接口,有一个并发用户连续执行3-5分钟(没有具体规定,3-5分钟就可以了 ),最后在通过聚合报告可以得到每秒成功了多少次和响应时间。这就是基准值。

作用:当项目迭代 或者 架构升级优化后,再去跑一次相同的基准脚本,比较执行后的基准值,可以快速判断性能是否有提升。

特点:「单用户」并发

「单交易负载测试」

单交易其实就是单个接口去做高并发测试 。例如登录功能,只调用一个登录接口。

「多交易混合负载测试(混合场景--线上真实)」

多交易 就是多个接口组成的业务场景。例如注册后登录,要调用注册、登录等多个接口。要注意必须先把单个接口测好了,确保每个单接口都没有性能问题,再根据比例测多个接口混合的负载测试。例如:同时多少人同时注册、多少人同时登录、多少人搜索..这个比例是从需求调研的时候得来的。

高可用性测试

这种测试一般用在什么场景?就是针对集群部署的项目。一个项目部署在了多台机器上,如果某一台机器挂了,其他机器会不会受影响?如果高可用性做的很差,可能就会出现一台机器挂了,其他所有的机器也都无法正常工作。如果在线上做性能测试的时候,一定要做高可用性测试。

特点:让集群中的一台机器先挂掉,测试集群是否能正常运行。挂掉的机器再启动起来,看是否能在集群中正常使用。(生产环境中测,一般线下都只会用一台服务器 )

异常场景测试

最常见的就是网络异常,一般就是弱网/网络波动下测试并发处理能力。可能遇到的问题就有弱网时客户端自动重试机制,多次发送相同的请求造成异常数据...

特点:针对一些比较敏感的功能,例如下单、支付接口

「稳定性测试」

就是长时间的压测,连续跑12小时及以上,看系统是否会出现性能问题来检测系统的稳定性。一般是用混合场景的业务脚本来做。

 

搭建测试环境

  1. 性能测试环境要独立,最好不要用功能测试的环境,容易造成脏数据影响功能测试。

  2. 服务器的系统版本要保持和线上一致

  3. 中间件、数据库等配置要一致

  4. 服务器的配置最好能和线上一致

  5. 若线上项目的各种服务是集群部署,线下各个服务部署就各用一台可以了。

测试数据构造

数据分为基础数据和参数化数据。

  • 基础数据包括应用中各种系统配置数据。

  • 参数化数据就是我们在压测时需要用到的不同的参数化数据,总不能我要压测1000个用户并发登录就用一个账户不停的并发吧,服务器不给我拉黑个屁的。

那么数据该如何构造呢?

  1. 直接调用业务接口:对于数据流复杂的数据,与其低声下气和开发问来问去,不如直接调接口方便。

  2. sql存储过程:用sql的语法来造数据,这个难度稍微大了点,毕竟还需要再学个语法,也只适合表比较少的时候用。不太推荐,除非开发肯主动配合。

  3. 脚本导入:用代码自己来实现,好处就是灵活,想怎么搞就怎么搞。

  4. 数据工厂:调用自己开发的数据工厂开放的官方api。

 

脚本编写

为了方便快捷上手,衔接了我前面的jmeter系列,后续我们还是使用jmeter来编写性能脚本。关于脚本的编写可以参考我前面的文章,这里不再赘述。

压测执行

执行压测也要分两种情况,如果性能测试环境是用单台服务器部署的,根据并发数情况决定是否只用一台压力机就可以了。

如果是「集群部署」,建议还是使用「分布式执行」吧。

压测的时候只是执行明显是不够的,更重要的是监控压测过程中服务器、jvm、数据库、中间件等,不然只看结果你能预测出来是哪里出问题啦。

压测执行完后就是收集测试结果,再进行数据分析去定位性能瓶颈。(暂时还只会说说,实际不会)

调优

这部分就先不想了,先学会监控分析定位再说吧。

 性能报告

报告这部分就根据网上的模板大概列一下吧。

  1. 性能测试概述

  2. 测试环境

  3. 测试场景设计

  4. 结果及分析

  5. 调优建议

  6. 结论


绵薄之力【资源分享】

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

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等配套学习资源免费分享~

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

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

相关文章

4123版驱动最新支持《霍格沃茨之遗》,英特尔锐炫显卡带你畅游魔法世界

2023年开年最火的3A大作,那一定是近期上架steam平台的《霍格沃茨之遗》,这款游戏在2020年9月份曝光,游戏根据《哈利波特》系列书籍内容改编,作为一款开放式的3A大作,《霍格沃兹之遗》目前在steam上的实时在线人数已经突…

客户体验:客户对企业产生的所有交互与感知!

“客户体验是一种纯主观的在用户使用产品过程中建立起来的感受。良好的用户体验有助于公司不断完善产品或服务。正是这所有用户接触的感受差异,构成了用户对一家公司独特的体验认知。”说白了,客户体验就是客户和公司接触产生的感受。客户体验主要关注客…

JS的事件循环

文章目录写在前面1.浏览器的进程模型1.1 何为进程1.2 何为线程1.3 浏览器有哪些线程和进程2.渲染主线程是如何工作的任务队列的优先级面试题如何理解JS异步JS中的计时器能做到精确计时吗?为什么?写在前面 此处的文字为自己的理解 1.浏览器的进程模型 1.…

git的安装及git的使用方法和指令

Git的使用什么是版本控制?什么是 Git?人工版本控制器版本控制工具常见版本控制工具怎么工作的?git 文件生命周期状态区域安装配置-- global检查配置创建仓库 - repository工作流与基本操作查看工作区的文件状态如果显示乱码的解决方式git sta…

JUC并发编程(下)

✨作者:猫十二懿 ❤️‍🔥账号:CSDN 、掘金 、个人博客 、Github 🎉公众号:猫十二懿 学习地址 写在最前 JUC并发编程(上) JUC(Java Util Concurrent)学习内容框架&…

Leetcode第530题二叉搜索树的最小绝对差|C语言

刚开始看到这道题,习惯性的找了搜索树的最左下和最右下的结点进行计算。结果发现要求返回的是“任意两个结点”的差的绝对值中最小的值。 思路:看了答案,因为二叉搜索树的中序遍历是有序数组,因此可以采用中序遍历对相邻结点之间进…

合约检测之slither(草稿)

一、Slither 介绍及运行流程 Slither 是一个静态分析框架,它通过将 Solidity 智能合约转换为称为 SlithIR 的中间表示来工作。 SlithIR 使用静态单一赋值 (SSA) 形式和精简指令集来减慢分析执行速度,同时保留在 Solidity 转换为字节码时可用的语义信息。…

GEE学习笔记 六十一:颜值就是战斗力

引用网络名人局座的一句话:“颜值越高的武器,战斗力越强”。对于我们做开发也是,使用的工具颜值越高,我们越喜欢使用。Google Earth Engine在线编辑器(https://code.earthengine.google.com/)虽然目前还不是…

【Proteus仿真】【STM32单片机】环境监测系统设计

文章目录一、功能简介二、软件设计三、实验现象联系作者一、功能简介 本项目使用Proteus8仿真STM32单片机控制器,使用LCD1602显示模块、蜂鸣器、按键模块、DHT11温湿度传感器、继电器加热祛湿加湿模块等。 主要功能: 系统运行后,LCD1602显示…

实现达梦数据库 disql 工具在 Linux 系统里上下翻动查看和编辑历史命令

本文内容已在如下环境上测试: 操作系统:银河麒麟10 数据库版本:达梦8 一、默认情况下,在 Linux 系统中使用 disql 命令时,若使用键盘的上下键查找历史命令复用,会出现乱码,导致在 Linux 上编写…

Scala的简单使用

文章目录Scala的简单使用(一)交互模式1、命令行方式2、文件方式(二)编译模式1、创建源程序2、编译成字节码3、解释执行对象Scala的简单使用 Scala可以在交互模式和编译模式两种方式下运行 (一)交互模式 在…

到了35岁,软件测试职业发展之困惑如何解?

35岁,从工作时间看,工作超过10年,过了7年之痒,多数IT人都已经跳槽几次。 35岁,发展比较好的软件测试人,已经在管理岗位(测试经理甚至测试总监)或已经成为测试专家或测试架构师。发展…

超280人靠这份软件测试面试题进入大厂,堪称金三银四最强,建议收藏

个人感觉目前各个大中厂面试不好的地方是,都在朝着背面试八股文的方向发展(曾经面试某二线厂,对着面试官纯背了 40 分钟概念),但不得不承认这也是企业在短时间内筛选面试者的一个重要手段。 今天为了帮助大家&#xff…

Java网络编程入门

1 网络编程入门 1.1 网络编程概述 计算机网络:是指将地理位置不同的具有独立功能的多台计算机及 其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统 网络编程…

Java-多线程-增强篇-锁 强化 第一篇

今天我们来学一下锁 会持续保持更新 欢迎追更哈 Java - 多线程 - 锁和提升 第1篇 首先强调一点:Java多线程的锁都是基于对象的,Java中的每一个对象都可以作为一个锁。同时,类锁也是对象锁,类是Class对象 Java8锁 核心思想 关键…

新建微服务模块Maven子工程

gitegg-cloud是微服务框架,整体功能是非业务相关的基础功能,在实际业务开发过程中需要新建微服务的业务模块,根据业务的整体规划,设计新建Maven子工程。   下面以常用的电商项目举例新建Maven子工程,电商项目一般包含…

【总结】2023数学建模美赛!收官!

今年的美赛时间是2.17-2.21,这学期疫情放开了之后管的没那么严了,我们小组就都提前一天到学校了,全力准备17号的比赛。 时间流程 刚拿到6个题的时候,我们三个人一人看两个题,每个人从两个题中再选出来一个自己觉得有…

【蓝桥杯每日一题】前缀和算法

🍎 博客主页:🌙披星戴月的贾维斯 🍎 欢迎关注:👍点赞🍃收藏🔥留言 🍇系列专栏:🌙 蓝桥杯 🌙我与杀戮之中绽放,亦如黎明的花…

数据结构与算法(三):栈与队列

上一篇《数据结构与算法(二):线性表》中介绍了数据结构中线性表的两种不同实现——顺序表与链表。这一篇主要介绍线性表中比较特殊的两种数据结构——栈与队列。首先必须明确一点,栈和队列都是线性表,它们中的元素都具…

4、Redis安装

前言:工具下载地址阿里云盘:Redis:https://www.aliyundrive.com/s/qSYxRyXAxQy提取码: ne27一、Redis下载下载地址:https://github.com/tporadowski/redis/releases此处下载mis版本,安装版mis版直接安装成功就启动服务…