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、铺底数据量压测环境与生产环境差异
作者:京东物流 朱飞 来源:京东云开发者社区
|