• 6
  • 5
分享

Performance Test Report 

项目XXX项目二期
版本V1.00
作者dayu
日期2019.9.31

1. 测试概述

1.1 测试目标

描述本次测试的意义和目标

本次测试的目的在于探查XXX项目二期重构环境的系统业务处理性能,以及在高负载情况下的系统表现。

1.2 指标和术语

描述本次测试中涉及到的性能指标术语

术语释义

并发数

测试时同时系统发出事务请求的数量,并发线程数用以模拟同时与系统建立连接的用户。
TPS(每秒事务数)

在每秒时间内系统可处理完毕的事务数。TPS很大程度体现系统性能能力。

错误率

经系统处理的事务出现错误的概率,对应着实际用户使用系统功能失败的情况。理想情况下错误率应保持极低水平。
资源占用率服务器端各关键资源的使用比例,用于衡量系统硬件能力

2. 环境、工具

列出本次测试所涉服务器、客户机和测试工具

2.1 测试环境

服务器:

应用机器CPU、内存配置
APIip地址16核CPU、内存16G
MYSQLip地址16核CPU、内存16G

客户机:

操作系统CPU内存
Windows10 专业版I3- 4170 3.70GHZ8G

2.2 测试工具

核心工具版本备注
Jmeter3.3提供并发请求能力
PerfMon Metrics Collector2.1Jmeter插件,用于收集服务器资源使用信息
ServerAgent2.2.1以伺服形式发送服务器资源使用信息
nMon16h v2实时收集服务器资源信息

3. 测试方案

3.1 测试类型

不同的性能测试场景可能使用不同的测试类型,需要明确

本次性能测试将主要采用以下几种测试类型:

l 基准测试:

在小并发条件下,探测系统各性能指标表现,作为后续比对基础。

l 压力测试:

由于无法准确预估用户访问量,因此考虑使用压力测试方法。压力测试旨在通过不断 增加系统并发处理事务数,增加系统负载,直到系统到达性能瓶颈。以此推算出系统 可承载用户和事务请求数。

 l 稳定性测试:

将系统置于较长时间高负载场景下,探测系统是否出现稳定性缺陷。

3.2 业务模型

针对系统接口,究竟哪些需要被纳入压测范畴?不同事务应该以何种比例被调用,这是需要建模设计的,也是性能测试的难点之一。

通过对于项目架构和业务场景分析,设计以下业务模型进行模拟和测试:

场景1:简单业务场景

业务名称接口地址请求类型并发比例
登录/loginpost1
查询用户信息/queryMemberInfoget1

场景2:混合业务场景

业务名称接口地址请求类型并发比例
登录/loginpost1
查询用户信息/queryMemberInfoget1
交易查询/listOrderPageget1
订单创建/createOrderpost1

3.3 加密验签处理

由于系统对于所有事务请求都进行了加密验签处理,因此在本次性能测试中,需要对请求报文进行一致的加密和签名。处理逻辑如下:

l 使用APP同样的加密签名代码,导出jar包做为加密工具类

l 使用jmeter前置处理器-beanshell处理器调用上述jar包方法实现请求参数加密

l 将加密签名后的请求参数存储为变量,后续接口调用时使用

3.4 压力梯度

对于3.2所述场景,分别进行梯度加压,从100并发开始,每次递增100并发数,直至到达系统瓶颈。

4. 测试结果

4.1 聚合报告

标签
样本数平均(响应时间ms)最小最大错误率吞吐量(/s)

登录

502820380.00%4.5977
查询member信息501602129220420.00%4.07133
查看交易507055129200.00%4.37828
创建订单5086601190.00%4.55083
总体2006052020420.00%15.11716

场景1-10并发-循环5次

标签样本数平均(响应时间ms)最小最小错误率吞吐量(/s)
登录500761240267250.00%15.84987
查询用户信息500308712369497190.00%6.96233
总体10001924140497190.00%13.91517

场景1-500并发-循环1次

标签样本数平均(响应时间ms)最小最大错误率吞吐量(/s)
登录550832633223600.00%20.34851
查询用户信息550360714362584850.36%6.7585
总体11002219933584850.18%13.51069

场景1-550并发-循环1次

标签样本数平均(响应时间ms)最小最大错误率吞吐量(/s)
登录45001240887462690.00%4.68807
查询用户信息4500353833792650360.00%4.63027
查看交易450022832711468120.02%4.64518
创建订单45002497381586980.13%4.67591
总体180002389981650360.04%18.50308

场景2-450并发-循环10次

 4.2 系统吞吐量

 图1.png

 场景1-550并发-循环1次

 图2.png

 场景2-450并发-循环10次

 4.3 资源占用率

最优负载条件下:

CPU使用率

 图3.png

 内存占用率

 图4.png

 磁盘使用率

 图5.png

5. 分析和建议

结合收集到的数据,给出对于系统性能关键点的分析

5.1 测试结论分析

经过多次测试和数据报表分析,可以得出如下结论:

1) 当总体并发用户数为450-500时,系统具有最优性能表现;当事务并发数超过500时,事务失败率整体上升,系统到达性能拐点。

2) 多事务混合条件下,系统巅峰TPS在90左右,平均吞吐量在13-18/s。

3) 在小压力条件下(10并发),最大事务响应时间为查询用户信息事务的2042毫秒,平均在600毫秒左右系统。整体事务微观响应速度较优。

4) 满负载条件下,登录具有最佳的性能表现,平均响应时间为7000-12000毫秒;查询用户信息事务性能较差,平均响应时间在30000-40000区间。满负载条件下系统整体微观响应时间较差。查询用户接口由于其使用极为频繁,建议进行SQL效率调优

5) 系统资源方面,内存占用率始终处于高位水平(90%以上),磁盘空间由于日志写入而不断被占用。

5.2 问题

测试过程中发现了如下显著问题:

1) 加密验签功能并未生效-现阶段任何签名均可通过验签。属于功能性问题,不影响性能表现。

2) 日志文件由于不断写入导致磁盘占满,建议调低系统日志级别,并做好定期日志备份。

3) 内存占用处于高位水平,需要进一步探查原因。


作者:大宇yu

原文链接:https://www.cnblogs.com/dayu2019/p/11636279.html


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 一、什么是Appium?1. Appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。2. Appium支持iOS、Android及FirefoxOS平台测试。3. Appium使用webdrive的底层协议,来驱动iOS系统的XUCITest库、Android系统的UIAutomator框架。二、有哪些特点?跨设备跨架构(不同版本的Android和ios)跨语言,支持多种程序语言开发测试程序,基本上 Selenium 支持开发的语言,appium 都支持,比如:pyhton、java、Ruby、js、php、C# 等。跨app,可以在多个A...
            0 0 1920
            分享
          • 接口 提到接口测试,免不了首先需要知道什么是接口,接口也就是平常工作当中经常提到的API,英文全称Application Programming Interface,现在市面上有非常多种风格的Web API,目前最流行的是也容易访问的一种风格是REST或者叫RESTful 风格的API。什么是接口测试和为什么要做接口测试?接口测试顾名思义就是对测试系统组件间接口的一种测试,接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。那我们为什么要做接口测试呢,现如...
            0 0 1997
            分享
          • 1、了解软件的原始需求(测试目的)在编写一个软件或者模块的测试用例时候,一定要明白这个功能的原始需求,也是软件的使用者(客户)的需求。理解原始需求后,编写的测试用例才更有目的性。2、熟悉软件的功能需求(测试点)这个功能需求是指软件的细化需求点,这个一般在需求文档里面都会体现。这里要做的是把 “粗略”的需求,细化成一个个小需求点。熟悉功能需求后,要知道软件是怎么使用的,这也才能覆盖到各种操作。总之,测试用例一定要全部覆盖所有的需求点,这是基本的一点。3、熟悉软件的实现原理(测试点)在理解原始需求和软件的功能需求后,根据需求编写的测试用例,基本上都能覆盖得比较全面了。在此基础上,熟悉软件的实现原理...
            0 0 1281
            分享
          •  时间都去哪里了敏捷迭代和团队协作,前后端分离的工作模式几乎是每个互联网公司的常规工作模式。前后端分离,各自开发的优点很多,其中一项是它只需要提供一个统一的API接口,即可被web,iOS,Android等多个客户端使用,效率大大提高。但生于敏捷,死于迭代,困于团队协作常常是这种软件研发模式的一大弊病。 随着项目不断推进、变更,项目越来越大,维护成本也越来越高。由于某些公司接口文档管理方式采用wiki及html,openapi形式,版本迭代较快,接口常常变更,成员间update和文档维护却常常跟不上。在API管理方面越到后期越存在着可观且隐形的“人力资源”浪费:文档老旧不可用,新人上...
            13 13 1602
            分享
          •   小鹏汽车 CEO 何小鹏18日分享了智驾团队在德国拍摄的高速 NGP 测试视频,并称当前“进展不错”。  何小鹏表示,位于德国的团队反馈,小鹏 XNGP“感知泛化能力极强”,拿到欧洲之后几乎可以直接上路,而且受过国内交通路况“博弈训练”的智驾软件,在海外的体验格外流畅。“从技术层面上来看,高阶智驾全球都能用指日可待。”  本月早些时候,近千台小鹏 G9 发运德国,为小鹏汽车有史以来单次最大规模的海外发运。据悉,此次出口总值超过 5 亿元,创中国高端智驾纯电汽车单船出口价值第一。上月末,小鹏汽车宣布正式进入德国市场,并将于今年 5 月开始在德国销售小鹏 G9 和小鹏 P7 的国际版车型。  ...
            0 0 716
            分享
      • 51testing软件测试圈微信