性能测试前的准备工作
1.性能标准和业务
和产品、开发确定本次测试的具体目的需确定:
并发目的:峰值 TPS/QPS、最大并发用户数、日活UV换算比。
响应时间标准:P95/P99 延迟阈值、超时定义。
业务混压比例:登录、下单、查询、支付等接口的流量占比是多少。
2. 选取性能测试工具方法
根据协议选型:HTTP/HTTPS 第一选择 JMeter(开源全场景)、Locust(Python 写脚本灵活);WebSocket 或 TCP 协议考虑Gatling或自研压测客户端。同时确定执行方法:是负载测试(找拐点)、压力测试(找极限)还是稳定性测试(跑 8-24 小时)。
3. 准备测试脚本和参数化数据
脚本增强:关联动态 Token、加入断言(检查响应是不是报错)、模拟真实思考时间。
数据铺底:性能测试严禁用少量数据反复压测。需要准备海量测试账号(避免缓存命中率虚高)、大表数据(千万级订单表才能测出真实索引性能)。
4. 申请资源和权限
压测发起端(压力机)和被测服务端都需要足够的CPU/内存,且需开通防火墙白名单。
5. 编写测试方案并评审
输出《性能测试方案》,起压方法(如 1 分钟爬坡到 100 并发)、场景停止条件(错误率 > 1% 立即结束)和回滚预案。
6. 配置监控告警大屏
提前配置Grafana面板或APM探针,保证压测时能实时看到:系统负载、JVM GC 情况、数据库慢SQL、Redis命中率。
软件测试环境搭建
性能测试环境必须和生产环境保持 1:1 或至少 1:0.5 的等比缩放配置。
1. 隔离
独立 VPC 网络:测试环境须处于独立的虚拟私有云中,避免压测流量打穿共享交换机影响办公网络。
严禁复用生产依赖:不要为了省事让测试环境连接生产环境的 Redis、消息队列或支付网关,否则极易造成生产事故。
2. 硬件和拓扑配置
等比缩放法:生产环境是 8 核 16G × 10 台实例,测试环境可用 2 核 4G × 2 台,通过公式推算短板倍数。
负载均衡和 DNS:如果生产用 Nginx/K8s Ingress 做分发,测试环境必须配置相同的负载均衡层,避免单点短板导致性能曲线失真。
3. 数据和库创建
脱敏导入:从生产备份库抽取最近一个月增量数据,通过脚本清洗掉手机号、身份证等敏感信息后导入测试库。
清理无用缓存:压测前执行 FLUSHALL(Redis)和数据库缓存清理,保证基线一致。
4. 屏蔽
Mock 外部接口:对于无法复制的第三方支付回调或短信接口,部署 Mock Server 返回固定成功码,防止压测产生真实费用。
关闭限流熔断:测试环境一般需临时调高或关闭Sentinel/Hystrix的流控阈值,以便暴露真实的性能上限。
5. 标准测试验收
使用单用户单接口跑通全链路,确定返回数据正确、无 5xx 报错、日志无堆积。此时环境方可交付测试执行。
能有效避免测了半天发现是环境带宽不够的低级失误,保证性能测试结果真实反映软件处理能力。