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

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

线程组界面可以配置线程的数量,“Ramp-Up Period(in seconds):"这个参数是
配置这些线程组在多少时间内完全启动(可以把时间设置长点,这样防止一开始就对服务器造成很大压力),还可以配置循环次数,后面还有调度器配置。

分析一下登录百度的过程,首先访问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)

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


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

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

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$就是取第一个,下面的缺省值指如果没有匹配到内容,就指定一个默认值,这里可以不填写。
ok,下一步,点击百度页面右上角的“登录”,用httpfox或者浏览器自带的网络查看去找相应的参数。对应到jmeter中,就是再新建一个http请求,get方法。应该如下填写:

参数共8个,要分别填写在表格里,其中有个参数t,指的是当前的Unix时间戳,jmeter提供一些函数,我们可以直接调用 ${__time()}这个就是调用jmeter的系统函数获取本地时间。
呃,忘了一步,第三步中我们用正则表达式,提取出了返回消息http头中的cookie,我们需要将这个cookie,放到jmeter的消息管理器中,这样在jmter在发送http请求时会自动带上相应cookie,右击“线程组”添加cookie管理器组件:

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

名称是cookie 的key,要和http消息头中的名字对应;值是我们从正则表达式中提取的cookie value,${BAIDUID}是指取出BAIDUID这个变量的值(要和正则表达式页面的名字对应),下面两个是后面用到的。cookie的域和路径依次填好。
继续,我们点击了登录按钮,百度为了防止csrf攻击,会给我们一个token(这个token在我们提交密码时一起提交过去),我们要在jmeter中再新建一个http 请求,来获取这个token,get方法。相应参数如图:

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

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

注意由于是https连接,故端口为443,参数一共16个,自己去firefox中依次查看并添加到表格中,这里对于ppui_logintime这个参数有些不明白,应该是和本地时间有关,不太确定,随便填写了一个,校验通过了,如果你有更深的理解,欢迎讨论。
post请求之后,服务器校验用户名密码是否匹配,如果通过,服务器会发送cookie到浏览器,ok,再次用正则表达式提取,这次需要提取两个cookie,SAVEUSERID和BDUSS(不要忘记将这两个添加到cookie管理器中)


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

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

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

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

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


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

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



最后分享自己的脚本,http://wangpan.baidu.com/share/link?shareid=149068&uk=537055152。我是在登录动作中加了个一次控制器,让每个线程的登录动作只执行一次,搜索可以执行多次,如果你下载使用,将其中发送用户名、密码的post包中的username和password参数修改成自己的账号即可,然后在d盘下新建keyword.txt,里面放着用逗号隔开的关键词即可。 本文由易踪网原创,如果你喜欢本文,请关注易踪网。
转:jmeter性能测试---登录百度进行搜索的更多相关文章
- JMeter性能测试,完整入门篇
1. Jmeter简介 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件.相比Loadrunner而言,JMeter小巧轻便且免费,也越来越流行成为了主流的性能测试工具 ...
- JMeter性能测试,入门
原文转自:https://blog.csdn.net/lovesoo/article/details/78579547 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件 ...
- JMeter性能测试,完整入门篇(转)
原文转自:https://blog.csdn.net/lovesoo/article/details/78579547 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件 ...
- Selenium2学习-009-WebUI自动化实战实例-007-Selenium 8种元素定位实战实例源代码(百度首页搜索录入框及登录链接)
此 文主要讲述用 Java 编写 Selenium 自动化测试脚本编写过程中,通过 ID.name.xpath.cssSelector.linkText.className.partialLinkTe ...
- 一篇文章入门Jmeter性能测试【经典长文】
孟船长 目录 1.性能测试定义2.为什么要做性能测试3.性能测试指标.性能测试分类4.Jmeter性能测试实战[入门级]5.参考文章链接 1.性能测试定义 百度&知乎 性能测试是通过自动化的 ...
- JMeter性能测试-服务器资源监控插件详解
零.引言 我们对被测应用进行性能测试时,除了关注吞吐量.响应时间等应用自身的表现外,对应用运行所涉及的服务器资源的使用情况,也是非常重要的方面,通过实时监控,可以准确的把握不同测试场景下服 ...
- Jmeter性能测试实践之java请求
前言 Apache Jmeter是开源.易用的性能测试工具,之前工作中用过几次对http请求进行性能测试,对jmeter的基本操作有一些了解.最近接到开发的对java请求进行性能测试的需求,所以需要 ...
- js 百度云搜索框
// ==UserScript==// @name 百度云插件+APIKey// @namespace // @version 5.0.2.1// @description 在百度云网盘的页面添加一个 ...
- 11月1号开学! 《jmeter性能测试实战》崭新亮相!
课程介绍 第10期<jmeter性能测试实战>课程,11月2号开学!全新改版,和之前的课程框架完全不同 主讲老师:飞天小子 上课方式:每周六周日晚8点到10点,QQ群视频在线直播教学 本期 ...
随机推荐
- sql优化原则
尽量使用性能高的比如left join等,尽量减少数据查询的column,尽量不要查询冗余数据,like的话“%%”是没有 办法使用索引的,但是“%”是可以使用索引的 having以前一直不知道到底真 ...
- k个区间相交的段落数 Educational Codeforces Round 4 D
http://codeforces.com/contest/612/problem/D 题目大意:给你n个区间,这n个区间会有相交的部分,如果一个区间相交的部分>=k,那么就把这个区间记录下来. ...
- 笨方法学python--读文件
1 raw_input()的另外用法 prompt = '> ' likes = raw_input(prompt) 提示符> 可以不用每次输入,要修改,只修改一个地方. 2 读取文件 t ...
- [Mark] openvswitch megaflow
Megaflow is an OpenVSwitch (OVS) feature than enables us to install flows for which some fields are ...
- Screen tearing
Umm, screen tearing happens when the frame rate and the monitor refresh rate don't match. When that ...
- Dialog对话框管理工具类
import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; i ...
- NEU OJ 1644 Median I
优先级队列 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> ...
- VS2010 制作安装包,无法生成卸载快捷方式
目前我出现了这个错误,原因是项目目录中包含了中文字符导致的,我改变了文件夹之后,就没问题了
- H5的新应用-拖到页面上的元素
-------------------------- <script type="text/javascript"> // ...
- 利用朴素贝叶斯算法进行分类-Java代码实现
http://www.crocro.cn/post/286.html 利用朴素贝叶斯算法进行分类-Java代码实现 鳄鱼 3个月前 (12-14) 分类:机器学习 阅读(44) 评论(0) ...