转:jmeter性能测试---登录百度进行搜索

摘要:
在做web程序性能测试时,loadrunner和jmeter是两款常用的工具,两者比较起来,jmeter非常轻巧,且开源免费,上手快。这里简单介绍下jmeter的使用,以登录百度进行搜索为例。jmeter运行需要jdk环境,这个不多做介绍。

在做web程序性能测试时,loadrunner和jmeter是两款常用的工具,两者比较起来,jmeter非常轻巧,且开源免费,上手快。这里简单介绍下jmeter的使用,以登录百度进行搜索为例。

jmeter运行需要jdk环境,这个不多做介绍。软件界面:

转:jmeter性能测试---登录百度进行搜索第1张

  1. 右击“测试计划”,添加一个线程组

    转:jmeter性能测试---登录百度进行搜索第2张

    线程组界面可以配置线程的数量,“Ramp-Up Period(in seconds):"这个参数是

    配置这些线程组在多少时间内完全启动(可以把时间设置长点,这样防止一开始就对服务器造成很大压力),还可以配置循环次数,后面还有调度器配置。转:jmeter性能测试---登录百度进行搜索第3张

  2. 分析一下登录百度的过程,首先访问http://www.baidu.com,百度分配给你一个baiduid的cookie;点击“登录”按钮,浏览器会带着相关参数和cookie去请求nsclick.baidu.com;之后百度为了防止csrf攻击(csrf详细解析见:http://www.yeetrack.com/?p=220),会给客户端发送一个token;其后输入username、password,浏览器将用户名、密码、token及相关参数post给passport.baidu.com进行校验,校验成功后,百度会分配给浏览器cookie,这里用的到的有SAVEUSERID和BDUSS两个,上面过程可以通过firefox的插件httpfox轻松得到(关于firefox的插件httpfox,详细见http://www.yeetrack.com/post/2012-11-22/firefox%2520httpfox%25E6%258F%2592%25E4%25BB%25B6)

    转:jmeter性能测试---登录百度进行搜索第4张

  3. ok,开始了,在线程组内新建一个http请求, 填写域名、端口等信息

    转:jmeter性能测试---登录百度进行搜索第5张

    转:jmeter性能测试---登录百度进行搜索第6张

    访问百度后,服务器会立刻分配一个BAIDUID的cookie,我们需要提取这个cookie,完成后续的认证,右击这个http请求,添加一个正则表达式提取器

    转:jmeter性能测试---登录百度进行搜索第7张

    它的页面应该类似这样填写:

    转:jmeter性能测试---登录百度进行搜索第8张

    cookie在返回包中的消息头中,选中消息头,cookie 名字为BAIDUID,正则表达式用来匹配消息头中的cookie,http消息头中的cookie是这个样子:BAIDUID=EB8A76382372306096A079F34C1C84EA:FG=1; H_PS_PSSID=1690_1438_1541_1542_1662_1582,表达式BAIDUID=(.*); 可以提取出其中的cookie value(如果不了解正则表达式,可以参见:http://www.yeetrack.com/post/2012-11-02/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%EF%BC%88%E4%B8%80%EF%BC%89),下面的模板的意思是如果我们写的正则表达式匹配到了多条内容,我们去其中的第几个,如$1$就是取第一个,下面的缺省值指如果没有匹配到内容,就指定一个默认值,这里可以不填写。

  4. ok,下一步,点击百度页面右上角的“登录”,用httpfox或者浏览器自带的网络查看去找相应的参数。对应到jmeter中,就是再新建一个http请求,get方法。应该如下填写:

    转:jmeter性能测试---登录百度进行搜索第9张

    参数共8个,要分别填写在表格里,其中有个参数t,指的是当前的Unix时间戳,jmeter提供一些函数,我们可以直接调用 ${__time()}这个就是调用jmeter的系统函数获取本地时间。

  5. 呃,忘了一步,第三步中我们用正则表达式,提取出了返回消息http头中的cookie,我们需要将这个cookie,放到jmeter的消息管理器中,这样在jmter在发送http请求时会自动带上相应cookie,右击“线程组”添加cookie管理器组件:

    转:jmeter性能测试---登录百度进行搜索第10张

    添加完毕,进行配置,应该是这样样子的:

    转:jmeter性能测试---登录百度进行搜索第11张

    名称是cookie 的key,要和http消息头中的名字对应;值是我们从正则表达式中提取的cookie value,${BAIDUID}是指取出BAIDUID这个变量的值(要和正则表达式页面的名字对应),下面两个是后面用到的。cookie的域和路径依次填好。

  6. 继续,我们点击了登录按钮,百度为了防止csrf攻击,会给我们一个token(这个token在我们提交密码时一起提交过去),我们要在jmeter中再新建一个http 请求,来获取这个token,get方法。相应参数如图:

    转:jmeter性能测试---登录百度进行搜索第12张

    我们仍旧需要一个正则表达式来获取这个token,注意这个token并没有放在返回消息的http头中,而是在响应消息中的js代码中,故firefox中我们无法看到,这里我用的是burp suite这个工具(具体使用方法参见:http://www.yeetrack.com/?p=173),在看到那段javascript代码后,我们用正则表达式进行提取:

    转:jmeter性能测试---登录百度进行搜索第13张

  7. 获取完这个token,我们就可以提交用户名和密码了。再次新建一个http请求,构造一个post请求,应该是这样:

    转:jmeter性能测试---登录百度进行搜索第14张

    注意由于是https连接,故端口为443,参数一共16个,自己去firefox中依次查看并添加到表格中,这里对于ppui_logintime这个参数有些不明白,应该是和本地时间有关,不太确定,随便填写了一个,校验通过了,如果你有更深的理解,欢迎讨论。

    post请求之后,服务器校验用户名密码是否匹配,如果通过,服务器会发送cookie到浏览器,ok,再次用正则表达式提取,这次需要提取两个cookie,SAVEUSERID和BDUSS(不要忘记将这两个添加到cookie管理器中)

    转:jmeter性能测试---登录百度进行搜索第15张

    转:jmeter性能测试---登录百度进行搜索第16张

  8. OK ,至此登录动作结束,我们可以试验一下,运行之前我们先添加一个“查看结果树”来统计运行结果。

    转:jmeter性能测试---登录百度进行搜索第17张

    点击中上方的运行按钮。你的结果应该类似这样:

    转:jmeter性能测试---登录百度进行搜索第18张

    我们可以看到每个包的发送和相应情况,检查一下是否登录成功。看下面截图,返回消息为浏览器设置cookie,代码登录通过。

    转:jmeter性能测试---登录百度进行搜索第19张

  9. 好了,登录成功,我们来提交个搜索的请求。新建一个http请求,如下图

    转:jmeter性能测试---登录百度进行搜索第20张

    当然如果我们要搜索的关键词很多,也可以从外面的文件中读取,方法是:在线程组中添加一个csv data set config,这个组件专门用来读取外部的文本文件。

    转:jmeter性能测试---登录百度进行搜索第21张

    转:jmeter性能测试---登录百度进行搜索第22张

    keyword.txt中的关键字要用制定的字符隔开,这样在运行时文本中的关键字会被加载到keyword变量中,我们就可以在脚本中通过${keyword}来引用。

    转:jmeter性能测试---登录百度进行搜索第23张

  10. 最后在添加上结果统计的组件,来分析web程序的性能。

    转:jmeter性能测试---登录百度进行搜索第24张

    转:jmeter性能测试---登录百度进行搜索第25张

    转:jmeter性能测试---登录百度进行搜索第26张

    最后分享自己的脚本,http://wangpan.baidu.com/share/link?shareid=149068&uk=537055152。我是在登录动作中加了个一次控制器,让每个线程的登录动作只执行一次,搜索可以执行多次,如果你下载使用,将其中发送用户名、密码的post包中的username和password参数修改成自己的账号即可,然后在d盘下新建keyword.txt,里面放着用逗号隔开的关键词即可。 本文由易踪网原创,如果你喜欢本文,请关注易踪网

免责声明:文章转载自《转:jmeter性能测试---登录百度进行搜索》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇树莓派OpenEuler安装结构化方法和面向对象方法的比较下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

c# 正则表达式 匹配回车

1 "." 匹配除 " " 之外的任何单个字符,一般用".*?"匹配不包括回车的任意字符。 2 我们在用正则表达式分析html或者是xml的时候,会碰上要匹配的目标字符串含有回车换行的情况,这时候我们就不能试用 “.*?”匹配了(除非你先把字符串中的回车换行去掉)。我们应该用 "[\s\S]" 来代替 "."。 一般都会匹配形如:A任意字符B这样的模式,所...

Django cookie加密cryptography

#导包 生成密钥的第三方库 from cryptography.fernet importFernet #密钥 获取密钥#cipher_key = Fernet.generate_key() cipher_key = 'Anmj6guBpUGLJPSmOIrsCBabcsjbdAbdnJDE2pZfmL4=' #定义加密方法 defmy_encode(...

门户系统整合sso cookie共享及显示用户信息

1.1 门户系统整合sso 在门户系统点击登录连接跳转到登录页面。登录成功后,跳转到门户系统的首页,在门户系统中需要从cookie中 把token取出来。所以必须在登录成功后把token写入cookie。并且cookie的值必须在系统之间能共享。 1.1.1 Cookie共享: 1、Domain:必须是相同的。 例如有多个域名: www.taotao....

re库的使用

一、re库的调用 import re 二、正则表达式类型 raw string类型(原生字符串类型,即不包括转义符类型):r'text' string类型,更繁琐。 三、Re库主要功能函数 函数              说明 re.search()        在一个字符串中搜索匹配正则表达式的第一个位置,然后返回match对象 re.match(...

Java中Cookie常用操作类(Spring中操作Cookie)

说明:Cookie下用Key取值没有快速的方法,只能便利循环去取。 技巧:置0则cookie会立即删除,设置-1,负值则会在关闭浏览器后删除。切记一定要增加路径:setPath("/"),不然不会生效。在获取Cookie时要看下是否设置了域名:setDomain,不然本地调试时获取不到。 Cookie 的限制: 大多数浏览器支持最大为4096字节(4KB)...

学习正则表达式

什么是正则表达式? 正则表达式是一组由字母和符号组成的特殊文本, 它可以用来从文本中找出满足你想要的格式的句子. 一个正则表达式是在一个主体字符串中从左到右匹配字符串时的一种样式. "Regular expression"这个词比较拗口, 我们常使用缩写的术语"regex"或"regexp". 正则表达式可以从一个基础字符串中根据一定的匹配模式替换文本中的...