• 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


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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 软件测试 是软件开发周期中的一个阶段,在此阶段中,对关键业务软件进行正确性,质量和性能验证。软件测试中有四个基本级别,每个级别都在开发过程中从独特的角度检查软件功能。本文详细介绍了集成测试,这是软件测试的第一级。 什么是集成测试?集成测试是软件测试的一个级别,其中将各个单元组合并进行测试,以验证它们在集成时是否按预期工作。这里的主要目的是测试模块之间的接口。由于多种原因,仅单元测试是不够的,例如:模块/单元通常由单独的软件开发人员设计,其技术和编程逻辑与其他程序员不同通常在模块开发时,用户需求会发生变化,并且这些新需求可能未经过单元测试。这引发了问题在单元测试期间,有时会遗漏诸如数据...
            0 0 744
            分享
          •   做软件测试要想保质保量,就要做到测试充分,什么是测试充分,就是把所需要覆盖的场景都要覆盖到。  如何做到场景全面覆盖,特别是在时间紧任务重的时候?  我把我这些年来工作的一点经验总结一下分享给大家,希望对大家有点帮助:  No.1 提前介入测试  那么什么时候测试介入比较好?在需求明确下来进入开发之前,测试就可以介入了解需求的相关内容了。  这块一般有两个阶段:  第一个阶段是需求澄清阶段,这个阶段就是需求接口人向开发讲解需求的详细要求及实现功能,这个时候测试就可以参与进来一起听,听过之后我们就对这个需求有了一个大概的了解,知道了这个功能的是要做什么,输入输出是什么,为后期了解详细的实现方...
            14 13 1885
            分享
          •   2022软件测试行业前景如何?结果你来预测。链接:http://vote.51testing.com/   原则(Principles ),是每个人在行事中所遵循的准则。每个人都有自己的原则,或成人,或尚处襁褓。软件测试也有一套原则让每位软件测试从业人员去遵循,这些原则是前辈们前仆后继在无数的坑坑洼洼中总结出来的。  软件测试的原则是指帮助测试团队有效地利用他们的时间和精力来发现测试项目的隐藏bug的指导方针。从实际的实践和研究中,研究了以下 7 条软件测试的基本原则,以便测试人员在软件测试领域广泛应用。  原则一:测试证明软件存在缺陷  时至今日,依然有不少人容易犯错:没有发现错误的测试...
            0 1 1832
            分享
          •   1. 测试想法生成器  可以使用ChatGPT技术,帮助我们扩展或优化测试思路、测试场景、测试数据等;  比如针对SCRM/CDP/MA等,可以根据GPT给出的初始想法来检查我们的测试思路,来提高测试覆盖程度,减少项目缺陷。  2.优化测试流程  通过向ChatGPT输出,可以得到如何优化目前的测试流程,来提高效率以及质量。  3.分析需求的关键语句  当我们拿到需求文档之后,如果文档中的话术存在二义性,我们可以尝试使用ChatGPT进行分析该话术在特定的场景下的多种解释。  4.快速融入项目  在进入一个不熟悉的业务线系统中,可以通过向ChatGPT请教一些基本的测试方法,来达...
            0 0 808
            分享
          • 接着上篇《深聊MySQL之:让orderby、Groupby查询速度飞起来(上)》我们今天继续讨论如何让orderby,groupby 的查询速度起飞 3、order by 优化我们了解了order by的原理,那么我们就来看看,优化order by 有什么技巧。3.1 添加合适索引3.1.1 排序字段添加索引①首先我们看下对 d 字段(没有索引)进行排序的执行计划:explain select d,id from t1 order by d;执行结果如下:发现使用的是 filesort(关注 Extra 字段)。...
            1 0 7246
            分享
      • 51testing软件测试圈微信