0%

[原创] 使用 jMeter 登录 Wordpress

前段时间做了个 Wordpress 插件,需要进行压力测试,看看使用该插件后对 Wordpress 的影响。对于不登录 Wordpress 的情况,测试插件的影响是很简单的,在 jMeter 中简单设置下 HTTP Request 就可以了。不过,还需要测试登录 Wordpress 后,了解插件对其性能的影响。按道理,这应该也不是什么难的问题,因为之前我也做过很多使用 jMeter 测试登录系统的情况,不过这次却遇到了问题。
测试环境:日语 Wordpress,jMeter Version 2.7.1, Wordpress Version 3.4.2
首先,找到登录页提交的地址及所需参数,如下:
[Your Domain]/wp-login.php,提交方式 POST
所需参数:
log:[Login id]
pwd:[Your login password]
wp-submit:ログイン
redirect_to:[Your Domain]/wp-admin/
testcookie:1
并且添加了 HTTP Cookie Manager
我原以为有了这些就可以登录了,结果我错了。登录失败。
于是我上网找了好久好久,都没有什么线索,于是我决定还是自己来吧!
一次偶然的手动登录时,我想到了些东西:会不会是 jMeter 的 Cookie Manager 有问题啊?是不是少了些 Cookie?于是我重新对比了手动登录后涉及的 Cookie 与使用 jMeter 登录后的差别,结果还真发现了问题。
手动登录时,Cookie 中会有类似如下的信息:
Name:
wordpress_fda39958cfe3c3e4894f548ca952b0a1
Value:
admin|1351669594|e6ffe9655e811ee27868d4e05f67da5f
Domain:
[Your Domain]
Path:
[Your Domain]/wp-admin
问题就出在这,请大家注意上面红色的问题,自动登录时,请求返回的 Cookie 缺少上面这条内容,导致无法登录。
所以我的解决方案是,首先手动登录 Wordpress,此时抓取上面的 Cookie,并且上述信息添加到 jMeter 的 HTTP Cookie Manager 中。然后运行脚本,bingo! 好用了。
有了上述的 Cookie,使用 jMeter 再访问其它的 Wordpress blog 页面,就是模拟在登录状态下的访问情况了。

FYI:关于为什么非要加上上述 Cookie 值才能模拟登录情况,我到现在都不是很明白。希望有高人路过时,可以指点下。或者提供一个更好的解决方案。
特别鸣谢
在如下文章 http://smilejay.com/2013/04/login-wordpress-with-jmeter/ 中,关于 Cookie 没有被添加的原因的解释,里面写的相当的清楚,请大家参见其中的修改方法,修改 jMeter 的设置即可。再次感谢作者提出的解决方案。

坚持原创及高品质技术分享,您的支持将鼓励我继续创作!