性能测试

合同XXX接口压力测试方案

LensNews

第一章:合同XXX接口压力测试概述
1、被测试系统定义
合同XXX平台作为本次测试的被测系统,该系统是由Java编写的一个四层架构的应用系统,后台应用了MySQL数据库,Redis缓存服务、zookeeper注册服务,该系统主要功能有:保存用户基本信息,合同签署。这些功能中都存在大数据的查询和插入,在本次测试中,针对这些大数据查询和插入的功能进行压力测试,检查并评估在测试环境中,服务器对负载的承受能力,通过各项性能指标表现情况来分析合同XXX的性能瓶颈

2、性能测试目标
发现应用服务的性能瓶颈
发现数据库的性能瓶颈

3、性能测试范围
本次性能测试是针对合同XXX平台在不同的用户压力情况下进行的,通过压力测试来获取:应用服务和MySQL服务器的业务处理能力以及CPU、数据库、磁盘和内存的指标数据。
3.1、应用系统的负载能力:即系统所能容忍的最大用户数量,也就是在正常的业务操作中,系统能够支持最多的并发用户数量。
3.2、应用系统的可靠性:即在连续工作时间状态下,系统能够正常运行的时间,即在连续工作时间段内没有出错信息。
3.3、应用系统的吞吐率:即应用系统在单位时间内完成的交易量,也就是在单位时间内,应用服务器针对不同的负载压力,所能完成的交易数量。

4、性能测试环境
本次性能测试环境与真实运行环境硬件和网络有所不同,是真实环境的缩小,数据库是真实环境数据库的一个复制,其中具体的硬件和软件环境如下:

第二章:合同XXX接口压力测试策略
从广泛意义上讲,性能测试包括:压力测试、可靠行测试、负载测试等,而压力测试是测试系统在一定饱和状态下,例如CPU、内存等在饱和使用情况下,系统能够处理的最大业务能力,以及系统是否会出现错误。
本次合同XXX的压力测试策略主要采用通常的压力测试模式来执行的,即:逐步增加压力来监控接口应用服务器、mysql数据库服务器在各种压力状况下的性能表现。

1、压力测试定义
在性能测试中,压力测试主要是为了获取系统在较大压力状况下的性能表现而设计实现的,压力测试主要是获取系统的性能瓶颈和服务器的各项性能指标。本次测试是针对合同XXX在应对大量用户压力下业务处理能力的测试,检验应用服务器以及MySQL服务器的承受能力。同时本系统的压力测试主要是针对主要是:保存用户基本信息、合同签署业务场景功能中进行的,检查在并发用户数较多的时候的服务器的处理能力等。

2、本次测试目的
压力测试的目的就是检验被测试接口的最大处理能力,检验当前的功能业务模块在各种压力情况下的运行状况,检验服务器地运行瓶颈,获取系统的处理能力等等。
本次针对合同XXX所进行的压力测试的测试目的为:
给出合同XXX当前的性能状况
定位合同XXX性能瓶颈或潜在性能瓶颈
总结一套合理的、可操作的、适合公司现实情况的性能测试方案,为后续的性能测试工作提供基本思路。

3、测试策略及测试用例
使用Apache的性能测试工具Jmeter,针对合同XXX系统进行脚本录制、测试回放、逐步加压和跟踪记录。测试过程中,实时监控服务器端的运行情况和返回给客户端的运行结果。
使用的测试用例包括:
场景一:用户登录->保存用户基本资料->保存学历信息->保存工作经历->保存家庭信息->创建合同->合同签署

针对每个测试场景,都将采用逐步加压【不添加集合点】和瞬间加压【添加集合点】两种连接方式进行,并分别查看服务器端在并发数量变化过程中对应的数据处理能力,以更好的定位系统在达到多少并发或压力下我们的系统出现了不稳定。而在本次压力测试中,将使用top命令和nmon命令监控和收集应用服务器的各项性能指标数据,通过天兔应用平台来收集MySQL数据库的各项性能指标数据,根据整理的指标数据分析合同XXX接口的性能瓶颈。

4、测试指标及期望
在本次压力测试中,各类测试指标包括测试中应该达到的某些性能指标,这些性能指标均是来自应用系统设计开发时遵循的业务需求,当某个测试的某一类指标已经超出了业务需求的要求范围,则测试已经达到目的,即可终止压力测试。

4.1、应用软件(PID进程)级别的测试指标:(单核处理器,多核的话,进行相乘)
CPU资源占用百分比:小于40% * 8 = 320%
物理内存占用百分比:小于80%*16G = 9.6G
不同并发用户数的状况下的记录上述值

4.2、网络级别的测试指标:
吞吐量:单位时间内网络传输数据量

4.3、操作系统级别的测试指标:
进程/线程交换率:进程和线程之间每秒交换次数
CPU利用率:即CPU占用率(%)
系统CPU利用率:内核空间CPU占用率(%)
用户CPU利用率:用户空间CPU占用率(%)
磁盘交换率:磁盘交换速率
中断速率:CPU每秒处理的中断数

4.4、数据库级别的测试指标:
QBS:queries per seconds 每秒钟查询数量
TPS:tranaction per seconds 每秒事物数
数据库的并发连接数以及线程最大连接数
Query Cache命中率...

5、压力测试准备

5.1、数据准备
根据测试系统的硬件条件,选择满负荷的压力,在系统的资源使用基本维持在90%左右的状况下,测试保存用户基本信息、合同签署的处理能力。
数据准备工作包括:测试数据库需具备与真实环境成一定比例或基本一致的数据
用户数据:可通过jmeter工具进行生成后插入到mysql数据表中,然后到处CSV格式即可
接口参数化:根据接口文档参数要求,提取、加工测试数据并进行接口的参数化,保证数据正确无误和唯一性

5.2、脚本准备
脚本准备是一系列的过程。其中最简单的方式就是打开被测试系统,通过jmeter的代理设置进行测试脚本录制。然后进行脚本的优化,包括数据数据提取、接口参数化、添加定时器、添加断言,添加监视器等

5.3、结果记录
记录压力测试中的测试结果及其服务器的运行状况。根据监控工具结合测试实时记录服务器各个层次的资源和参数。主要包括:硬件环境资源,服务器操作系统参数,网络相关参数,数据库相关参数

第三章:测试结果及过程描述
1、测试描述
在测试数据准备完成之后,压力测试即将进行。记录每次测试的结果数据,分析测试结果对系统进行全面评估

2、测试结果
执行每个场景时记录以下相应的数据:
服务类型                          方式一(已安装)                                                                方式二(已安装)
应用服务器(173)        top命令:CPU、内存、Load average                              nmon 命令
MySQL服务器(174)  天兔MySQL数据库监控(Threads、QPS、TPS等)      orzdba 命令

每2秒增加1个用户连接,最多增加到20个用户,持续10分钟,查看并记录运行情况:
命令:nmon -f -s 2 -c 300 -t (10分钟为600秒),2秒采集一次,总计采集300次,生成日志文件:/root/tools/nmon/datalog/
命令:top -b -n 60 -d 10 > /root/toplog/top.txt,每隔10秒中采集一次,采集60次,即是采服务器10分钟的运行状态
每2秒增加2个用户连接,最多增加到50个用户,持续15分钟,查看并记录运行情况:
命令:nmon -f -s 2 -c 300 -t (10分钟为600秒),2秒采集一次,总计采集300次,生成日志文件:/root/tools/nmon/datalog/
每2秒增加2个用户连接,最多增加到100个用户,持续20分钟,查看并记录运行情况:
命令:nmon -f -s 2 -c 300 -t (10分钟为600秒),2秒采集一次,总计采集300次,生成日志文件:/root/tools/nmon/datalog/
主要目的就是检查在不同的压力的情况下,业务系统的性能表现。

附录:数据导出与数据清理

(1)

本文由 小蜜蜂信息网 作者:admin 发表,转载请注明来源!

关键词:
LensNews

热评文章

发表评论