关键词:jmeter phpwind 性能测试
一、性能需求
1)性能需求:30min内,phpwind随机回帖/发帖,观察服务器性能的表现。
2)需求分析:
2.1 核心业务
论坛系统的核心业务主要是登录、看帖、发帖、回帖,业务建模时应考虑覆盖
2.2构造数据
30min分钟持续回帖、发帖,为了满足真实性,应用不同的账号实现。建议使用存储过程构造数据
2.3 模拟真实场景
I)插入固定定时器,模拟真实场景,这里统一设为3秒
II)登录使用csv数据文件设置,读取不同的账号
III)随机进入版块,随机进入帖子,使用正则表达式提取器提取,并随机取值
IV)进入到帖子后,发帖或回帖的随机性,使用__Random函数实现
V)发帖验证码,回帖验证码,退出码等使用正则表达式提取器提取
VI)因发新贴后,退出账号后会返回新贴页面,所以使用正则表达式提取器提取新帖子id
二、业务建模
此业务建模场景要覆盖登录、看帖、发帖、回帖等核心业务。详细见以下流程图。
未命名文件 (8).png
三、测试环境
phpwind 7.3.2
jmeter 5.1
fiddler 5.0
四、脚本优化
1)jmeter 目录树如图
image.png
2)HTTP Cookie管理器
此元件必须加,否则会报错,且勾选反复清除Cookies,保证用不同的账号进行测试。
image.png
3)查看结果树和聚合报告用来核对测试结果
image.png
image.png
4)登录请求
登录请求的入参是application/x-www-form-urlencoded,需额外发送这个请求头。
image.png
使用txt文件读取不同测试账号(需提前构造数据)
image.png
5)登录后跳转首页
进入首页后,关联fid,随机取值。
image.png
登录成功后,关联到退出码,方便后面退出
image.png
6)进入版块
进入版块后,关联tid,随机取值
image.png
7)进入到发帖页面
关联发帖验证码
image.png
8)发帖
发帖后,关键到新帖子编号
image.png
9)进入回帖页面
关联回帖验证码
image.png
其它的sampler比较简单,不做截图!!!
五、跑场景,收集性能数据
脚本优化完成后,跑场景,收集性能数据并分析。
1)由于性能需求并没有告诉我们要完成的业务总量,可采取逐步加压的方式,找到30min内服务器可以承受的最大并发数
2)服务器CPU和内存通过 PerfMon Metrics Collector插件获取
PS:容易入坑的地方
1.badboy 2.2.5录制脚本,在写发帖内容的时候,老是报错。后改为fiddler抓包处理
image.png
fiddler默认不支持导出jmx,需单独下载插件
image.png
2.正则表达式提取器中的表达式 问号 需加反斜杠
提取fid:
提取退出码:
提取tid: