bbs
bbs论坛实现登录、进入每个模块、在每一个模块发帖,有二级页面的在二级页面发帖,随机在某个模块发帖。
jmeter新建一个线程组,添加cookie管理器,请求默认值,请求,察看结果树
添加好默认值(ip和路径)
添加请求(要先进入首页,然后登录,登录后进入首页)
首页直接用请求默认值就行,不用设置
登录请求需要在浏览器中F12抓包,找到接口和传参(登录成功后F12会自动跳转到下一页的接口,所以要设置持续记录所有接口)
把接口中抓出来的路径和请求参数粘贴到jmeter中
登录后首页也不用设置
执行一下可以看到,现在是登陆成功的
登陆成功然后我要进入这些版块,但是不能设置固定的,有几个设置几个,而是要让它自动,如果页面增加或者减少了版块,不需要对脚本改动也可以成功进入的。
想进入这些版块就先需要获取到对应的版块,这些都可以从首页获取,用正则提取器提取出来
看看这些版块的接口有什么规律
默认版块:http://127.0.0.1/testbbs/forum.php?mod=forumdisplay&fid=2
android开发:http://127.0.0.1/testbbs/forum.php?mod=forumdisplay&fid=46
iOS开发:http://127.0.0.1/testbbs/forum.php?mod=forumdisplay&fid=47
性能测试:http://127.0.0.1/testbbs/forum.php?mod=forumdisplay&fid=42
功能测试:http://127.0.0.1/testbbs/forum.php?mod=forumdisplay&fid=48
可以看到只有fid不同,其他都一样
那么只需要在首页中准确定位到fid,把这些fid都提取出来就可以了
正则表达式的边界要确定好,不然可能会不准确(定位边界没什么技巧,只能去试)
可以添加一个Debug Samper(调试取样器)来看我提取的内容是否取到了
可以看到我取到了,但是有点乱,不知道是不是只提取了一个
这时可以添加foreach控制器,从fids中把fid一个个取出来
在foreach下可以添加一个java请求来进行测试,让resultdata打印fid
这里可以看出fid确实打印出来了,但是我只有5个模块,却提取出了10个请求,说明正则提取的还是有问题
继续尝试
执行,这回可以看出打印了5个请求,5个请求的值都是不同的,说明这回我把5个模块的fid都准确的获取到了
在foreach下面添加请求
还是找到页面的接口,把fid改成可变的
然后执行看看,可以看到已经成功进入不同的模块
然后我想要在不同的模块中发帖
这又是另一个接口
继续抓包,post的是发帖的接口
路径和请求分别粘出来复制到请求中
这里需要传哈希值,所以需要提取哈希,直接在响应数据的位置找就可以
发帖时间可以用函数助手获取10位的时间戳
这里是设置好的参数,提取哈希,设置发帖时间,标题我用jia+当前发帖时间替代,发帖内容我随机生成了一串字符串
执行一下看看,可以看到我发贴是成功的
刷新一下浏览器,可以看到我在每个模块发帖都是成功的
如果想随机选择一个模块进行发帖,只发一条,只需要在提取fid的时候把匹配数字写成0就可以,0代表随机,然后把发帖的请求放在迭代器外面
提取fid时用的名称是fids,所以这里要用fids
执行看看,发表成功
如果当前模块有二级模块,那么在foreach里再添加一个foreach
执行可以看到子模块也是发帖成功的
龙果学院
登录后请求接口
设置请求默认值
抓包找到请求参数
把请求参数放到jmeter的请求中
执行可以看到,虽然是绿色的,但其实是没登录成功的
因为要设置信息头
抓包时看到请求是JSON格式,如果不设置信息头那么默认是text文本格式
所以设置信息头
然后再执行,这时就是登录成功的
然后找一个接口请求看看,看我的课程这个接口
要传入的token,orgNo和userNo都需要从登录接口提取
所以要添加后置处理器-JSON提取器
请求参数是这些,但是只有这些直接执行是失败的
这里还有请求头,请求头也是要添加的
添加请求头,要和F12中的请求头对应上
这时再执行就是成功的状态