XXXXX
系统
性能测试
计划和方案
XXXXX科技
测试部
2020年9月
文档版本变更记录:
目录
1
引言
1.1
编写目的
提供XXXXX系统的性能测试计划,目的是充分依据《XXXXX性能测试指标收集》,提供完整的高可用、高性能解决方案,为之后建设高性能、高并发的集中式部署平台提供指导。
1.2 项目各方基本信息
|
|
|
|
|
按照需求规格说明书要求提供测试环境所需要的软件环境、硬件环境等。为现场性能测试提供其他必要的环境。 |
|
|
按照公司计划进度完成系统测试的验收后,根据性能测试结果,要求开发人员能够及时修改性能测试出现的问题,提供解决方案和解决方式。 |
|
|
根据客户方软件使用习惯,性能测试指标收集,综合考虑,输出性能测试计划和方案。 |
1.3 参考资料
《XXXXX性能测试指标收集》
《XXXXX需求规格说明书》
1.4
项目架构图
1.
5
适用范围
用户
开发人员
项目经理
测试人员
1.5 限制与约束
测试限制条件主要存在于需求方面
需求方面
目前的需求文档更多的是来自于功能方面的需求,而用户使用场景,包括用户基数,用户业务操作频率,用户业务操作类型,目前是无法获知的。
人员方面
目前项目组都是基础的测试人员,性能测试主要集中在一个人的身上。
1.6 术语表
Jmeter简介:
Apache JMeter
是
Apache
组织开发的基于
Java
的压力测试工具。
用于对软件做压力测试,它最初被设计用于Web
应用测试,但后来扩展到其他测试领域。
它可以用于测试静态和动态资源。
例如:
静态文件
包括一些配置文件,静态图片,excel
(如
XXXXX
的模板文件
.xls
)
Java
对象
数据库
FTP
服务器
等等。
JMeter
可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。
另外,JMeter
能够对应用程序做功能
/
回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。
为了最大限度的灵活性,JMeter
允许使用正则表达式创建断言。
Apache jmeter
可以用于对静态的和动态的资源(文件,
Servlet
,
Perl
脚本,
java
对象,数据库和查询,
FTP服务器等等)的性能进行测试。
它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发
负载测试
你的服务器/
脚本
/
对象。
JMeter的作用:
1.
能够对
HTTP
和
FTP
服务器进行压力和
性能测试
,也可以对任何数据库进行同样的测试(通过JDBC
)。
2.
完全的可移植性和
100%
纯
java
。
3.
完全
Swing
和轻量组件支持(
预编译
的JAR
使用
javax.swing.*)
包。
4.
完全多线程框架允许通过多个线程并发取样和通过单独的
线程组对不同的功能同时取样。
5.
精心的
GUI
设计允许快速操作和更精确的计时。
6.
缓存和离线分析
/
回放测试结果。
JMeter的高可扩展性:
1.
可链接的取样器允许无限制的测试能力。
3.
数据分析和可视化
插件提供了很好的可扩展性以及个性化。
4.
具有提供动态输入到测试的功能(包括
Javascript
)。
5.
支持脚本编程的取样器(在
1.9.2
及以上版本支持
BeanShell
)。
在设计阶段,JMeter
能够充当
HTTP PROXY
(代理)来记录
IE/NETSCAPE
的
HTTP请求
,也可以记录apache
等
WebServer
的
log
文件来重现
HTTP
流量。当这些
HTTP
客户端请求被记录以后,测试运行时可以方便的设置重复次数和并发度(
线程数
)来产生巨大的流量。JMeter
还提供可视化组件以及
报表工具把量服务器在不同压力下的性能展现出来。
相比其他HTTP
测试工具
,JMeter
最主要的特点在于扩展性强。
JMeter
能够自动扫描其
lib/ext
子目录下
.jar
文件中的
插件,并且将其装载到内存,让用户通过不同的菜单调用。
JMeter对象:
|
|
|
|
|
线程组是任何测试计划的起点,所有的逻辑控制器和采样器都必须放在线程组之下。 |
|
|
测试元件,所有的Web测试都应该添加Cookie管理器,否则JMeter就会忽略Cookie,确保所有的HTTP请求使用相同的Cookie。 |
|
|
监听器提供了对JMeter在测试期间收集到的信息的访问方法。可以将测试数据导入到文件之中,以供后续分析。 |
|
|
用户可以使用断言来检查从服务器获得的响应内容,通过断言可以测试服务器返回的响应与测试人员的期望是否相符。 |
|
|
Jmeter有两类控制器:采样器和逻辑控制器。二者结合起来驱动了测试进程。 |
|
|
采样器告诉JMeter发送一个请求到指定服务器,并等待服务器的请求,采样器按照其在测试树中的顺序去执行,还可以用逻辑控制器来改变采样器运行的重复次数。 |
|
|
逻辑控制器可以帮助用户控制JMeter的测试逻辑,特别是何时发送请求。 |
JMeter图信息:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
默认情况下表示每秒完成的请求数(Request per Second) |
|
|
|
|
|
|
2. 测试概述
2.1 测试目标
2.1.1 业务操作目标
2.1.2 服务器资源目标
2.2 测试类型及方法
|
测试类型 |
|
|
|
|
|
使用Jmeter工具去模拟用户对XXXXX系统操作。 |
2.3 性能测试架构
2.4 测试周期
3. 测试设计
3.1 测试进入准则与范围
功能测试稳定,没有大的逻辑和架构更改
3.2
性能测试场景
验证维度:并发用户数
场景1
:500用户在系统中只有少量数据情况下,每秒登录10个用户
场景2
:500用户在系统中只有少量数据情况下,每秒登录100个用户
场景3
:500用户在系统中只有少量数据情况下,一次性并发500个用户
场景4
:500用户在系统中已存在XXX业务数据500万,XXX业务数据200万,XXX业务数据200万数据,XXX业务数据200万数据情况下,每秒登录10个用户
场景5
:500用户在系统中已存在XXX业务数据500万,XXX业务数据200万,XXX业务数据200万数据,XXX业务数据200万数据情况下,每秒登录100个用户
场景6:500用户在系统中已存在XXX业务数据500万,XXX业务数据200万,XXX业务数据200万数据,XXX业务数据200万数据情况下,一次性并发500个用户
验证维度:
单个业务
单一新增
场景7:XXX业务数据
,100个用户同时进行XXX业务数据
录入,共循环1000次
场景8:XXX业务数据
,100个用户同时进行XXX业务数据
录入,共循环10000次
场景9:XXX业务数据
,500个用户同时进行XXX业务数据
录入,共循环1000次
场景10:XXX业务数据
,500个用户同时进行XXX业务数据
录入,共循环10000次
场景11:XXX业务数据
,100个用户同时进行XXX业务数据
录入,共循环1000次
场景12:XXX业务数据
,100个用户同时进行XXX业务数据
录入,共循环10000次
场景13:XXX业务数据
,500个用户同时进行XXX业务数据
录入,共循环1000次
场景14:XXX业务数据
,500个用户同时进行XXX业务数据
录入,共循环10000次
场景15:
XXX业务数据
,100个用户同时进行XXX业务数据
录入,共循环1000次
场景16:
XXX业务数据
,100个用户同时进行XXX业务数据
录入,共循环10000次
场景17:
XXX业务数据
,500个用户同时进行XXX业务数据
录入,共循环1000次
场景18:
XXX业务数据
,500个用户同时进行XXX业务数据
录入,共循环10000次
场景19:
XXX业务数据
,100个用户同时进行XXX业务数据
录入,共循环1000次
场景20:
XXX业务数据
,100个用户同时进行XXX业务数据
录入,共循环10000次
场景21:
XXX业务数据
,500个用户同时进行XXX业务数据
录入,共循环1000次
场景22:
XXX业务数据
,500个用户同时进行XXX业务数据
录入,共循环10000次
混合场景新增
场景23:100个用户其中25个进行XXX业务数据
录入,25个进行XXX业务数据
录入,25个进行XXX业务数据
录入,25个进行XXX业务数据录入
场景24:100个用户其中70个进行XXX业务数据
录入,10个进行XXX业务数据
录入,10个进行XXX业务数据
录入,10个进行XXX业务数据录入
查询业务
单一查询
场景25:XXX业务数据
,100个用户同时进行XXX业务数据
查询,共循环1000次
场景26:XXX业务数据
,100个用户同时进行XXX业务数据
查询,共循环10000次
场景27:XXX业务数据
,500个用户同时进行XXX业务数据
查询,共循环1000次
场景28:XXX业务数据
,500个用户同时进行XXX业务数据
查询,共循环10000次
场景29:XXX业务数据
,100个用户同时进行XXX业务数据
查询,共循环1000次
场景30:XXX业务数据
,100个用户同时进行XXX业务数据
查询,共循环10000次
场景31:XXX业务数据
,500个用户同时进行XXX业务数据
查询,共循环1000次
场景32:XXX业务数据
,500个用户同时进行XXX业务数据
查询,共循环10000次
场景33:
XXX业务数据
,100个用户同时进行XXX业务数据
查询,共循环1000次
场景34:
XXX业务数据
,100个用户同时进行XXX业务数据
查询,共循环10000次
场景35:
XXX业务数据
,500个用户同时进行XXX业务数据
查询,共循环1000次
场景36:
XXX业务数据
,500个用户同时进行XXX业务数据
查询,共循环10000次
场景37:
XXX业务数据
,100个用户同时进行XXX业务数据
查询,共循环1000次
场景38:
XXX业务数据
,100个用户同时进行XXX业务数据
查询,共循环10000次
场景39:
XXX业务数据
,500个用户同时进行XXX业务数据
查询,共循环1000次
场景40:
XXX业务数据
,500个用户同时进行XXX业务数据
查询,共循环10000次
混合场景查询
场景41:100个用户其中25个进行XXX业务数据
查询,25个进行XXX业务数据
查询,25个进行XXX业务数据
查询,25个进行XXX业务数据查询
场景42:100个用户其中70个进行XXX业务数据
查询,10个进行XXX业务数据
查询,10个进行XXX业务数据
查询,10个进行XXX业务数据查询
修改业务
--
单一修改
场景43:XXX业务数据
,100个用户同时进行XXX业务数据
修改,共循环1000次
场景44:XXX业务数据
,100个用户同时进行XXX业务数据
修改,共循环10000次
场景45:XXX业务数据
,500个用户同时进行XXX业务数据
修改,共循环1000次
场景46:XXX业务数据
,500个用户同时进行XXX业务数据
修改,共循环10000次
场景47:XXX业务数据
,100个用户同时进行XXX业务数据
修改,共循环1000次
场景48:XXX业务数据
,100个用户同时进行XXX业务数据
修改,共循环10000次
场景49:XXX业务数据
,500个用户同时进行XXX业务数据
修改,共循环1000次
场景50:XXX业务数据
,500个用户同时进行XXX业务数据
修改,共循环10000次
场景51:
XXX业务数据
,100个用户同时进行XXX业务数据
修改,共循环1000次
场景52:
XXX业务数据
,100个用户同时进行XXX业务数据
修改,共循环10000次
场景53:
XXX业务数据
,500个用户同时进行XXX业务数据
修改,共循环1000次
场景54:
XXX业务数据
,500个用户同时进行XXX业务数据
修改,共循环10000次
场景55:
XXX业务数据
,100个用户同时进行XXX业务数据
修改,共循环1000次
场景56:
XXX业务数据
,100个用户同时进行XXX业务数据
修改,共循环10000次
场景57:
XXX业务数据
,500个用户同时进行XXX业务数据
修改,共循环1000次
场景58:
XXX业务数据
,500个用户同时进行XXX业务数据
修改,共循环10000次
混合场景修改
场景59:100个用户其中25个进行XXX业务数据
修改,25个进行XXX业务数据
修改,25个进行XXX业务数据
修改,25个进行XXX业务数据修改
场景60:100个用户其中70个进行XXX业务数据
修改,10个进行XXX业务数据
修改,10个进行XXX业务数据
修改,10个进行XXX业务数据修改
场景59:500个用户其中125个进行XXX业务数据
修改,125个进行XXX业务数据
修改,125个进行XXX业务数据
修改,125个进行XXX业务数据修改
场景60:500个用户其中350个进行XXX业务数据
修改,50个进行XXX业务数据
修改,50个进行XXX业务数据
修改,50个进行XXX业务数据修改
删除业务
--
单一删除
场景61:XXX业务数据
,100个用户同时进行XXX业务数据
删除,共循环1000次
场景62:XXX业务数据
,100个用户同时进行XXX业务数据
删除,共循环10000次
场景63:XXX业务数据
,500个用户同时进行XXX业务数据
删除,共循环1000次
场景64:XXX业务数据
,500个用户同时进行XXX业务数据
删除,共循环10000次
场景65:XXX业务数据
,100个用户同时进行XXX业务数据
删除,共循环1000次
场景66:XXX业务数据
,100个用户同时进行XXX业务数据
删除,共循环10000次
场景67:XXX业务数据
,500个用户同时进行XXX业务数据
删除,共循环1000次
场景68:XXX业务数据
,500个用户同时进行XXX业务数据
删除,共循环10000次
场景69:
XXX业务数据
,100个用户同时进行XXX业务数据
删除,共循环1000次
场景70:
XXX业务数据
,100个用户同时进行XXX业务数据
删除,共循环10000次
场景71:
XXX业务数据
,500个用户同时进行XXX业务数据
删除,共循环1000次
场景72:
XXX业务数据
,500个用户同时进行XXX业务数据
删除,共循环10000次
场景73:
XXX业务数据
,100个用户同时进行XXX业务数据
删除,共循环1000次
场景74:
XXX业务数据
,100个用户同时进行XXX业务数据
删除,共循环10000次
场景75:
XXX业务数据
,500个用户同时进行XXX业务数据
删除,共循环1000次
场景76:
XXX业务数据
,500个用户同时进行XXX业务数据
删除,共循环10000次
混合场景删除
场景77:100个用户其中25个进行XXX业务数据
删除,25个进行XXX业务数据
删除,25个进行XXX业务数据
删除,25个进行XXX业务数据删除
场景78:100个用户其中70个进行XXX业务数据
删除,10个进行XXX业务数据
删除,10个进行XXX业务数据
删除,10个进行XXX业务数据删除
场景77:500个用户其中125个进行XXX业务数据
删除,125个进行XXX业务数据
删除,125个进行XXX业务数据
删除,25个进行XXX业务数据删除
场景78:500个用户其中350个进行XXX业务数据
删除,50个进行XXX业务数据
删除,50个进行XXX业务数据
删除,50个进行XXX业务数据删除
新增,修改,删除,查询混合业务场景
场景79:100个用户其中25个进行XXX业务数据
的操作,10个人新增,5个查询,5个修改,5个删除;25个进行XXX业务数据
的操作,10个人新增,5个查询,5个修改,5个删除;25个进行XXX业务数据
的操作,10个人新增,5个查询,5个修改,5个删除;25个进行结构的操作,10个人新增,5个查询,5个修改,5个删除
场景80:
500个用户其中125个进行XXX业务数据
的操作,50个人新增,25个查询,25个修改,25个删除;125个进行XXX业务数据
的操作,50个人新增,25个查询,25个修改,25个删除;125个进行XXX业务数据
的操作,50个人新增,25个查询,25个修改,25个删除;125个进行结构的操作,50个人新增,25个查询,25个修改,25个删除
3.3 预期指标
3.4 测试环境
3.4.1 系统环境标准配置
|
主机用途 |
|
|
|
|
|
|
|
|
|
Intel(R) Xeon(R) Sliver 4216 CPU @ 2.10GHz(8处理器) |
|
|
3.4.2 测试客户端配置
|
主机用途 |
|
|
|
|
|
|
|
|
Windows Server 2016 Standard |
|
Intel(R) Core(TM) i7-8700U CPU @ 3.20GHz 3.190 GHz |
|
|
|
3.5 测试工具
3.6 资源与进度安排
人力安排:
4
. 风险分析与应对