超细致的性能测试流程,你get了吗?

news2024/12/22 6:08:31

性能测试:利用工具模拟大量用户操作,验证系统承受的负载情况。

性能测试的目的:找到潜在的性能问题或瓶颈,分析并解决;找出性能变化趋势,为后续扩展系统提供参考。测试监控:基准测试、配置测试、负载测试、稳定性测试,对硬件和中间件进行监控。

1、学习业务:通过查看文档、手工操作系统对系统功能进行学习。

2、需求分析:分析系统非功能需求(关注业务量、业务分布、用户规模、性能指标等信息),确定性能测试范围,了解性能指标。一、系统非功能需求采集(1)系统架构:(2)业务流程:(3)用户信息:(4)系统是否与第三方系统有关,是否需要做挡板(Mock程序)。(5)系统是否有归档机制:如果数据库有归档机制???,可以把一些无用或者过时的信息移到归档库,这样就减少当前数据库的数据,有利于提高系统性能。(6)性能指标:吞吐率、响应时间、事务成功率,CPU、内存、磁盘、带宽使用阀值。

二、系统非功能需求分析确定性能测试范围明确性能指标

例如:

响应时间2-5-8原则
当用户在2秒以内得到响应时,会感觉系统的响应很快;
当用户在2-5秒之间得到响应时,会感觉系统的响应速度还可以;
当用户在5-8秒以内得到响应时,会感觉系统的速度很慢,但是还可以接受;
而当用户在超过8秒后仍然无法得到响应时,会感觉系统糟糕透了,或者认为系统已经失去响应。

CPU、内存、磁盘、网络带宽等。

系统硬件指标阀值

这些指标比较抽象,在监控分析时应该进一步细化。比如CPU的性能指标在Linux中分为用户利用率、系统利用率及平均负载等重要指标。以上指标具体数据来源于非功能需求、组织要求(公司运维总结出来的可行性指标)或者行业标准建议。

分析业务量;估算TPS与并发数活用;分析系统协议

三、性能测试从哪里获取需求?一般需求文档中会有一部分章节用于描述系统非功能性需求,但是多数需求文档对于性能需求的说明都比较笼统抽象。在需求不明确的情况下,通常需要性能测试工程师主动向需求提供方(BA团队、产品团队等)去征询。对于升级、优化类的老系统,可考虑是否存有历史测试方案参考,或许可以省事很多。或者我们分析原型系统业务数据即可,最直接的办法就是分析原型系统的数据、统计业务量、业务分布等信息。

3、工作评估:工作量分解,评估工作量,计划资源投入(即需要多少人力,多少工作日来完成性能测试工作)。

4、设计模型:圈定测试范围后,把业务模型映射成测试模型。业务模型:业务流程,系统在某个时间段内运行的业务种类及其业务占比,即哪个业务在什么时段在运行,业务量是多少?

测试模型:从业务模型中分析整理出来的需要进行测试的业务。对业务进行拆分对象,实现这个完整的功能包含哪些流程、环节。比如“购买商品”,具体的流程环节包括“登录->搜索商品->提交订单->支付订单->退出”。接着,明确业务占比,重要程度,目的在于:

(1)明确重点测试对象,安排测试优先级

(2)建模,混合场景中,虚拟用户资源分配,针对不同业务功能施加不同的负载。

(3)明确下“需求分析-指标分析”中相关业务功能所需基础数据及数据量问题,因为那块需求分析时可能只是大致估算下,评估指标是否合理,需要认真再分析下。

性能测试场景:参照用户使用习惯设计负载场景,比如哪些业务的测试脚本一起运行,哪些业务有先后顺序,运行多少并发用户等。比如WMS系统(仓库管理系统),WMS中都会有盘点功能,此功能就不应该与日常功能混合在一起,因为盘点通常都是一个月一次。所以组织测试场景时尽量要与实际业务情况一致。

5、编写计划

在文档中明确列出测试范围、人力投入、持续时间、工作内容、风险评估、风险应对策略等。

  • 系统概述
  • 测试环境
  • 需求分析
  • 测试策略
  • 测试场景
  • 测试准备
  • 时间计划
  • 测试组织架构
  • 交付物清单
  • 系统风险

6、开发脚本录制脚本或手动开发,添加固定计时器模拟ThinkTime,增加同步定时器模拟集合点,增加IF条件控制器判断逻辑,添加后置处理器获取参数。

7、测试环境准备测试环境包括服务器和负载机。生产环境和测试环境的硬件架构和配置需要进行估算,否则结果会有很大的偏差。了解测试环境部署和生产环境部署差异,是否按1:1的比例部署。通常建议测试时先不考虑集群,采用单机测试,测试通过后再考虑使用集群,这样有个比较,比较能说明问题。

8、测试数据准备:准备被测系统的主数据与业务数据我们知道数据量变会引起性能的变化。在制作测试数据时,一要注意量,需要准备足够的存量/历史业务数据,二要注意数据的分布。比如我们计算出需要并发100个虚拟用户,我们至少需要准备100个以上账号,并对账号赋予相应的权限(浏览、发帖、删除、查询)。那么准备多少数据够用呢?

往往性能测试需求会要求我们对系统进行定容定量

数据制作方法可以使用工具、SQL或者存储过程来完成。

9、测试执行测试执行是性能测试的关键,同样的脚本不同执行人员得出的结果可能差异较大。这些差异主要体现在场景设计与测试执行上。场景设计;基准测试;配置测试负载测试;稳定性测试;测试监控;测试监控;测试执行一般第三方性能测试会有一个测试准入条件(Checklist)。如果是项目组内的就没有这么严格了,但基本内容不变。

(1)检查网络环境

(2)检查测试数据

(3)检查监控设备

(4)脚本检查

10、缺陷管理对性能测试过程中发现的缺陷进行管理。

11、性能分析和性能调优性能测试工程师与开发人员一起来解决性能问题。

12、测试报告如何由测试环境推算生产环境配置

对于报告人来说,报告的是工作,是对整个测试过程的报告。对于决策层(报告相关干系人)来说关心的是结果,决策层迫切的想知道Yes or No,系统能不能上线,如果不能上线,有什么问题,怎么能够尽快解决?

14、评审

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

资料获取方式 :

 

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

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

相关文章

【JavaEE】DI与DL的介绍-Spring项目的创建-Bean对象的存储与获取

Spring的开发要点总结 文章目录 【JavaEE】Spring的开发要点总结(1)1. DI 和 DL1.1 DI 依赖注入1.2 DL 依赖查询1.3 DI 与 DL的区别1.4 IoC 与 DI/DL 的区别 2. Spring项目的创建2.1 创建Maven项目2.2 设置国内源2.2.1 勾选2.2.2 删除本地jar包2.2.3 re…

(栈队列堆) 剑指 Offer 31. 栈的压入、弹出序列 ——【Leetcode每日一题】

❓ 剑指 Offer 31. 栈的压入、弹出序列 难度:中等 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序…

好的CRM需要有哪些特点?

CRM客户管理系统在企业中占有举足轻重的地位,既是战略工具又可以强化部门间的团队协作、优化销售流程、缩短销售周期。市面上crm做得比较好的公司有哪些? 1.上榜Gartner魔力象限 好的CRM市场的引领、产品研发的持续投入、技术创新以及不断增长的市场份…

面试题 02.07. 链表相交

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后&#x…

划片机的作用将晶圆分割成独立的芯片

划片机是将晶圆分割成独立芯片的关键设备之一。在半导体制造过程中,晶圆划片机用于将整个晶圆切割成单个的芯片,这个过程被称为“晶圆分割”或“晶圆切割”。 晶圆划片机通常采用精密的机械传动系统、高精度的切割刀具和先进的控制系统,以确保…

Kafka - AR 、ISR、OSR,以及HW和LEO之间的关系

文章目录 引子举例说明 引子 AR(Assigned Replication): 分区中的所有副本统称为AR(Assigned Replicas) ISR(In-Sync Replicas):同步副本集合 ISR是指当前与主副本保持同步的副本集合…

JavaSwing+MySQL的酒店管理系统

点击以下链接获取源码: https://download.csdn.net/download/qq_64505944/88063706?spm1001.2014.3001.5503 JDK1.8、MySQL5.7 功能:散客开单:完成散客的开单,可一次最多开5间相同类型的房间。 2、团体开单:完成团体…

找不到类NoClassDefFoundError: ionetty.util.intemnal.Platformlependent0

解决方案,jdk版本的问题,在project structure 中把项目jdk改为1.8

[GXYCTF2019]simple CPP

前言 三个加密区域,第一次是基本运算,八位叠加,z3方程 分析 第一轮加密,和Dst中模27异或 (出题人对动调有很大意见呢) 将输入的字符串按八位存入寄存器中,然后将寄存器内容转存到内存 第一次…

Tauri自带命令生成各平台图标

npm命令: npm run tauri icon yarn命令: yarn tauri icon 1.在项目根目录中放置一个app-icon.png (图片)文件: 图片最好长宽比是1:1:(其他好像会报错) 2.执行命令: npm run tauri icon 可以到文件里面查看 如果本地测试,图标…

记一次真实MySQL百万数据优化

证实下确实是150万+数据哈 原SQL 原SQL执行计划 原SQL执行时间 5秒左右 原SQL分析 思路来源 整体看下SQL好像没啥可优化的。那咱们就大错特错了。 可能有人会说B表为啥在A表后面不正常呀,因为这是内连接查询不是左右连接查询。A,B表的顺序是可以交换的(实测无影响) 首先我们…

leetcode97. 交错字符串(算法:动态规划)

题目: 给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串: s s1 s2 ... sn t t1 t2 ... tm |n - …

Spring Batch之读数据库—StoredProcedureItemReader(四十)

一、StoredProcedureItemReader Spring Batch框架对存储过程提供了支持,StoredProcedureItemReader提供了对存储过程的支持,其运行和JdbcCursorItemReader类似,均是获取游标对象,然后转换为JavaBean对象。 StoredProcedureItemRe…

js - 关于ES6 Module模块化的跨域报错

ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,旨在成为浏览器和服务器通用的模块解决方案。其模块功能主要由两个命令构成:export或export default和import。export命令用于规定模块的对外接口,import命…

WPF 搜索框控件样式

WPF 搜索框控件样式 完全通过Xaml代码实现&#xff0c;使用了UserControl进行封装。功能包括聚焦时控件展开&#xff0c;输入为空时的文字提示&#xff0c;以及待选提示项列表等效果。实现效果如下图&#xff1a; xaml代码 <UserControl x:Class"SearchBar.SearchBo…

当在IDEA中实现类实现接口时,如果出现红色错误并且无法引入接口类的包,可能是以下几种情况导致的

1.当在IDEA中实现类实现接口时&#xff0c;如果出现红色错误并且无法引入接口类的包&#xff0c;可能是以下几种情况导致的&#xff1a; 2.缺少依赖&#xff1a;首先检查项目的依赖是否正确配置。如果接口类所在的包不在项目的依赖中&#xff0c;IDEA将无法找到该包并引入。可…

nginx系列第八篇:Ubuntu下验证nginx各请求处理阶段

Nginx处理请求的过程一共划分为11个阶段&#xff0c;按照执行顺序依次是 post-read、server-rewrite、find-config、rewrite、post-rewrite、preaccess、access、post-access、try-files、content 以及 log。 准备工作&#xff1a;host文件加入测试域名 sudo vi /etc/hosts 加入…

【Java从0到1学习】03 Java 基础知识

1. 关键字 关键字是编程语言里事先定义好并赋予了特殊含义的单词&#xff0c;也称作保留字。和其它语言一样&#xff0c;Java中保留了许多关键字&#xff0c;例如&#xff0c;class、public等&#xff0c;下面列举的是Java中所有的关键字。 1.1 关键字概述 被Java语言赋予特…

VS报错E1696 无法打开类似于stdio.h等头文件的解决办法

VS报错E1696 无法打开类似于stdio.h等头文件的解决办法 我的VS版本是2022的&#xff0c;然后我今天把同事在VS2017上的code&#xff08;一个完整的解决方案&#xff09;从svn上拿过来。结果发现&#xff0c;一大堆E1696的错误。主要表现就是项目中include的一些常用的c语言基础…

【字节缓冲流】定义与使用

字节缓冲流 1.字节缓冲流 BufferOutputStream&#xff1a;该类实现缓冲输出流。通过设置这样的输出流&#xff0c;应用程序可以向底层输出流写入字节&#xff0c;而不必为写入的每个字节导致底层系统的调用BufferInputStream&#xff1a;创建BufferInputStream将创建一个内部…