基本概念
- 并发数 预计有多少用户同时访问。
- 响应时间 在多用户同时访问的时候服务器的响应时间。(接口响应时间 最多不要超过3s)合理的时间都是在1s之内。
- 错误率 用户很多的情况下 个别用户页面出错。错误率统计数据基数要尽可能的大一些,统计的数据才会更加准确。 0.1%
- 吞吐量 服务器每秒处理的事务数。
性能测试的流程
- 确定性能指标
- 并发数: 50
- 响应时间: 1s
- 错误率: 0.001
- 设计性能测试场景
- 创建对应http请求
- 设置线程组的并发数
- 执行
- 出测试报告
- 性能不达标,优化之后再测,直到达标为止。
性能测试
测试场景
测试Cnode社区
主要场景:
1. 用户新建主题
2. 用户新建评论
---
测试指标
1. 用户数 10
2. 压测时间 5分钟
要求
1. 错误率不超过 0.1%
2. 最大响应时间 不超过 2s
创建对应的请求
根据业务,创建对应的请求
需要涉及到上下游传参
对应的JMX文件
性能.jmx
准备测试数据
将网站上所有的用户token 导出到文件
testuser.csv
设置csv文件配置
设置线程组
循环次数设置为 永远
持续时间设置为 300
- Ramp-up 时间: 线程启动时间。
聚合报告
线程组—【添加】—【监听器】-【聚合报告】
运行的时候查看聚合报告
响应时间的单位:ms 毫秒
- 样本: 运行的主要请求
- 平均值: 平均响应时间
- 中位数: 响应时间的中位
- 90%: 90%的响应时间
- 最小值:最小响应时间
- 最大值:最大响应时间
- 吞吐量:每秒处理的事务数
监控服务器状态
运行的时候,需要监控服务器状态
htop
htop 需要安装
yum install -y htop
事务控制器
将同一类型业务的请求放到一起,如果其中有一个请求失败,整个业务就是失败的。
【线程组】—【右键】—【添加】—【逻辑控制器】—【事务控制器】
将对应的请求放入进去。
执行的时候事务中如果有一个请求失败,那么这个事务就失败。
吞吐量控制器
可以控制不同的人数。
比如: 总共并发10个用户,有8个人在发帖,2个在回复。
【逻辑控制器】—【吞吐量控制器】
将请求放在不同控制器中。
常见面试问题
- 如果总共网站有1000个用户,有800个用户在浏览话题,有200个用户在发布话题。线程组怎么做?
有两种解决办法:
办法1:
创建2个线程组,分别在两个线程组中创建请求。
办法2:
创建1个线程组。线程数设置1000.
在线程组中创建2个吞吐量控制器。
思考时间
像正常用户那样,正常用户打开页面之后会停留一段时间。比如浏览话题,打开话题之后,正常用户 会在页面上停留3秒。
【添加】—【定时器】—【固定定时器】
设置等待时间
使用固定定时器(有些地方叫思考时间
)主要为了让测试更加真实。