51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 704|回复: 1
打印 上一主题 下一主题

谈谈压测方案的那点事

[复制链接]
  • TA的每日心情
    无聊
    2024-10-29 09:20
  • 签到天数: 76 天

    连续签到: 1 天

    [LV.6]测试旅长

    跳转到指定楼层
    1#
    发表于 2023-11-16 10:36:06 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    前言
    在现阶段大促备战的压测不算是一件新鲜事,已经不存在什么技术瓶颈或者资源问题,每个团队都有很多人能够执行性能测试,在一些团队也已经落地了日常常态化,但压测也没有简单到只在压测平台上设置参数、运行脚本,然后去看压测报告中某个指标是否满足压测目标那么简单,我平时也跟一些同学一起做过性能测试,发现在压测过程中存在一些细节问题,有些同学做但不是很理解,压测方案对于性能测试来说是尤为重要一环,今天把对于压测方案方面的一些理解跟大家一起探讨一下;
    性能测试的本质是模拟生产环境的用户,构造用户真实的行为请求,对尽量真实的压测系统施加压力,验证系统性能是否满足业务需要,是否存在性能瓶颈;
    从里面可以看出核心的几个点:压测目标、压测场景、压测环境,今天主要从三大块来说
    一、压测目标
    我们在制定压测方案去说起压测目标的时候,很多同学都直接的考虑到TPS、QPS、TP99这些,
    忽略了很重要的一项内容就是压测背景,就是因为什么原因我们要做这次压测,压测背景是我们压测的的方向,如果方向错了就会导致我们费时费力压测完成之后,压测的结论是没有意义的
    那么压测背景和压测目标的关系是啥呢?
    说一下我们现在常见的几种压测背景:
    1、大促期间调用量对比平常明显有增长的业务
    目标:是否能够支承大促预估峰值流量(业务预估+业务增长+大促增长)+单机房承载量+ 接口能支撑多大的调用量
    结论:xxx配置最优/最大吞吐量xxx,能够支撑本次大促预估峰值调用量xxxx,是否存在风险;
    2、上次大促压测过,但是之后新增/修改过的内容
    目标:接口性能是否有变化+是否能够支撑大促预估峰值流量+接口能支撑多大的调用量
    3、新增的接口,没有压测过,有业务预估调用量
    目标:接口是否能够满足业务预估调用量(极限)+ 正常
    4、新增的接口,没有压测过,没有业务预估调用量
    目标:接口性能评估,系统性能是否存在瓶颈?有无优化空间?
    5、新增的接口替换老接口
    目标:接口性能评估,是否能够满足老接口的业务调用量+新增业务调用量
    6、老接口的性能优化
    目标:对比优化前优化后的性能指标,是否有优化效果
    7、大促期间峰值调用量相比日常调用量没有明显变化,但是高峰时间拉长的业务
    目标:峰值流量稳定性压测
    8、没有太大的调用量,但是用户对于用户体验要求比较高
    目标:接口响应时间是否有感官上的延迟,关注TP99,是否需要优化
    9、不知道系统是否需要扩容
    目标:极限压测,应用服务器和数据库资源使用情况是否合理
    10、已知链路、接口性能比较慢,我需要知道瓶颈在那里
    目标:找到链路、接口体系上的薄弱点(可优化内容)
    二、压测场景
    业务模型的调研和构建是我们压测前期工作中最为核心的一个环节,业务模型的创建要以实际生产环境系统业务操作模式为依据,只有模型符合实际的生产业务使用模式,性能测试的结果才能真实有效的反应上线后系统的性能情况,业务建模好坏直接决定性能测试执行的成功与否,也就是我们所说的压测模型
    业务建模的过程中要分析清楚三件事情:
    1、产生流量场景有哪些?如何选择需要压测的场景?
    2、各场景和交易之间流量如何分配和设计?
    3、要达成测试目标需要构造铺地数据需要多大的量,这些铺地数据该如何分配和部署;另外需要业务模型设计数据,数据要如何分配和构造
    其实要做的就是在了解清楚业务并在其基础上完成:业务模型、流量模型及数据模型。

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2024-10-29 09:20
  • 签到天数: 76 天

    连续签到: 1 天

    [LV.6]测试旅长

    2#
     楼主| 发表于 2023-11-16 10:36:22 | 只看该作者
    1、业务模型
    一般从业务运营视角、技术运营视角、线上问题分析以及测试经验四个维度进行收集、整理和提炼:
    业务运营:从实际业务应用的角度收集用户实际的使用情况和业务增长的趋势,比如我们有几个业务调用来源,平时用户使用最多的场景是那些,用户操作的高峰时段是什么时候?
    技术运营:从技术运营角度去梳理我们接口实现逻辑的调用链路,比如说调度工作台线路展开查询,线路下任务低于20条的会去调异常接口,高于20条的不调异常接口;比如说查询接口实现的方式,走缓存还是走数据库;
    线上问题:根据用户反馈和线上问题的收集,结合线上问题修复的方式;比如说一线反馈xxx操作会感知响应比较慢,研发在优化这个的时候会覆盖哪些用户操作场景
    测试经验:根据测试经验来完善业务模型
    2、流量模型
    在业务场景确定后,就要思考各个场景和交易之间流量如何分配?。
    生产环境的用户操作场景比较复杂的,请求报文的大小和请求路径也各不一样,使用单一的请求报文进行压测是不合理的,在流量模型分析的过程中有两种思考方式。即用户行为模型和系统业务模型。
    用户行为模型:通过描述高峰时期用户行为特点,通过对用户行为调研分析,归纳总结出用户行为模型。比较常见的就是现在的流量录制,在业务高峰时间录制业务流量,然后进行流量回放,优点是实现起来比较简单,缺点是录制的流量用户行为较难统计分析。
    系统业务模型:根据高峰时期系统业务特点,通过系统日志、数据埋点等方式获取高峰时段系统业务流量,获悉用户的主要流量行为,然后通过自己编写脚本和配置流量占比的方式来实现,优点是用户的流量占比比较清晰,缺点是要有数据的人工归类分析过程
    3、数据模型
    设计完成业务模型和流量模型,还要清楚需要多少基础数据(也叫铺地数据),铺底数据目的是测试时尽可能的与线上保持一致(至少数量分布一致),不管是哪类数据库,对于不同体量的数据,所走的查询器选择都是不一样的。几百行的数据走全表扫描肯定比走索引要好,但如果是几百万行呢?这方便需要我们具体地做评估。一般来说数据量要按照实际生产环境的数据量为多少为基础,在性能测试环境做等量代换。
    总结:多少用户(WHO)在什么时间或者持续多长多久(When),在多大的数据量的基础上(How much),完成了什么业务(What),最终需要关注怎样的指标(How)。
    举例:
    单接口压测(调用方式不同):
    1、默认页面打开自动查询,查询每页默认20条记录,也是最大的用户形式
    2、通过接口调用,接口每页最大返回条数是1000条
    单接口缓存压测:
    • 走缓存 10分钟
    • 不走缓存 10分钟
    • 部分命中缓存,部分未命中缓存,10分钟经历5分钟缓存失效
    单接口混合场景压测:
    调度工作台-分页查询用户权限内线路,不同的用户行为
    1、1天1个区域查询量
    2、1天7个区域查询量
    3、混合场景(7天1个区域10%,1天7个区域20%,1天1个区域70%)三种
    单应用多接口混合压测:
    根据调用量进行接口调用配比
    单业务接口混合压测:
    适用场景:
    运营指标看板(链路大屏页面,常用用户大概在150人左右),在用户访问大屏的同时调用五个接口方法:
    用户初始进入页面后,默认无查询条件调用5个接口
    用户在此页面停留,每隔30s自动刷新页面内容调用5个接口
    用户手动录入查询条件,点击查询自动执行查询操作调用5个接口
    极限压测:
    【618备战压测-执行核心流程极限压测】测试方案
    双实例线性增长验证
    全链路压测:
    【备战618性能测试-运输ORC接单】性能测试报告
    系统稳定性压测
    满足业务需求后,持续加压一段时间(4-6)验证系统稳定性
    三、压测环境
    1、优先考虑线上环境
    2、压测环境与生产环境吞吐量差异,单实例压测和双实例压测怎么选择
    3、压测环境与生产环境差异
    4、铺底数据量压测环境与生产环境差异

    作者:京东物流 朱飞
    来源:京东云开发者社区

    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-24 19:51 , Processed in 0.065782 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表