jmeter实战之phpwind随机回帖/发帖

关键词:jmeter phpwind 性能测试
一、性能需求
1)性能需求:30min内,phpwind随机回帖/发帖,观察服务器性能的表现。
2)需求分析:
2.1 核心业务
论坛系统的核心业务主要是登录、看帖、发帖、回帖,业务建模时应考虑覆盖
2.2构造数据
30min分钟持续回帖、发帖,为了满足真实性,应用不同的账号实现。建议使用存储过程构造数据
2.3 模拟真实场景
I)插入固定定时器,模拟真实场景,这里统一设为3秒
II)登录使用csv数据文件设置,读取不同的账号
III)随机进入版块,随机进入帖子,使用正则表达式提取器提取,并随机取值
IV)进入到帖子后,发帖或回帖的随机性,使用__Random函数实现
V)发帖验证码,回帖验证码,退出码等使用正则表达式提取器提取
VI)因发新贴后,退出账号后会返回新贴页面,所以使用正则表达式提取器提取新帖子id

二、业务建模
此业务建模场景要覆盖登录、看帖、发帖、回帖等核心业务。详细见以下流程图。

jmeter实战之phpwind随机回帖/发帖_第1张图片
未命名文件 (8).png

三、测试环境
phpwind 7.3.2
jmeter 5.1
fiddler 5.0

四、脚本优化
1)jmeter 目录树如图

jmeter实战之phpwind随机回帖/发帖_第2张图片
image.png

2)HTTP Cookie管理器
此元件必须加,否则会报错,且勾选反复清除Cookies,保证用不同的账号进行测试。
jmeter实战之phpwind随机回帖/发帖_第3张图片
image.png

3)查看结果树和聚合报告用来核对测试结果
jmeter实战之phpwind随机回帖/发帖_第4张图片
image.png

jmeter实战之phpwind随机回帖/发帖_第5张图片
image.png

4)登录请求
登录请求的入参是application/x-www-form-urlencoded,需额外发送这个请求头。
jmeter实战之phpwind随机回帖/发帖_第6张图片
image.png

使用txt文件读取不同测试账号(需提前构造数据)
jmeter实战之phpwind随机回帖/发帖_第7张图片
image.png

5)登录后跳转首页
进入首页后,关联fid,随机取值。
jmeter实战之phpwind随机回帖/发帖_第8张图片
image.png

登录成功后,关联到退出码,方便后面退出
jmeter实战之phpwind随机回帖/发帖_第9张图片
image.png

6)进入版块
进入版块后,关联tid,随机取值
jmeter实战之phpwind随机回帖/发帖_第10张图片
image.png

7)进入到发帖页面
关联发帖验证码
jmeter实战之phpwind随机回帖/发帖_第11张图片
image.png

8)发帖
发帖后,关键到新帖子编号
jmeter实战之phpwind随机回帖/发帖_第12张图片
image.png

9)进入回帖页面
关联回帖验证码
jmeter实战之phpwind随机回帖/发帖_第13张图片
image.png

其它的sampler比较简单,不做截图!!!

五、跑场景,收集性能数据
脚本优化完成后,跑场景,收集性能数据并分析。
1)由于性能需求并没有告诉我们要完成的业务总量,可采取逐步加压的方式,找到30min内服务器可以承受的最大并发数
2)服务器CPU和内存通过 PerfMon Metrics Collector插件获取

PS:容易入坑的地方
1.badboy 2.2.5录制脚本,在写发帖内容的时候,老是报错。后改为fiddler抓包处理

jmeter实战之phpwind随机回帖/发帖_第14张图片
image.png

fiddler默认不支持导出jmx,需单独下载插件
image.png

2.正则表达式提取器中的表达式 问号 需加反斜杠

提取fid:       
退出
提取tid:       

3.发帖或者回帖的post请求,Content-Type是
multipart/form-data; boundary=----WebKitFormBoundaryXck7JmniiyCfrAzB。
特别是boundary,这个是post入参之间的分割线,不能缺少,否则会提示非法操作。这个boundary可以使用fiddler抓取的值。


image.png

4.在发帖或者回帖的时候,如果需要输入汉字,需指明编码格式


jmeter实战之phpwind随机回帖/发帖_第16张图片
image.png

你可能感兴趣的:(jmeter实战之phpwind随机回帖/发帖)