某公司-某产品APP_Ver1.1.0_

性能测试方案_

2017-07-10_黄涛

 

 

 

 

 

 

 

 

 

文档修订记录

版本号

修订日期

修改内容

作者

审核人

审核时间

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

目录

1. 测试背景.................................................................. 6

2. 测试目标.................................................................. 6

3. 测试范围.................................................................. 6

4. 名词术语.................................................................. 6

5. 角色说明.................................................................. 6

6. 进度计划.................................................................. 6

7. 测试环境.................................................................. 6

7.1. 生产环境系统架构.................................................... 6

7.2. 测试环境系统架构.................................................... 6

7.3. 生产环境软硬件配置.................................................. 6

7.4. 测试环境软硬件配置.................................................. 6

7.5. 负载机软硬件配置.................................................... 6

8. 需求分析.................................................................. 6

8.1. 业务模型............................................................ 6

8.2. 性能指标............................................................ 7

8.2.1. 业务性能指标.................................................. 7

8.2.2. 硬件性能指标.................................................. 7

9. 测试策略.................................................................. 7

9.1. 测试执行策略........................................................ 7

9.2. 测试监控策略........................................................ 7

10. 测试场景................................................................. 7

11. 测试准备................................................................. 7

11.1. 测试工具准备....................................................... 7

11.2. 测试环境准备....................................................... 7

11.3. 测试脚本和程序准备................................................. 7

11.4. 测试数据准备....................................................... 7

12. 交付清单................................................................. 7

13. 项目风险................................................................. 7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.   测试背景

公司准备借助本系统来推广公司业务,并以此系统来提升公司品牌的影响力。考虑到当前和未来用户量和数据量的增长趋势。因此需要对本系统关键功能模块进行性能测试,以此验证系统是否符合预期性能指标要求和未来大用户量、数据量增长的情况下,系统不会出现性能瓶颈,以此避免后期的风险。

2.   测试目标

1)基于系统的业务量要求,评估系统能否满足预期的性能指标要求。

2)针对系统进行稳定性、大容量下的性能测试。

3)测试并找出系统可能存在的性能问题,分析系统瓶颈风险。

3.   测试范围

通过对原型文档、需求文档进行熟悉和梳理,结合系统用户的操作行为和习惯及业务类型的分析,得出性能测试范围和测试点如下表。

4.   名词术语

1)基准测试(Performance Testing):按生产的业务压力和使用场景组合,模拟一定的用户量来压测系统,同时收集吞吐量、响应时间指标数据后,目的是评估系统是否满足预期的性能指标要求。

2)负载测试(Load Testing):按生产的业务压力和使用场景组合,模拟不断增加业务压力,在保证系统满足性能指标的情况下(如某项或多项指标达到安全极限值),从而发现系统处理业务的极限能力,以便收集系统的最优并发用户数,最优TPS及最优TPS下的资源(业务指标:TPS、RT,硬件指标:CPU使用率、MEM使用率)使用情况,目的是找到系统处理能力的极限、或是系统的处理的性能容量,或为后期的性能调优作参考。

3)压力测试(Stress Testing):按生产的业务压力和使用场景组合,通过高负载,在使系统超过性能指标的情况下(如某项或多项指标超过安全极限值),从而发现系统处理业务的能力,以便收集系统的最大并发用户数,崩溃点下的TPS及崩溃点TPS下的资源(业务指标:TPS、RT,硬件指标:CPU使用率、MEM使用率)使用情况,目的是发现功能测试中非功能性缺陷。

4)稳定性测试(Endurance Testing):按生产的业务压力和使用场景组合,通过一定负载,在保证系统满足性能指标的情况下,按1.5~2倍的负载量来压测系统的情况下,测试系统在下长时间运行是否稳定,持续时间一般为:8小时~3*24小时。

5)吞吐量(TPS):系统每秒成功处理完成的事物数或请求数。

6)点击量(PV):每秒用户访问系统页面的次数。

7)响应时间(RT):系统成功处理完成每个事物或请求所需要的时间。

5.   角色说明

角色

职责

说明

测试经理

1)制定各类型的测试的测试计划

2)完成人员任务分配

3)协调在测试系统时所需要的资源

 

开发工程师

1)协助性能测试工程师,解决测试过程中遇到应用服务器、程序代码、底层运行环境(如:JVM)方面的问题。

 

性能测试工程师

1)协助测试经理完成计划的制定

2)制定测试流程、策略、控制测试流程、跟踪测试任务

3)组织与开发、产品人员针对系统的业务需求进行沟通

4)执行性能测试工作(测试环境、数据的准备、测试脚本的开发和维护,测试任务的执行,测试数据的采集和结果数据的分析、调优,性能测试报告的编写)

 

运维工程师

1)协助性能测试工程师,解决测试过程中遇到的网络、操作系统、数据库方面的问题。

 

配置管理员

1)负责将测试过程中各产出物进行备份和归档管理,包括(测试计划、测试用例、测试脚本、数据库脚本、性能缺陷报告、性能测试报告等)。

 

 

6.   进度计划

任务名称

计划开始时间

计划结束时间

交付清单

参与人员

需求分析

 

 

性能测试计划

 

测试进度计划

 

 

 

测试模型设计

 

 

 

编写测试计划

 

 

 

准备测试环境

 

 

测试环境搭建文档

 

开发脚本

 

 

测试脚本(数据库脚本、压测脚本)

 

测试数据

 

 

 

基准测试

 

 

测试结果数据(数据库、linux、中间件、jmeter)

 

负载测试

 

 

 

压力测试

 

 

 

系统调优

 

 

系统调优报告

 

性能测试报告编写

 

 

性能测试报告

 

7.   测试环境

7.1. 生产环境系统架构

 

7.2. 测试环境系统架构

 

7.3. 生产环境软硬件配置

硬件类别

数量

硬件

 

软件配置

 

(web应用服务器)

 

配置项

配置项说明

配置项

配置项说明

 

CPU

型号:PowerEdge R730 Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
逻辑CPU个数:16、物理CPU个数:8、CPU核数:2

操作系统

类型:Centos7
位数:64位

 

内存

容量:64GB

JDK

版本:JDK1.7
位数:64

 

磁盘

容量:2TB

Tomcat

版本:tTomcat8
位数:64

 

网络

千兆宽带

 

 

(数据库服务器)

 

CPU

 

操作系统

类型:
位数:

 

内存

容量:200GB

MySQL

版本:MySQL5.7.18
位数:64

 

磁盘

 

 

 

 

网络

20兆宽带

 

 

 

其他

 

 

 

 

7.4. 测试环境软硬件配置

硬件类别

数量

硬件

 

软件配置

 

Centos7虚拟机
(共9台机器,其中:java应用服务器:9台,共部署16个tomcat)

16

配置项

配置项说明

配置项

配置项说明

CPU

型号:PowerEdge R730 Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
逻辑CPU个数:16、物理CPU个数:8、CPU核数:2

操作系统

类型:CentOS7
位数:64位

内存

容量:64GB

JDK

版本:JDK1.7
位数:64

磁盘

容量:2TB

Tomcat

版本:Tomcat8
位数:64

网络

4个网卡

 

 

Centos7虚拟机
(共9台机器,C++应用服务器:4台,数据库服务器:5台,其中3台codis、2台mysql)

2+3=5

CPU

型号:PowerEdge R730 Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
逻辑CPU个数:16、物理CPU个数:8、CPU核数:2

操作系统

类型:CentOS7
位数:64位

内存

容量:64GB

MySQL

版本:MySQL5.7.18
位数:64

磁盘

容量:2TB

 

 

网络

4个网卡

 

 

其他

其他

1)由于是在dell一体机上,安装到的tomcat应用服务器及数据库服务器,因此,CPU、操作系统、内存、网卡、磁盘的配置是一样的,只是在部署各系统时分配的资源不一样
2)各机器的配置信息参考文档:性能测试环境_linux服务器和数据库服务器_配置信息汇总.xlsx

 

 

 

7.5. 负载机软硬件配置

硬件类别

数量

硬件

 

软件配置

 

负载机器
(实体物理机)

4

配置项

配置项说明

配置项

配置项说明

CPU

型号:Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz,3401 Mhz
逻辑CPU个数:8、物理CPU个数:2、CPU核数:4

操作系统

类型:windows旗舰版
位数:64位

内存

容量:16GB

JDK

版本:1.7.0_13
位数:64

磁盘

容量:300GB,模式:ADATA SP900 SCSI Disk Device

JMeter

版本:3.1
位数:32

网络

数率:100Mbps

 

 

其他

 

 

 

8.   需求分析

8.1. 业务模型

系统

模块

功能操作

具体的业务描述

某APP

登陆

用户登陆APP

用户注册APP成功,输入手机号和密码,进行登录APP的操作

 

 

 

 

8.2. 性能指标

8.2.1.业务性能指标

参考文档:

某公司_某APP_性能需求调研和分析_Ver1.1.0_2014-11-22_黄涛.xlsx

测试场景及业务性能指标工作薄

表中的未来业务量,是在预估未来3年的业务量,每天增长30%来计算得出的业务量。

8.2.2.硬件性能指标

性能测试通过标准

类别

判断维度

不通过

通过

备注

通用互联网服务端性能

超时概率

>0.05%

<=0.05%

 

错误概率

>0.05%

<=0.05%

 

TPS

<期望峰值TPS

>=期望峰值TPS

 

CPU利用率

>75%

<=75%

 

响应时间

>期望响应时间

<=期望响应时间

网页响应时间依据1s-优秀,3s-普通,5s-忍受极限,来判断

Load

平均每核CPU负载>1

平均每核CPU负载<=1

 

JVM内存使用率

>80%

<=80%

 

FullGC频率

平均<半小时1次

平均>=半小时1次

 

 

 

 

性能测试通过标准可以作为在测试具体系统时具体分析,本表的指标标准可以作为参考

 

 

机器类别

监控类别

指标名称

指标范围(通过)

Centos7虚拟机
(共18台机器,其中:java应用服务器:9台,C++应用服务器:4台,数据库服务器:5台,其中3台codis、2台mysql)

应用服务器(jvm和配置)

JVM

jvm内存占用率<=70%

线程池连接数

线程池连接数<=80%,没有出现线程阻塞、死锁现象

数据库活动连接数

数据库活动连接数<=85%

full gc频率

大于平均半小时1次GC

是否有异常日志

日志信息中,无错误信息如:OOM、及其他代码提示的错误

是否有OOM

没有年老代、持久代堆异常、栈异常及内存不够造成的异常

内存泄露

多次GC后,内存没有呈线性增长

数据库服务器(MySQL)

系统负载

系统负载(Load Average)<=系统中CPU的核数*个数*0.7

CPU占用率

总CPU占用率<=70%,其中%us<=50%或%sy<=50%,%wa<=20%,无热点CPU现象
关注(1-id)%:无性能压力:0%~50%、有一定性能压力:50%~70%、达到性能阀值:70%~90%、严重性能问题:90%~100%

内存使用率

使用的内存利用率<=70%,si so中值为0
使用的内存利用率:无性能压力:0%~50%、有一定性能压力:50%~70%、达到性能阀值:70%~80%、严重性能问题:80%~100%

磁盘

%util<=80%,await约等于svctm,r/s+w/s=iops根据磁盘来计算后来判断,%iowait<=30%

数据库连接数

关注:(Max_used_connections/max_connections)*100/%<=85%

是否有慢查询SQL

没有出现执行较长时间的SQL语句

死锁

没有出现SQL死锁

操作系统(Linux)

系统负载

系统负载(Load Average)<=系统中CPU的核数*个数*0.7

CPU占用率

总CPU占用率<=70%,其中%us<=50%,%sy<=20%,%id<=30%,无热点CPU现象
关注(1-id)%:无性能压力:0%~50%、有一定性能压力:50%~70%、达到性能阀值:70%~90%、严重性能问题:90%~100%

内存使用率

使用的内存利用率<=70%,si so中值为0
使用的内存利用率:无性能压力:0%~50%、有一定性能压力:50%~70%、达到性能阀值:70%~80%、严重性能问题:80%~100%

磁盘

%util<=80%,await约等于svctm,r/s+w/s=iops根据磁盘来计算后来判断,%iowait<=20%

带宽

网络使用率

<=系统带宽的30%,无丢包,无延迟,无阻塞

 

9.   测试策略

9.1. 测试执行策略

开始时间

结束时间

测试类别

测试目的

 

 

基准测试

1)验证系统性能指标是否符合预期指标要求
2)监控指标包括(业务资源指标:如响应时间、TPS,硬件资源指标:CPU、内存、数据库连接池、线程池等)
3)目的是获取系统在一定的业务量下,系统性能指标的数据

 

 

负载测试

1)验证系统在什么样的压力量下,系统处于处理极限处理的能力
2)监控指标包括(最优业务资源指标:如响应时间、TPS,最优硬件资源指标:CPU、内存、数据库连接池、线程池等)
3)目的是在保证满足预期性能指标要求下,获取最优的并发用户数、TPS、最优资源指标

 

 

压力测试

1)验证系统在超过系统极限处理能力下,系统是否还可提供服务
2)监控指标包括(最大业务资源指标:如响应时间、TPS,最大硬件资源指标:CPU、内存、数据库连接池、线程池等)
3)目的是在超过预期性能指标要求下,获取最大的并发用户数、TPS、最大资源指标

 

 

稳定性测试

1)验证系统在一定峰值的压力量下,系统处理服务能力的表现
2)监控指标包括(日常业务资源指标:如响应时间、TPS,日常硬件资源指标:CPU、内存、数据库连接池、线程池等)
3)目的是在保证满足预期性能指标要求下,系统能够以长期稳定的状态提供服务

9.2. 测试监控策略

监控类别

监控指标

监控工具或命令

APP前端

响应时间、吞吐量、TPS、点击率、超时概率、错误概率、页面性能

工具:ddms25、
页面工具:YSlow3.1、ChromDevTools(基于Chrome57)
综合工具:GT、Emmagee

应用服务器(jvm和配置)

JVM、最大线程数、DB连接数、full gc频率、是否有异常日志、是否有OOM、内存泄露、代码异常、线程死锁

工具:jvisualvm(基于JDK1.7)
工具:MemoryAnalyzer1.6
命令:jps jinfo jstat jcmd

数据库(MySQL)

系统负载、CPU占用率、内存使用率、磁盘、数据库连接数、是否有慢查询SQL、SQL死锁

命令:show processlist
命令:mysqldumpslow
命令:explain

操作系统(Linux)

系统负载、CPU占用率、内存使用率、磁盘、网络带宽(无丢包、无延迟、无阻塞)

命令:top uptime free vmstat
命令:iostat sar netstat
命令:tcpdump dstat

 

10. 测试场景

参考文档:

某公司_某APP_性能需求调研和分析_Ver1.1.0_2014-11-22_黄涛.xlsx

测试场景及业务性能指标工作薄

11. 测试准备

11.1.   测试工具准备

测试大块

测试子块

工具或命令

用途和说明

APP后端

同PC后端

同PC后端

同PC后端

PC后端

压力测试工具

工具:JMeter3.1或LoadRunner11

性能压力和负载测试工具

应用服务器(jvm和配置)

工具:jvisualvm(基于JDK1.7)

监控和分析应用服务器(如:Tomcat7、Apache2.4、Nginx1.1、WebLogic10、Redis3.2)中JVM的资源占用情况,参数文件配置项中是否有不合理的配置

工具:MemoryAnalyzer1.6

内存堆栈分析工具

命令:jps、jinfo、jstat、jstack、jhat、jcmd

监控JVM的使用

数据库(MySQL)

命令:show processlist

检查数据库中执行的SQL语句是否存在死锁的情况

命令:mysqldumpslow

分析和收集数据库中慢查询SQL语句数据

命令:explain

分析数据库中SQL语句的执行计划

操作系统(Linux)

命令:top free vmstat

分析和收集CPU使用率、内存使用率、磁盘IO

命令:iostat sar netstat

分析和收集网络IO、进程数、系统负载等

命令:tcpdump dstat

堆转出存储和综合指标数据收集工具

 

11.2.   测试环境准备

准备类别

具体说明

参与人员

完成日期

硬件设备准备完毕

测试真机准备完毕

测试人员(黄涛)

 

必要软件准备完毕

性能测试工具安装部署完毕,并可正常使用

测试人员(黄涛)

 

监控和分析性能的工具和命令安装完毕,并可正常使用(如:监控和分析APP前端、后端服务器、应用服务器、数据库、linux系统的工具和命令)

测试人员(黄涛)

 

系统部署完毕

系统冒烟通过,并在测试环境中部署成功

测试人员(黄涛)
开发人员()

 

 

 

 

 

 

 

环境验证完毕

系统网络环境正常稳定

 

性能测试环境部署完毕,并可正常使用(数据库、linux、应用服务器)

测试人员(黄涛)

 

 

11.3.   测试脚本和程序准备

准备类别

具体说明

参与人员

完成日期

压测的业务脚本

编写和调试好,压测各业务功能的脚本。

测试人员(黄涛)

 

构建存量业务数据脚本

编写和调试好,批量构建数据库存量数据的脚本,包括的业务有(登陆系统的用户账号数据)。

测试人员(黄涛)

 

 

11.4.   测试数据准备

 

 

系统

数据说明

数据量

参与人员

完成日期

某APP

可以正常登陆APP的用户

100万

测试人员(黄涛)
开发人员()

 

12. 交付清单

1)《性能测试计划》

2)《测试环境搭建文档》

3)《测试脚本(数据库脚本、压测脚本)》

4)《测试结果数据(数据库、Linux、中间件、JMeter)》

5)《系统调优报告》

6)《性能测试报告》

13. 项目风险

分类

风险措施

风险级别

规避方法

人员风险

人员经验不足,人力不够

储备人员及针对人员进行技能知识方面的培训

软件风险

系统发生较严重的缺陷,需要较长时间的修复,导致测试进度延迟

协助开发定位缺陷,并提出解决的方案,同时增加测试人力

进度风险

开发未按进度交付待测系统或冒烟测试未通过

延长测试时间或增加测试人力,低优先级的功能延迟测试

变更风险

测试过程中需求发生变化,导致工作量增加

及时变更测试计划,延长测试时间,或增加测试人力

系统风险

测试过程中,系统瘫痪,无法继续测试

启用备份系统,及时修复系统

数据风险

测试数据有误或不符合业务操作要求

测试前验证测试数据

环境风险

系统部署、网络等方面的影响

测试前检查部署的环境和网络的是否可用,增加测试资源

 

 某公司-某产品APP_Ver1.1.0_性能测试方案_2014-07-10_黄涛

posted on 2018-06-17 12:57  新美好时代  阅读(200)  评论(0编辑  收藏  举报