给学性能测试的朋友一份思维导图

前言

谈起性能测试,大家经常聊的是高并发、高可用、性能优化、全链路压测等Topic,听起来都挺高大上,但这些概念追本溯源,还是要落到性能测试基础的东西上。比如需求分析、场景建模、测试方案、性能分层、指标监控、结果评估和优化本身上面。在上家公司离职前一天,我给测试同学做了一场性能测试基础知识分享和全链路压测演进的分享,这篇文章,整理了基础部分的一些知识和我自己的思考,供大家参考。


思维导图


知识体系

基础指标

简单来说,性能测试实际上主要关注如下三点:

  1. 速度:TPS、RT ;

  2. 容量:吞吐量、PV、Hit;

  1. 资源:CPU、Memory、DiskIO、Network、文件句柄数;


性能分层

性能测试领域,要在评估调研阶段就考虑性能分层的影响。在性能分析和优化阶段,也要考虑不同层级对整体性能的影响。我将它们分为如下六层:

  1. 网络层:主要指带宽、网段、防火墙等设施,当然,CND之类的资源,也可以划分在这一领域;

  2. 网关层:网关是请求入口和业务接入层,一般登录验签调用、加解密鉴权、限流等操作,都是在网关进行;

  1. 应用层:无论是前端的渲染展示还是后端的逻辑处理,都可以理解为应用层;

  2. 中间件:中间件包含缓存、MQ、JOB、DTS/DRC/DAL、配置中心等一系列组件;

  1. 存储层:一般指数据存储和文件存储层级,典型的组件有MySQL、HDFS;

  2. 物理层:无论是云服务还是自建机房,物理硬件层面都可以归纳到这一层;


需求调研

  1. 项目背景

  1. 版本迭代&独立项目&新建服务&系统重构&性能优化;

  1. 测试目的

  1. 超卖&高并发&扩容性&配置验证&资源耗用;

  1. 系统架构

  1. 技术架构:服务间的依赖关系,包含缓存,MQ等信息;

  2. 网络拓扑:请求-域名-SLB/HA/Nginx-web-app-DB以及外部依赖;

  1. 场景模型

  1. 业务场景:业务场景的多样性和特殊性以及对脚本开发联调&数据预埋的影响;

  2. 业务模型:只读、读写、批处理、定时Job;

  3. 业务配比:被测场景占总体场景的业务量占比(公式:被测场景/总业务量*100%)

  1. 选取业务峰值的数据,单独统计;

  2. 如果各业务占比类似,则按照比例转化;

  3. 如果比例差距大,则按照区间单独统计分析;

  1. 环境配置

  1. PRE&PERF、app&Redis&MQ&DB&网络&网段&&带宽&防火墙,是否独享资源隔离等;

  1. 性能指标

  1. 业务指标:DAU、GMV、注册用户数、在线用户数、活跃用户数、增长趋势等;

  2. 系统指标:协议类型、长短链接、同步策略、加解密、JVM内存分配、容器线程数&连接数&Timeout、MQ-Cousumer数量;

  3. 压测指标:QPS、TPS、ART、99%RT、Success%;

  1. 数据类型

  1. 数据铺底量;

  2. 是否有敏感数据需脱敏;

  3. 限制条件(时间&次数&权限);

  4. 自增、唯一、UUID、加解密、幂等;

  1. 关键时间

  1. 提测时间、验收时间、上线时间;

这里给大家准备了我从大学到大厂工作的软件测试资料,无偿分享给大家,需要的可以自取wenruo.ysepan.com

模型场景

  1. 业务模型:业务场景、流量转化漏斗;

  2. 测试模型:关注核心场景,过滤无关及非核心业务;

  1. 场景模型:从系统架构设计层面出发,关注不同层面,提升性能!

  1. 基准:单机单服务单接口;

  2. 并发:设定阈值,观察水位;

  3. 容量:阶梯式加压、性能拐点、资源瓶颈;

  4. 异常:容错处理、监控告警、容灾恢复演练;

  5. 稳定性:长期稳定正确提供服务的能力,可用性SLA;


测试方案

  1. 项目背景:说明项目开展的背景及目的;

  2. 测试方案:针对项目涉及的场景,测试实施的大体方案;

  1. 实施准则:任何项目,都要有准入准出和暂停中止准则;

  2. 性能模型:针对具体的场景,设计的性能模型最好经过评估验证;

  1. 测试策略:针对测试模型所采用的不同的测试策略,同步的测试策略要达成什么样的目的;

  2. 性能指标:业务指标是多少?转化的技术指标是多少?冗余范围有多大?

  1. 准备工作:其中包含环境、数据、脚本、监控等准备事项;

  2. 组织结构:整个项目中涉及哪些事项?不同事项的负责人是谁?交付时间是什么时候?


结果评估

在性能测试实施过程中,准确定义和描述性能测试结果,及针对不同结果进行模型分析,是很重要的一项能力。

  1. 性能实施方法论

  1. 基于指标构建;

  2. 建模是分析的过程和结果;

  3. 基于真实环境的系统模拟;

  4. 压测实施过程是整体的核心;

  5. 需要设定统一的目标、流程、分析方法、组织结构;

  1. 正确描述性能结果和过程的术语

  1. 瓶颈描述:什么场景执行了什么策略/操作,因为什么原因导致了什么结果

  2. 解决方案:优化了哪里?验证的方式及结果?是否满足预期&是否解决了发现的问题?

  1. 性能分析层级

  1. 业务分级:业务-场景-数据-架构-参数;

  2. 技术分级:引擎-网络-应用-中间件-数据库;

  1. 工具:关注指标,从结果反推过程;

  2. 配置:线程、连接数、Timeout、长短链接、同步异步、路由转发;

  3. 应用:日志、硬件配置、资源使用率;

  4. 中间件:Job、缓存命中、消息堆积、Consumer配置;

  5. 数据库:资源耗用、库表结构、表锁行锁、活跃连接数、最大连接数;

  1. 性能拐点

  1. TPS增长放缓,RT快速上升;

  1. 性能交叉点

  1. 模型上的TPS和RT交叉节点;

  1. 性能平衡点

  1. 重点关注业务可接受的最大RT;

  1. 性能衰减点

  1. timeout参数&TPS急剧恶化抖降&RT快速飙升;


脚本设计

  1. 什么时候需要做脚本关联?

  1. 服务端结果动态返回,非幂等;

  2. response body的参数需要向下透传;

  1. 如何理解并发和事务的区别?

  1. 并发指的是同一时刻服务端接收到的请求数,而非压测引擎的并发线程/RPS;

  1. thinktime怎么用?

  1. 它有什么效果?

  2. 是否存在真实的业务场景?

  3. 是否影响整体的压测场景和服务资源?

  1. 主要关注哪些指标?

  1. 并发数、TPS、ART、99%RT、CPU%、Memory%、systemLoad%;


典型特例

  1. 文件存储优化

  1. 原理:文件/图片存储在源节点,利用CDN缓存各种变更和路径。CDN未命中,回源节点处理并返回,同时同步最新的变更和路径到CDN。

  2. 优点:节省存储成本,提高查询展示渲染性能,灵活满足业务。

  3. 注意事项:大文件分块存储,避免局部过热导致单机磁盘IO过载,分块有助于整体系统资源调度。

  1. 秒杀超卖场景

适用场景:秒杀、限时抢购、限量抢购等。

  1. 单用户单端多次抢购;

  2. 单用户单端限量抢购;

  3. 单用户多端抢购→低并发;

  4. 单用户多端抢购→高并发;

这里给大家准备了我从大学到大厂工作的软件测试资料,无偿分享给大家,需要的可以点击自取wenruo.ysepan.com


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容

  • 性能测试:利用工具模拟大量用户操作,验证系统承受的负载情况。性能测试的目的:找到潜在的性能问题或瓶颈,分析并解决;...
    小仙女本人呀阅读 15,547评论 1 15
  • 从14年11月到18年6月,一直专注于服务端性能测试,发现有些同学经常对一些基础概念和指标有异议,故写本文,希望对...
    测试在路上阅读 2,906评论 0 8
  • 1、性能测试(性能工程)概念 通过分析业务逻辑和技术架构,创建性能模型,制定性能方案,准备应用环境,设计并实施性能...
    Sandra_liu阅读 1,061评论 0 1
  • 作者:Gakki 基础概念:HPS、TPS、QPS、RPS、RT、并发用户数概念?简要介绍? HPS(Hits P...
    Gakki0725阅读 839评论 0 1
  • 一、性能测试概念 性能测试针对系统的性能指标,建立性能测试模型,制定性能测试方案,制定监控策略,在场景条件之下执行...
    sherlywu88阅读 428评论 0 0