1.引言
1. 1 编写目的
【内容】
本节说明本次提出需求的目的所在,希望能够达到的目标。
【裁剪原则】
此部分内容不允许裁剪。
提供xxxx系统的性能测试计划,目的是充分依据xxxx系统建设实际,提供完整的高可用、高性能解决方案,建设高性能、高并发的集中式部署平台。
1.2 项目各方基本信息
对项目参与各方的主要负责内容进行明确划分,以便尽早进行性能测试的相关准备工作。
项目各方基本信息
项目各方名称 |
性能测试主要负责工作内容 |
客户方 |
按照需求规格说明书要求提供测试环境所需要的软件环境、硬件环境等。为现场性能测试提供其他必要的环境。 |
开发方 |
按照公司计划进度完成系统测试的验收后,根据性能测试结果,要求开发人员能够及时修改性能测试出现的问题,提供解决方案和解决方式。 |
第三方 |
由客户方组织相关行业专家和技术专家对性能测试过程进行实时监控和测评,对项目产品提出修改意见,并且编写对应的性能测试报告文件。 |
1.3 参考资料
【内容】
指出在需求定义中所涉及的功能域,说明功能域中各种业务对象及其之间的关系,如果所提需求涉及的功能是一个更大系统的一个组成部分,则应说明本功能需求与该系统中其他各组成部分之间的关系,为此可使用一张方框图来说明同其他各部分的联系。通过阅读本节,可以使读者充分理解所涉及的业务范围。同时还需要描述的是本次需求所定义的系统的外部关系,便于读者理解该需求同其他产品或其他系统的基本的相互来往关系。
【裁剪原则】
此部分内容不允许裁剪。
xxxxx系统-需求规格说明书
xxxxx系统-系统建设方案
1.4 适用范围
【内容】
列举了需求分析说明书针对的不同读者,例如开发人员、项目经理、研发人员、用户、测试人员或文档的编写人员。
【裁剪原则】
此部分内容不允许裁剪。
1.5 限制与约束
测试限制条件主要存在于工具调用和人员能力问题:
- 测试工具:需要使用Jmeter在PC上模拟在线用户数量峰值和正常值。
- 测试人员能力:由于测试人员能力、精力有限,无法全覆盖所有的的情况条件组合,只对部分时间点进行性能测试。
1.6 术语表
Jmeter简介:
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、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.可链接的取样器允许无限制的测试能力。
2.各种负载统计表和可链接的计时器可供选择。
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对象:
Term |
Definition |
线程组 |
线程组是任何测试计划的起点,所有的逻辑控制器和采样器都必须放在线程组之下。 |
HPPT Cookie Manager |
测试元件,所有的Web测试都应该添加Cookie管理器,否则JMeter就会忽略Cookie,确保所有的HTTP请求使用相同的Cookie。 |
监听器 |
监听器提供了对JMeter在测试期间收集到的信息的访问方法。可以将测试数据导入到文件之中,以供后续分析。 |
断言 |
用户可以使用断言来检查从服务器获得的响应内容,通过断言可以测试服务器返回的响应与测试人员的期望是否相符。 |
控制器 |
Jmeter有两类控制器:采样器和逻辑控制器。二者结合起来驱动了测试进程。 |
采样器 |
采样器告诉JMeter发送一个请求到指定服务器,并等待服务器的请求,采样器按照其在测试树中的顺序去执行,还可以用逻辑控制器来改变采样器运行的重复次数。 |
逻辑控制器 |
逻辑控制器可以帮助用户控制JMeter的测试逻辑,特别是何时发送请求。 |
JMeter图信息:
Term |
Definition |
Lable |
定义HTTP请求名称 |
Sample |
表示这次测试中一共发出了多少个请求 |
Average |
平均响应时间 |
Max |
访问页面最大响应时间 |
Min |
访问页面最小响应时间 |
Median |
中位数,也就是50%用户的响应时长 |
90%Line |
99%用户的响应时长 |
Error% |
本次测试中出现错误的请求的数量/请求的总数 |
Throughput |
默认情况下表示每秒完成的请求数(Request per Second) |
KB/Sec |
每秒从服务器端接收到的数据量 |
响应时间 |
执行事务所花费的时间 |
2. 测试概述
2.1 测试目标
【内容】
列举了需求分析说明书关于性能测试的目标。
【裁剪原则】
此部分内容不允许裁剪。
在总结上述内容后,我们针对系统对场景进行了充分的分析与设计。本次测试达到如下目标:
1) Xx系统首页-查询结果的响应时间<=3S,业务成功率为100%,并发数=300,CPU占用率<=80%,内存使用率<=80%。
2) Xxx业务的响应时间<=5S,业务成功率为100%,并发数=300,CPU占用率<=80%,内存使用率<=80%。
3) 登录响应时间<=3S,业务成功率为100%,并发数=300,CPU占用率<=80%,内存使用率<=80%。
2.2 测试类型及方法
测试类型 |
目标 |
测试方法描述 |
性能测试 |
针对性能需求以满足系统在压力状态下的正常适用. |
使用Jmeter工具去模拟用户对xxx。 |
2.3 测试周期
编号 |
测试开始日期 |
测试结束日期 |
测试方法 |
负责人 |
前置条件 |
1 |
- |
yyyy-mm-dd |
功能测试 |
xxxx |
系统开发完成 |
2 |
yyyy-mm-dd |
yyyy-mm-dd |
性能测试计划、性能测试方案 |
xxxx |
功能测试 |
3 |
yyyy-mm-dd |
yyyy-mm-dd |
性能测试场景设计与实现 |
xxxx |
性能计划、性能测试方案 |
4 |
yyyy-mm-dd |
yyyy-mm-dd |
性能测试结果分析与报告编写 |
xxxx |
性能测试场景设计与实现 |
3. 测试设计
3.1 测试进入准则与范围
在功能测试完成且稳定的情况下,对本系统进行性能测试。
3.2 业务模型分析
在本次测试需求及对应指标的情况下,我们对本次测试的登录、首页查询、xxx进行业务模型分析,便于我们后续的测试场景及脚本的设计。
1)登录业务操作模型
- 打开首页
- 输入用户名和密码,登录
- 退出系统
2)xxx订单业务操作模型
- 在浏览器打开网页
- 输入用户名及密码,登录
- 点击充值
- 设置金额及支付方式,点击支付
- 退出系统
3)首页查询业务操作模型
- 打开首页
- 输入关键字,点击查询
- 退出系统
3.3 预期指标
测试项目 |
平均响应时间 |
业务成功率 |
CPU使用率 |
内存使用率 |
并发数 |
首页-查询 |
<=3S |
100% |
<=80% |
<=80% |
300 |
xxx订单 |
<=5S |
100% |
<=80% |
<=80% |
100 |
登录 |
<=3S |
100% |
<=80% |
<=80% |
100 |
3.4 测试环境
3.4.1 系统环境标准配置
主机用途 |
机型/OS |
数量 |
CPU |
内存 |
IP |
应用软件服务器 |
Centosx |
虚拟机x台 |
Intel(R) Xeon(R) Gold 6161 CPU @ 2.20GHz |
64GB |
xxxxx |
3.4.2 测试客户端配置
主机用途 |
机型/OS |
数量 |
CPU |
内存 |
浏览器版本 |
IP |
用于性能测试的机器 |
Win10 |
1 |
Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz 2.60 GHz |
16G |
Google Chrome 版本75 |
动态IP |
3.5 测试工具
工具 |
版本 |
用途 |
备注 |
Jmeter |
Apache JMeter3.1 r1770033 |
性能测试 |
|
3.6 资源与进度安排
人力安排:
角色 |
数量 |
职责 |
xxxx-测试工程师 |
1 |
功能测试、协助性能测试 |
xxxx-测试工程师 |
1 |
性能测试 |
4. 测试场景
见性能测试用例文档
5. 风险分析与应对
风险 |
优先级 |
应对措施 |
需求变更 |
中 |
通过内部及时进行沟通,并做好版本管理、变更管理 |
人员变动 |
高 |
需要有熟悉需求的相关人员做补充 |
环境变动 |
高 |
预先留有后备测试环境,保证环境的稳定 |