前言
性能测试,面试官问的时候,一般只会从三个方面问:
- 如何做性能测试?
- 性能测试指标等基础知识
- 如何分析性能瓶颈和优化
其实就算你真的做了性能测试,也大概率轮不到你来对数据层,函数代码层的算法 乃至架构,甚至中间件来指手画脚 去解决性能问题,公司的专业开发人员不是吃白饭的。但是呢?这些知识你要懂,这样以便随时打下手,也是拉开面试差距的主要指标。
如何做性能测试
这个问题就是要由浅入深的回答。从工具使用,基础的请求搭建,数据准备,到复杂的场景构造。
用jmeter / lr / 自研平台
jmeter是个轻量级的压测工具,且免费,所以使用比较广泛也算是面试必考。
lr是个收费的高级压测工具,能模拟各种复杂的场景和功能,如集合点,ip欺骗,分压机等。但因代码语言特殊,且收费,所以一般中小公司不用,而大公司就会自己研发压测平台,所以也很少用lr,面试几乎不问。
自研平台,难度极高,你要面对的是多个技术难点的细节追问:项目开发技术,底层驱动,表层交互,架构并发,队列消息,抓手赋能,报告生成,设计方案,流量回访,数据偏移,全链路保证,数据准备等方面,如果没真做过,建议不要瞎说。
jemter基础
负载发生器:
产生负载,多进程线程去模拟用户行为
用户运行器:
脚本运行引擎,用户运行器附加在进程或线程上,根据脚本模拟用户行为
资源生成器:
生成测试过程中服务器,负载机的资源数据
报表生成器:
根据测试数据生成报表,提供可视化方案
测试计划:
相当于新建一个项目,之后的具体性能测试功能设置都包含在此内
线程:
包含setup,teardown,线程组。分别是先运行,收尾运行,实际内容部门。
测试片段:
需要被调用的工具作用的特殊线程组
控制器:
取样器(记录响应最小单元设置)和逻辑控制器(顺序,循环,随机,单次,交替等逻辑执行策略)
监听器:
展示测试结果,包含聚合报告,结果树,图形结果等
定时器:
等待时间是控制客户端qps的手段,包含多种定时器
断言器:
包含多种方式多个位置的断言,保证接口请求符合预期
前置处理器:
请求头/体等设置,也可以设置用户参数等
后置处理器:
对响应进行处理,比如取出某返回值做为参数等