• 0
  • 0
分享
  • 压力测试流程——软件测试圈
  • quinn 2022-08-17 16:25:11 字数 1846 阅读 2188 收藏 0

一、压测流程

可参照上篇压测对抗流程

二、压测需求

需要明确需要压测的环境

需要压测的接口,其中包含接口的入参

需要明确接口的预计qps

需要明确线上机器配置

三、压测准备

3.1、服务端开发准备:

1.根据需要测试的接口,决定需要部署哪些相关依赖服务;

2.测试接口对应的服务、接口;

3.相关配置;

4.相关数据库;

5.需要的机器整理,其中包含机器的配置,需要几台机器。

3.2、前端开发准备:

1.测试的接口和服务应用;

2.域名;

3.需要准备的机器;

4.根据需要测试的接口,决定要部署哪些相关依赖。

3.3、测试准备:

1.准备压测的测试方案和测试计划;

2.通过接口确认压测的场景,其中包含每一个接口需要测试的场景,预计接口需要的压测线程。通过测试场景确认测试方案;

3.根据测试计划准备测试脚本;

4.根据每一个接口的情况准备对应的测试场景;

5.根据测试场景准备需要的测试数据。其中会包含登录账号相关,接口返回有数据相关等。建议可以将线上的数据库直接copy一份到压测环境中;

6.测试申请施压机器的权限;

7.施压机上准备压测需要跑的工具。

四、压测方案和计划

4.1、编写压测方案和计划

1.压测方案和计划的模板查看;

2.在测试方案中将信息进行整合和处理,其中包含需要测试的接口,每一个流程对应的时间节点;

3.测试方案和测试计划确定后需要跟对应的人员(包含服务端开发、前端开发、测试人员、前端运维、服务端运维等)进行评审,确认最终的流程的时间节点;

4.根据测试计划中的时间输出对应的结果。其中包含服务券和前端代码部署、机器申请和部署、测试的测试脚本输出。

4.2、测试编写测试脚本

1.确认测试接口是否依赖于登录,是否需要登录信息;

2.确认需要测试的接口属于atop接口还是http接口;

3.确认需要编写哪些脚本;

4.调试测试脚本;

5.自动化脚本或者jmeter脚本编写,可查看jmeter使用。

4.3、测试验证测试脚本

1.在日常环境对测试脚本进行验证,确定脚本能够正常跑;

2.对测试接口需要的准备数据进行整理;

3.对测试接口需要的断言进行准备。

4.4、施压机上对压测环境的验证

1.将测试脚本中对应的域名和数据等换成压测环境的数据;

2.在压测环境中对环境和脚本进行验证;

3.与开发调试压测环境中的问题,并调试脚本问题。

4.5、在压测环境中进行模拟压测

1.使用一个接口进行模拟压测,确认需要收集的图标信息、结果是否满足预期;

2.确认施压机和压测机器是否正常,是否需要更换;

3.确认需要采集数据的采集;

4.确认断言方式是否ok。

五、压测开始

5.1、正式压测:

1.开始正式压测,将各路人马(开发、运维、DBA等人进行封闭压测);

2.针对压测的接口进行决定接口压测的顺序;

3.压测中需要逐渐增加线程数量;

4.在压测过程中观察实时的qps和报错相关,并通知开发进行查询对应的接口响应时间;

5.根据接口的链路分别通知对应的人员进行查看压测过程中其接收时间、响应时间等。

5.2、当次压测结果分析:

1.当次接口压测结束后,对结果进行分析,确认压测后的qps、报错率、10%、50%、90%用户的响应时间;

2.开发寻找对应浪费的时间,当场进行优化后,可以针对此接口在进行压测,以便找到性能瓶颈问题;

3.压测结果最终是需要找到最大的qps和开始出现报错的并发数;

4.当前线程数对应的线程数,如没有达到对应的qps要求,可根据qps进行决定增加多少线程数。若线程数增加后,qps没有提高,大致已经找到qps的极限。

5.3、稳定性测试:

1.找到比较稳定的qps对应的线程数,进行稳定性测试;

2.稳定性测试与压测的区别在于持续的时间;

3.可通过稳定性测试进行观察持续性调用接口时系统的表现;

4.后续可根据稳定性测试和压测的qps进行计算出对应的每日能够承受的日活量。

六、压测后测试报告整理

1.测试报告整理

a.对此次压测进行整理测试报告;

b.测试报告中需要记录压测对应的时间节点、此次压测对应的qps、此次压测中的错误率;

c.此次压测10%、50%、90%用户的响应时间;

d.压测过程中出现的毛刺时间节点;

e.压测过程中曲线不正常对应的原因;

f.此报告需要开发、测试同步进行整理;

g.测试记录压测数据和图标;

h.开发记录对应系统的cpu使用率、负载、数据库负载等信息;

i.测试报告模板。


作者:weixin_45879397

原文链接:https://blog.csdn.net/weixin_45879397/article/details/123011905

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   需要提前说明下的是到目前为止,笔者还没有达到一个合格的测试架构师的标准,但是应该是已经走在这条路上了,所以想通过自己的成长经历给其他想朝这个方向发展的同学有点启发,同时也期望能够抛砖引玉。       先说说笔者的初始条件(应该很多人看了都会有更多的自信吧):一个普通本科学校,虽然是科班出身,但是除了大学的课程设计以及其他需要写代码的功课外,基本上没有去主动写过代码,更别说去研究linux内核等等高大上的事情了,反正基础是很差的(你别问我大学都干嘛去了,我也不知道,反正兼职,泡妞,打球,游戏,图书馆,考研等全都干过,就是没有去专研过代码),所以,毕业后程序猿的...
            14 14 2636
            分享
          • 在面试时,经过寒暄后,一般面试官会让介绍项目经验。常见的问法是,说下你最近的(或最拿得出手的)一个项目。根据我们的面试经验,发现有不少候选人对此没准备,说起来磕磕巴巴,甚至有人说出项目经验从时间段或技术等方面和简历上的不匹配,这样就会造成如下的后果。第一印象就不好了,至少会感觉该候选人表述能力不强。一般来说,面试官会根据候选人介绍的项目背景来提问题,假设面试时会问10个问题,那么至少有5个问题会根据候选人所介绍的项目背景来问,候选人如果没说好,那么就没法很好地引导后继问题了,就相当于把提问权完全交给面试官了。面试时7份靠能力,3份靠技能,而刚开始时的介绍项目又是技能中的重中之重,所以本文将从“...
            0 0 1619
            分享
          •   1、正则表达式  正则表达式是 Python 中匹配模式、搜索和替换字符串、验证字符串等的最佳技术。现在,您无需为此类工作使用循环和列表。  查看以下关于验证电子邮件格式的正则表达式片段代码示例:  # Regular Expression Check Mail   import re   def Check_Mail(email):      pattern = re.compile(r'([A-Za-z0-9]+[.-_])*[A-Za-z0-9]+...
            0 0 950
            分享
          •  一、API调试常用解决方案1、Postman + Swagger + Mock + JMeter作为一个后端开发,我做的大部分项目一般都是基于 Swagger 来管理 API 文档,基于 Postman 来做接口调试,基于 JMeter 来做接口性能测试,基于 RAP 等工具 Mock API 数据。2、存在的问题(1)多系统数据不互通API设计者、前端开发、后端开发、测试人员大量重复工作。(2)效率低可视化程度低、操作不友好。(3)无法团队协作单机离线使用为主,成员之间无法实时同步数据,无法协作。(4)学习成本高初学者难以入手,需要大量的学习成本、培训成本。(5)数据一致性困难每...
            0 0 772
            分享
          •   25岁一般来说也就是本科或专科毕业3年左右,有过一定的工作经验和阅历,同时还保留一部分棱角。25岁只能说是你人生刚起步,之所以会有这个年龄层面的顾虑就是因为各种互联网报道到处鼓吹35岁危机,其实在哪一行都会有危机,如何平稳度过这些所谓的危机,关键点在于你是否具有相关的核心竞争力。  这些报道数不胜数,比如某某高速路收费工作人员,当信息化时代来临被迫下岗时,只能无言的对着镜头说我今年36岁了,除了收费啥也不会,而且也学不会了!,这就属于典型的没有核心竞争力,正如央视主持人张泉灵所说:安逸的生活已经不再适合这个高速进步的时代,当时代抛弃你时,连一声再见都不会说的!  在25岁的年龄,能意识到行...
            0 0 105
            分享
      • 51testing软件测试圈微信