關鍵詞:jmeter phpwind 性能測試
一、性能需求
1)性能需求:30min內,phpwind隨機回帖/發(fā)帖,觀察服務器性能的表現(xiàn)括改。
2)需求分析:
2.1 核心業(yè)務
論壇系統(tǒng)的核心業(yè)務主要是登錄、看帖家坎、發(fā)帖嘱能、回帖吝梅,業(yè)務建模時應考慮覆蓋
2.2構造數(shù)據(jù)
30min分鐘持續(xù)回帖、發(fā)帖惹骂,為了滿足真實性苏携,應用不同的賬號實現(xiàn)。建議使用存儲過程構造數(shù)據(jù)
2.3 模擬真實場景
I)插入固定定時器对粪,模擬真實場景右冻,這里統(tǒng)一設為3秒
II)登錄使用csv數(shù)據(jù)文件設置,讀取不同的賬號
III)隨機進入版塊著拭,隨機進入帖子纱扭,使用正則表達式提取器提取,并隨機取值
IV)進入到帖子后茫死,發(fā)帖或回帖的隨機性跪但,使用__Random函數(shù)實現(xiàn)
V)發(fā)帖驗證碼,回帖驗證碼峦萎,退出碼等使用正則表達式提取器提取
VI)因發(fā)新貼后,退出賬號后會返回新貼頁面忆首,所以使用正則表達式提取器提取新帖子id
二爱榔、業(yè)務建模
此業(yè)務建模場景要覆蓋登錄、看帖糙及、發(fā)帖详幽、回帖等核心業(yè)務。詳細見以下流程圖浸锨。
三唇聘、測試環(huán)境
phpwind 7.3.2
jmeter 5.1
fiddler 5.0
四、腳本優(yōu)化
1)jmeter 目錄樹如圖
2)HTTP Cookie管理器
此元件必須加柱搜,否則會報錯迟郎,且勾選反復清除Cookies,保證用不同的賬號進行測試聪蘸。
3)查看結果樹和聚合報告用來核對測試結果
4)登錄請求
登錄請求的入?yún)⑹莂pplication/x-www-form-urlencoded宪肖,需額外發(fā)送這個請求頭。
使用txt文件讀取不同測試賬號(需提前構造數(shù)據(jù))
5)登錄后跳轉首頁
進入首頁后健爬,關聯(lián)fid控乾,隨機取值。
登錄成功后娜遵,關聯(lián)到退出碼蜕衡,方便后面退出
6)進入版塊
進入版塊后,關聯(lián)tid设拟,隨機取值
7)進入到發(fā)帖頁面
關聯(lián)發(fā)帖驗證碼
8)發(fā)帖
發(fā)帖后慨仿,關鍵到新帖子編號
9)進入回帖頁面
關聯(lián)回帖驗證碼
其它的sampler比較簡單鸽扁,不做截圖!O馄桶现!
五、跑場景鼎姊,收集性能數(shù)據(jù)
腳本優(yōu)化完成后骡和,跑場景,收集性能數(shù)據(jù)并分析相寇。
1)由于性能需求并沒有告訴我們要完成的業(yè)務總量慰于,可采取逐步加壓的方式,找到30min內服務器可以承受的最大并發(fā)數(shù)
2)服務器CPU和內存通過 PerfMon Metrics Collector插件獲取
PS:容易入坑的地方
1.badboy 2.2.5錄制腳本唤衫,在寫發(fā)帖內容的時候婆赠,老是報錯。后改為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=
提取發(fā)帖后新tid:
<a href="read.php\?tid=([0-9]*)">
3.發(fā)帖或者回帖的post請求休里,Content-Type是
multipart/form-data; boundary=----WebKitFormBoundaryXck7JmniiyCfrAzB。
特別是boundary赃承,這個是post入?yún)⒅g的分割線妙黍,不能缺少,否則會提示非法操作瞧剖。這個boundary可以使用fiddler抓取的值拭嫁。
4.在發(fā)帖或者回帖的時候,如果需要輸入漢字抓于,需指明編碼格式