性能测试—性能测试方案设计思路总结

article/2025/10/5 16:46:02

一、需求分析

1.测试目的

为什么测?目的在于测试系统相关性能能否满足业务需求。通常分以下两种情况:

1)新项目上线

2)老项目优化

如果是老项目优化,可考虑是否存有历史测试方案,如果有可以参考,或许可以省事很多。

2.测试对象

要测啥?

测试对象可以归结为“业务功能”。测试前,需要了解我们需要测试的业务功能(不深入细节)有哪些,比如“购买商品”、“寄送快递”。

有没有必要测?

需求来源哪里?,有没有数据支撑测试这个需求的必要性?

通常,可以从以下几个方面考虑:

1)是否核心功能,是否要求严格的质量

2)是否常用、高频使用的功能

3)可能占用系统较多资源的功能

4)使用人数多还是少

5)在线人数多还是少

3.拆分对象

先从业务上来分,实现这个完整的功能包含哪些流程、环节

举例:购买商品

登录->搜索商品->提交订单->支付订单->退出

4.指标分析

分析性能需求指标(如“支持300人并发登录”)是否合理

有必要测试这个需求,考虑需求指标是否合理?有没有数据支撑?

通常,支撑数据可以从以下方面考虑:

1)采样时间段内系统使用人数

2)采样时间段内系统在线人数

3)采样时间段内系统(页面)访问量

4)采样时间段内请求数

常用分析思路:

1)2/8法则

2/8法则:80%的业务量在20%的时间里完成。这里,业务量泛指访问量,请求数,数据量等

2)正态分布

3)按比例倍增

4)响应时间2-5-8原则

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

注意:这个要根据实际情况,有些情况下时间长点也是可以接受的,好比12306

举例:

某公司后台监控,根据一段时间的采样数据,分析得出日高峰时段(11:00-14:00)用户下单请求数平均为1000,峰值为1500,根据这个计算并发请求数

时段:3个小时-> 3 x 60 x 60 = 1080s

业务量:1500

吞吐量:1500 * 80% / (1080 * 20%) = 5.56请求数/s

假设用户下单遵循正态分布,那么并发请求数峰值会肯定大于上述估算的吞吐量

注意:

1、2/8原则计算的结果并非在线并发用户数,是系统要达到的处理能力(吞吐量)

2、如果要求更高系统性能,根据实际情况,也可以考虑1/9原则或其它更严格的算法

3、以上估值只是大致的估算,不是精确值

举例:

想了下,暂时没想到啥好的例子,大致就说一些涉及到数据量的性能测试,比如报表统计,或者是大数据挖掘,查询等,怎么去估算数据量?

数据生命周期:

一般来说,数据都是有一定的生命周期的,时间的选取需要结合数据周期考虑。这里假设3年后系统性能仍然需要满足业务需求。

数据增长率:

如果是老项目,可以考虑对应功能主表历史数据存放情况

这里假设按年统计,比如第一年10000,第二年15000,第三年20000,第四年25000,那么我们得出,以第一年为基准,数据增长率分别为0.5,1,1.5,每年在上一年的基础上,以5000的速度增长

预估3年后,数据增长率为3,需要测试数据量为(1+3)x 10000 = 40000

注意:

1、实际数据一般是没上面举例那么规律的,只能大致估算数据增长率。

2、一些大数据量的性能测试除了和数据量相关,还涉及到数据分布等,比如查询,构造数据时需要结合实际,尽量贴近实际。

3、不同业务模块,涉及表不一样,数据量要求也是不一样的,需要有区别的对待。

如果是新项目,那就比较不确定了,除非能收集相关数据。

二、系统分析

结合需求分析中第3点,分析系统架构。从功能实现上来看,怎么实现这个完整功能的。通常这些业务功能操作都对应着一个或多个请求(可能能是不同类型的请求,比如http, mysql等),我们要做的是找出这些:

1)请求顺序、请求之间相互调用关系

2)数据流向,数据是怎么走的,经过哪些组件、服务器等

3)预测可能存在性能瓶颈的环节(组件、服务器等)

4)明确应用类型IO型,还是CPU消耗性、内存消耗型->弄清楚重点监控对象

5)关注应用是否采用多进程、多线程架构->多线程容易造成线程死锁、数据库死锁,数据不一致等

6)是否使用集群/是否使用负载均衡

了解测试环境部署和生产环境部署差异,是否按1:1的比例部署

通常建议测试时先不考虑集群,采用单机测试,测试通过后再考虑使用集群,这样有个比较,比较能说明问题

参考阅读“浅谈web网站架构演变过程”:http://blog.csdn.net/qiaqia609/article/details/50809383

三、业务分析

1)明确要测试的功能业务中,功能业务占比,重要程度。

目的在于

<1>明确重点测试对象,安排测试优先级

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

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

四、用例设计

1)用例设计

通常是基于场景的测试用例设计

<1>单业务功能场景

运行测试期间,所有虚拟用户只执行同一种业务功能某个环节、操作

<2>混合业务功能场景

运行测试期间,部分虚拟用户执行某种业务的某个环节操作,部分虚拟用户执行该业务功能的其它环节

或者

运行测试期间,部分虚拟用户执行某种业务功能,部分虚拟用户执行其它业务功能

注:这里用例没说到多少用户去跑,跑多久等,这里只是把他当作相同场景用例下的的一组组测试数据了。

2)事务定义

根据用例合理的定义事务,方便分析耗时(特别是混合业务功能场景测试),进而方便分析瓶颈。

比如,购买商品,我们可以把下订单定义为一个事务,把支付也定义为一个事务。

3)场景监控对象

针对每条用例,结合“系统分析”第4)点,明确可能的压力点(比如数据库、WEB服务器),需要监控的对象,比如tps,耗时,CPU,内存,I/O等

五、测试策略

1)先进行混合业务功能场景的测试,在考虑进行测试单业务功能场景的测试

2)负载测试->压力测试->稳定性测试->强度测试

注:如果测试稳定性,时间建议至少8小时;

3)逐步加压

比如开始前5分钟,20个用户,然后每隔5分钟,增加20个用户。

好处:不仅比较真实的模拟现实环境,而且在性能指标比较模糊,且不知道服务器处理能力的情况下,可以帮我们确定一个大致基准,因为通常情况下,随着用户数的不断增加,服务器压力也会随着增加,如果服务器不够强大,那么就会出现不能及时处理请求、处理请求失败的情况下,对应的运行结果图形中,运行曲线也会出现对应的形态,比如从原本程一条稳定直线的情况,到突然极限下降、开始上下波动等,通过分析我们就能得出服务器大致处理能力,供后续测试参考。

4)单点并发

比如使用集合点,单独针对某个环节的并发测试,通常是针对某个环节的性能调优时使用。

常识:

a)负载测试

保证系统能正常运行(通常是满足某些系统性能指标)的前提下,让被测对象承担不同的工作量,以评估被测对象的最大处理能力及存在缺陷而进行的测试

b)压力测试

不保证系统能否正常运行的前提下,让被测对象承担不同工作量,以评估被测对象能提供的最大处理能力及存在缺陷而进行的测试

c)稳定性测试

测试系统的长期稳定运行的能力。同疲劳强度测试的区别是,稳定性测试的压力强度较小,一般趋向于客户现场日常状态下的压力强度,当然在通过时间不能保证稳定性的状态下,需要加大压力强度来测试,此时的压力强度则会高于正常值。

d)强度测试

通常模拟系统在较差、异常资源配置下运行,如人为降低系统工作环境所需要的资源,如网络带宽,系统内存,数据锁等等,以评估被测对象在资源不足的情况下的工作状态

注:疲劳强度测试是一类特殊的强度测试,主要测试系统长时间运行后的性能表现,例如7x24小时的压力测试。

六、工具选取

1)协议分析

一般性能测试工具都是基于协议开发的,所以先要明确应用使用的协议

2)工具选取

1)类型

开源工具、收费工具、自研工具

2)分析工具

<1>理解工具实现原理

<2>采用用异步还是同步

常识:

1.同步请求:发出一个调用请求,在没有得到结果之前,该调用就不返回。

2.异步请求:发出一个调用请求,在没有得到请求结果之前,该调用可立即返回。该调用请求的处理者在处理完成后通过状态、通知和回调等来通知调用者。

<3>使用长连接还是短连接

七、软件配置

1)操作系统

内核版本、32 or 64位?

2)应用版本

应用版本要和线上保持一致,特别是中间件、组件等的版本,因为不同版本,其性能可能不一样

3)参数配置

<1>负载均衡、反向代理参数配置

<2> Web服务器参数配置

<3>数据库服务器参数配置

八、网络分析

1)网络路由

通常为了排除网络型瓶颈,通常建议在局域网下进行测试。

通常,这里我的分析思路是这样的:

<1>检查hosts文件的配置

从终端压测机(负载生成机)开始,到请求目的服务器器,机器的hosts文件配置

通常,hosts文件位于如下:

Windows:C:\Windows\System32\drivers\etc\hosts

Unix/Linux:/etc/hosts

小常识:

1、通常域名访问站点,首先要通过DNS域名服务器把网络域名(形如www.xxx.com)解析成XXX.XXX.XXX.XXX的IP地址,然后继续后续访问。

2、hosts存放了域名和ip地址的映射关系,如下

使用hosts可以加快域名解析,在进行DNS请求以前,系统会先检查自己的hosts文件中是否有这个地址映射关系,如果有则把域名解析为映射的IP地址,不请求网络上的DNS服务器,如果没有再向已知的DNS服务器提出域名解析。也就是说hosts的请求级别比DNS高,可加快域名解析。

<2>检查DNS配置

不同DNS,其速度和准确率是不一样的,比如114.114.114.114速度远比8.8.8.8快,如果有用到DNS(特别是压测机),需要考虑下是否适当

<3>确保路由正确设置

2)网络带宽

如果没条件在局域网下测试,可能需要估算所需大致带宽。

如果测试时是基于UI层操作的操作,那么得估算页面平均大小,这个可以通过浏览器自带工具查看打开单个页面服务器返回的请求数据大小。如果是测试时是基于接口层的请求测试,可以通过工具查看服务器响应数据大小。

然后根据采集的页面PV峰值、请求数峰值进行计算。

假设在PV峰值、请求数峰值= 1000,峰值时段:8:00 - 12:00,平均页面、请求大小200k

带宽= 1000 x 80% / (20% x 4 x 3600s) x 200KB x /1024 x 8bit ,单位MBps

注意:这里涉及到浏览器缓存等因素,估值可能不准,大致估算。

九、硬件配置

1)CPU

型号,频率,核数

2)内存

3)磁盘

不同磁盘类型,读写速率不一样

4)网卡

不同网卡,其传输速率也不一样

注意:硬件配置最好和生产环境的配置保持一致

十、性能监控

注意:

1)这里监控不仅仅是服务器自身性能指标监控,如cpu,还包括事务耗时监控等

2)需要记录测试前各个性能指标数据,方便后续测试对比

十一、结果分析

如果是性能调优,还需同上一个版本的性能测试结果对比

技能提升

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
在这里插入图片描述
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….
在这里插入图片描述


http://chatgpt.dhexx.cn/article/pxVt2Id4.shtml

相关文章

性能测试计划及方案

说明&#xff1a;性能测试实施第一份文档&#xff0c;也是最重要的一份文档。 主要内容&#xff1a; 1、项目背景 项目是用来做什么的 2、测试目标 确定此次性能测试的目标&#xff0c;决定测试策略&#xff08;下文&#xff09; 3、人员安排 明确性能测试的时间&#xff0c…

性能测试详细测试方案

性能测试详细测试方案 前言 平台XX项目系统已经成功发布&#xff0c;依据项目的规划&#xff0c;未来势必会出现业务系统中信息大量增长的态势。 随着业务系统在生产状态下日趋稳定、成熟&#xff0c;系统的性能问题也逐步成为了我们关注的焦点&#xff1a;每天大数据量的“…

性能测试设计方案

前言 最近比较多的时间是在做压力测试&#xff0c;也就是常说的压测&#xff0c;而且压力测试也属于性能测试中的其中一个&#xff0c;所以今天总结下性能测试的测试方案。 性能测试分类 常见的性能测试分类一般分为&#xff1a;负载测试、压力测试、稳定性测试 ①负载测试&…

​性能测试基础——性能测试方案(示例)

前面所说的测试分析等准备工作实际上最终目的是制定测试方案&#xff0c;测试方案一般包括&#xff1a; 项目的简要说明、项目系统结构、项目的业务结构、以及项目的性能需求、测试环境数据以及测试策略方法、测试案例、测试人员进度安排以及测试风险预估等等。 下面是一个一般…

性能测试~性能测试方案

1. 背景 1.1. 项目背景 明确该性能测试的项目背景 1.2. 性能目标 性能目标都会影响项目的整个过程&#xff0c;对目标的把握将决定一个性能项目的走向 测试测目标必须明确 取生产峰值流量作为基线(目标一般是峰值的xxx倍)业务的流量预期 2. 测试范围 明确需要测试的特性…

干货|一次完整的性能测试,测试人员需要做什么?

作者:Kiki Deng 一、 规范性能测试实施流程的意义 规范的性能测试实施流程能够加强测试工作流程控制,明确性能测试各阶段应完成的工作,指导测试人员正确、有序的开展性能测试工作,提高各角色在性能能测试中的工作效率。本次分享的性能测试实施流程是性能测试开展的”指导方…

让外网访问内网

让外网访问内网 假如我的电脑的ip是192.168.0.100 我在这个ip下开放了一个3000端口 同一wifi下的设备可以访问192.168.0.100:3000 但是只要访问的设备和被访问的设备不在同一wifi下就不能访问了 现在来解决 需要用到一个叫花生壳的软件 打开花生壳 点击右下角的加号 根据需要…

内网接入外网的几种方式

背景&#xff1a;Pc1pingAR2是ping不通的&#xff0c;因为两者不在同一个网段&#xff0c;pc1虽然知道AR2的地址&#xff0c;但是AR2不知道pc1的地址&#xff0c;所以要将pc1转为公网的ip地址 一.静态地址转换 &#xff08;1&#xff09;全局模式下配置 将内网主机的私有地址…

如何同时使用内网和外网

场景&#xff1a; 最近在对接医保专线的时候&#xff0c;发现在连接互联网的同时&#xff0c;是无法同时使用专线的。要使用的时候只能一下连wifi一下连专线&#xff0c;相当的不方便。 方法&#xff1a; 第一步&#xff0c;以管理员权限打开cmd&#xff0c;不然可能会出现用…

【网络】内网访问外网和外网访问内网的原理

原文地址 公有 IP 和私有 IP 的区别 首先&#xff0c;我们需要了解一下什么是公有 IP 和私有 IP &#xff1f; 公有地址&#xff08;Public address&#xff09;&#xff1a;由 Inter NIC&#xff08;Internet Network Information Center 因特网信息中心&#xff09;负责。…

三阶魔方快速公式

三阶魔方快速公式&#xff1a; 白色做底面。 &#xff08;二&#xff09;做第二层棱块。 黄面为顶层&#xff0c;找顶层中不带黄面的棱块&#xff0c;将棱块面对你的颜色转到与中点色块相同处&#xff0c;这两块面对自己&#xff0c;做公式&#xff1a; 远&#xff0c;侧面上…

【玩】三阶魔方公式

每次忘记公式&#xff0c;找到当时记忆的公示都得查很费劲。索性记录一下。 一、基本 1、标注&#xff1a; 一般来说&#xff0c;你可能需要整体地转动魔方来找到合适的是用公式的位置&#xff0c;但是为了简单起见&#xff0c;在使用一条具体公式时&#xff0c;只需要转动魔…

三阶魔方公式速记

最近在玩魔方的过程中&#xff0c;发现魔方真正需要死记硬背的公式只有三个&#xff0c;分别是棱块互换、棱块上翻、角块互换。 本文不是魔方复原教程&#xff0c;只是总结常用的几个公式&#xff0c;不适合新手。 先贴上一个非常强大的网页版魔方 Cuber 1.一层 观察法 2.二层 …

三阶魔方入门级学习

文章目录 起因&#xff1a;认识魔方&#xff1a;复原步骤&#xff1a;任务一&#xff1a;拼好底层&#xff08;设底层为白&#xff09;目标1&#xff1a;在顶层&#xff08;黄&#xff09;中心块周围安排四个白色棱块目标2&#xff1a;将目前在顶层的四个白色棱块分别对准侧面中…

php编程三阶魔方,三阶魔方还原教程

大家好,或许在你们会感觉魔方的还原很难,其实不然。今天我来为大家带来三阶魔方的简单还原公式,让你能够快速上手,并且能够理解学会。 话不多说,首先我来介绍一下魔方的六个面:白,黄,红,橙,绿,蓝(白-黄,红-橙,绿-蓝)图如下: 打开搜狗搜索APP,查看更多精彩资讯 我…

四阶魔方用三阶魔方公式时,两个特殊情况处理方式(顶面十字、最后一步)

四阶魔方的玩法比较简单的&#xff0c;就是把他变成三阶魔方&#xff0c;然后用三阶魔方公式还原&#xff1a; &#xff08;三阶魔方还原&#xff0c;一共只记6个公式即可&#xff0c;https://blog.csdn.net/Bob__yuan/article/details/86546920&#xff09; 1、先按照面与面…

三阶魔方还原步骤图_七步玩转三阶魔方还原公式及步骤图解教程

魔方Rubiks Cube 又叫魔术方块,也称鲁比克方块,是匈牙利布达佩斯建筑学院厄尔诺鲁比克教授在1974年发明的。三阶魔方系由富有弹性的硬塑料制成6面正方体,共有26块小立方体。魔方与中国人发明的“华容道”,法国人发明的“独立钻石”一块被称为智力游戏界的三大不可思议。 完…

三阶魔方公式记录

第一步: 详见魔方小站视频教程&#xff1a;https://imofang.taobao.com/p/jiaocheng31.htm?spma1z10.4-c-s.w5003-14960603961.1.6d4723276NiLJM&scenetaobao_shop 第二步: 完成底面白色作为底层。 视频教程&#xff1a;https://imofang.taobao.com/p/jiaocheng32.htm?…

三阶魔方还原 - 只需7步6个公式

这段时间实验室来了段魔方热&#xff0c;为了教0基础的童鞋玩转三阶魔方&#xff0c;我就用4页纸写了4个步骤的公式教&#xff0c;发现写的攻略一看就懂&#xff0c;两个徒弟都是很快就会了&#xff0c;甚至徒弟都收了新的徒弟&#xff08;笑死hhh &#xff09;&#xff0c;所以…

魔方cfop公式软件_【特别篇】最全的三阶魔方公式标记法图解汇总

在【初级篇】里整理过几种简单的公式表达法,但并不完整。这篇文章,汇总了三阶魔方所有会用到的公式标记,用图解的方式表达出来,方便大家日后学习高级玩法打下基础。 一、“重新”认识魔方的六个面 魔方六个面的字母标记 这里,魔方的六个面分别用六个字母表示,这六个字母对…