首页 > 技术文章 > 性能测试面试题2-描述一下性能测试流程?

all-best98 2021-08-12 10:13 原文

一、前期准备
最理想的状态,就是在需求评审阶段就应该参与,这样可以深入了解系统业务,重要功能的业务逻辑,为性能测试做准备

二、性能评审需求分析
1、明确性能测试的范围
2、明确性能指标
最好是引导产品、需求或者开发出压测目标(分别是单场景、混合场景、稳定性场景的)
定性能指标,又分为迭代项目和新项目,迭代项目就根据生产监控、日志分析来评估指标,这里需要做容量规划,新项目单独评估

性能指标:一般是tps(每秒处理事务数,这里都是通过的事务)、art(平均响应时间)及并发数,加上服务器资料利用率的要求(cpu、内存、IO、网络等)、各个服务的资源情况。

3、熟悉项目架构,知道要监控哪些服务器,以及准备监控的方案
包含具体用到的web服务器、应用服务器、缓存数据库服务器、数据库服务器、文件服务器等
主流的技术栈:nginx、dubbo、mysql、redis、jvm等等

4、制定性能测试方案
比如,压测、监控、分析工具的选择、场景设计、什么时候做什么事情

三、搭建测试环境,准备测试数据

搭建测试环境:压力机、压测工具、监控工具easynmon、jvm稳定性监控等
准备测试数据:测试数据又基础数据,业务数据
基础数据可以从测试库里导出来

业务数据包含:存量数据+容量规划数据,比如一个查询接口,都是并发100用户,对应的表数据量是1万和100万,压测结果是不一样的;
数据量要参考生产环境,如果是新项目,除了空库压,最好也做一下存量数据压。(啥意思,没太明白)


四、开发脚本

jmeter:参数化、关联、事务、检查点、思考时间、信息头管理器等

五、执行测试
1、基准测试
2、单场景测试
3、混合场景测试
4、稳定性压测

六、监控数据
一步一步排查请求流经的节点,包括服务器资源(cpu、内存、磁盘io、网络)是否存在性能瓶颈、是否存在队列、线程池、连接池、线程死锁、数据库死锁、慢sql、长事务等性能问题;

linux服务器,常用的命令是top、vmstat、free、df、sar、iostat、netstat等,一般是多个命令配合着用;
java应用:jvisualvm、jconsole、jmap、jstat、jstack等,以及自己写的一些shell脚本;
redis、mysql、jvm等等

七、分析定位
基于上一步的监控数据,对瓶颈进行分析、定位,模块隔离分析、日志分析、内存分析、线程栈分析、代码跟踪等等;

这个真需要实战积累,没有捷径,遇到好几个去参加过性能培训的朋友,他们反馈说还是不会性能,操作起来同样一脸懵逼、无从下手。

八、性能优化
定位到问题了,大部分情况下,优化方案也就有了,测试可以把自己建议的优化方案告诉开发,开发会结合自己的方案,一起做优化方案评估;如果测试没有优化方案,那就把问题反馈给开发吧,但是也好好学学开发的优化思路,这就是成长的过程。

九、性能回归
优化后,复测。

十、编写性能报告
测试结果是多少?测试是否通过?
发现了什么性能问题?原因是什么?
如何优化解决的?系统性能提升了多少倍?优化方案务必写详细,以便上线同事知道,把优化同步到其它各个环境。

推荐阅读