Jmeter+Jforum脚本开发

Jmeter+Jforum脚本开发

搭建好的测试环境(首页)示意图:模块是搭建好环境后手动添加


完成的脚本示意图:


脚本开发
    
    流程:首页→登录→选择论坛版块→选择帖子→回复帖子

1、添加线程组
    添加组件: HTTP Cookie Manager(cookie管理)、User Defined Variables(用户自定义变量)、HTTP Header Manager(头信息管理) 

 
    User Defined Variables:添加下图的变量(txt1和txt2是后面提交回复时用到的变量)
 

     HTTP Header Manager:所添加的变量可以通过badboy录制获得,也可以手动添加


2、首页
    添加HTTP请求采样器,进入首页


3、登录
    通过fiddler抓包工具发现,在登录时采用的POST请求,需要提交参数:module、action、 OWASP_CSRFTOKEN(固定值)、username、password、login。


     登录成功后会有一个重定向请求,通过抓包可以发现重定向到了: http://localhost:8080/jforum-2.5.0/forums/list.page 。此处添加了一个IF控制器,来判断是否取到论坛版块moduleId;如果取到moduleId继续向下执行;如果没有取到modulId,则不进入论坛版块,即停止后续操作,进行下一次迭代。

4、选择论坛模块
    任意选择一个首页帖子列表的链接,通过Chrome浏览器的开发则工具或者fiddler分析请求链接及传送的表单数据。从开发者工具可以看到帖子列表的链接是 http://localhost:8080/jforum-2.5.0/forums/show/2.page,其中2是版块在数据库中的ID。
    
    此处ID是通过在上一步添加后置处理器:正则表达式来获取的;通过开发者工具分析,我们要获取的版块ID是从href="/jforum-2.5.0/forums/show/2.page中取得 .page前面的数字 2,这个数字也就时要关联的数字。正则表达式如图所示。



5、选择一个主题
        在版块的列表里面任意选择一个主题链接,通过Chrome浏览器的开发则工具或者fiddler分析请求链接及传送的表单数据。从开发者工具可以看到帖子列表的链接是 http://localhost:8080/jforum-2.5.0/posts/list/2.page,其中2是主题在数据库中的ID。


    /list/2.page中.page前面的数字就是主题的 id,也是需要关联的数字,主题的id是从上一步中的href="/jforum-2.5.0/posts/list/3.page获得的,正则匹配规则如图所示。




6、回帖
    进入回帖页面,同样使用Chrome浏览器可以看出请求的链接: http://localhost:8080/jforum-2.5.0/posts/reply/0/2.page
    
    reply/0/2.page中2.page前面的2就是主题列表中任意主题的id,id是需要关联(参数化)的数字,该id的值与step5中的id值是同一个id值(即是相同的)。

7、回帖操作(输入内容,点击“发送”确认回复)
    输入回复内容后,点击“发送”确认回复后,通过Chrome分析,可以看到是Post请求,并且重定向到 http://localhost:8080/jforum-2.5.0/posts/list/0/2.page#p39?OWASP_CSRFTOKEN=ALRA-H3J9-BL3Z-XQJB-U0KT-UX5W-3GHG-NTRF页面,这个页面就是显示回帖内容的链接。
    从Chrome中截取到的回帖表单内容可以看到Post请求的参数表单(图二使用fiddler抓包,看起来更直观)。将表单中的内容填写到Http请求的Parameters中即可。


    
    Http请求的Parameters填写的内容如图所示:


    forum_id、subject、OWASP_CSRFTOKEN(该参数是确认回复后,重定向页面所带的参数)需要参数化,这个三个参数需要从/reply/0/2.page中去获取:

    <title>回复主题 APP测试</title>中有一个空格,不能直接匹配一次,需要匹配两次,得到两个值,在Parameters中把两个值按照抓包得出的规则用冒号“:”拼接起来即可



    OWASP_CSRFTOKEN这个参数是回复成功后,重定向页面需要的参数,是动态变化的,每次回复成功后会生成一个值。

    topic_id的值与step5中的id是一致的,所以直接调用step5中正则表达式取得的值即可。
    helpbox的值是固定的,txt1、txt2是前面用户自定义中直接定义好的,直接调过来用即可。
    message表示回帖的内容,此处是使用Jmeter自带的函数__RandomString生成的随机字符串

    
最后,我们需要验证是否回帖成功,从前面抓包分析可知,恢复成功后会重定向大页面 http://localhost:8080/jforum-2.5.0/posts/list/0/2.page#p39?OWASP_CSRFTOKEN=ALRA-H3J9-BL3Z-XQJB-U0KT-UX5W-3GHG-NTRF,我们可以在最后一步来添加一个HTTP请求来访问这个链接,这个链接可以从上一步(即是回帖那一步)通过正则表达式来获取,若访问成功则表示回帖成功。
Note:/posts/list/0/2中 /0表示回复列表页面最后一条回复排序的数字,当回复比较多,有翻页时,该数字大于0;  /2 表示模块id




    到此,我们的登录在回帖的脚本开发完成(* ̄︶ ̄)。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值