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

三、测试环境
phpwind 7.3.2
jmeter 5.1
fiddler 5.0
四、脚本优化
1)jmeter 目录树如图

2)HTTP Cookie管理器
此元件必须加,否则会报错,且勾选反复清除Cookies,保证用不同的账号进行测试。

3)查看结果树和聚合报告用来核对测试结果


4)登录请求
登录请求的入参是application/x-www-form-urlencoded,需额外发送这个请求头。

使用txt文件读取不同测试账号(需提前构造数据)

5)登录后跳转首页
进入首页后,关联fid,随机取值。

登录成功后,关联到退出码,方便后面退出

6)进入版块
进入版块后,关联tid,随机取值

7)进入到发帖页面
关联发帖验证码

8)发帖
发帖后,关键到新帖子编号

9)进入回帖页面
关联回帖验证码

其它的sampler比较简单,不做截图!!!
五、跑场景,收集性能数据
脚本优化完成后,跑场景,收集性能数据并分析。
1)由于性能需求并没有告诉我们要完成的业务总量,可采取逐步加压的方式,找到30min内服务器可以承受的最大并发数
2)服务器CPU和内存通过 PerfMon Metrics Collector插件获取
PS:容易入坑的地方
1.badboy 2.2.5录制脚本,在写发帖内容的时候,老是报错。后改为fiddler抓包处理

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

2.正则表达式提取器中的表达式 问号 需加反斜杠
提取fid:
<a href="thread.php\?fid=([0-9]*)" id=
提取退出码:
<a href="login.php\?action=quit&verify=(.*)">退出</a>
提取tid:
<a href="read.php\?tid=([0-9]*)" id=
提取发帖后新tid:
<a href="read.php\?tid=([0-9]*)">
3.发帖或者回帖的post请求,Content-Type是
multipart/form-data; boundary=----WebKitFormBoundaryXck7JmniiyCfrAzB。
特别是boundary,这个是post入参之间的分割线,不能缺少,否则会提示非法操作。这个boundary可以使用fiddler抓取的值。

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

网友评论