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

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

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

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

    配置这些线程组在多少时间内完全启动(可以把时间设置长点,这样防止一开始就对服务器造成很大压力),还可以配置循环次数,后面还有调度器配置。

  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)

  3. 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$就是取第一个,下面的缺省值指如果没有匹配到内容,就指定一个默认值,这里可以不填写。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

转:jmeter性能测试---登录百度进行搜索的更多相关文章

  1. JMeter性能测试,完整入门篇

    1. Jmeter简介 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件.相比Loadrunner而言,JMeter小巧轻便且免费,也越来越流行成为了主流的性能测试工具 ...

  2. JMeter性能测试,入门

    原文转自:https://blog.csdn.net/lovesoo/article/details/78579547 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件 ...

  3. JMeter性能测试,完整入门篇(转)

    原文转自:https://blog.csdn.net/lovesoo/article/details/78579547 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件 ...

  4. Selenium2学习-009-WebUI自动化实战实例-007-Selenium 8种元素定位实战实例源代码(百度首页搜索录入框及登录链接)

    此 文主要讲述用 Java 编写 Selenium 自动化测试脚本编写过程中,通过 ID.name.xpath.cssSelector.linkText.className.partialLinkTe ...

  5. 一篇文章入门Jmeter性能测试【经典长文】

    孟船长  目录 1.性能测试定义2.为什么要做性能测试3.性能测试指标.性能测试分类4.Jmeter性能测试实战[入门级]5.参考文章链接 1.性能测试定义 百度&知乎 性能测试是通过自动化的 ...

  6. JMeter性能测试-服务器资源监控插件详解

          零.引言 我们对被测应用进行性能测试时,除了关注吞吐量.响应时间等应用自身的表现外,对应用运行所涉及的服务器资源的使用情况,也是非常重要的方面,通过实时监控,可以准确的把握不同测试场景下服 ...

  7. Jmeter性能测试实践之java请求

     前言 Apache Jmeter是开源.易用的性能测试工具,之前工作中用过几次对http请求进行性能测试,对jmeter的基本操作有一些了解.最近接到开发的对java请求进行性能测试的需求,所以需要 ...

  8. js 百度云搜索框

    // ==UserScript==// @name 百度云插件+APIKey// @namespace // @version 5.0.2.1// @description 在百度云网盘的页面添加一个 ...

  9. 11月1号开学! 《jmeter性能测试实战》崭新亮相!

    课程介绍 第10期<jmeter性能测试实战>课程,11月2号开学!全新改版,和之前的课程框架完全不同 主讲老师:飞天小子 上课方式:每周六周日晚8点到10点,QQ群视频在线直播教学 本期 ...

随机推荐

  1. sql优化原则

    尽量使用性能高的比如left join等,尽量减少数据查询的column,尽量不要查询冗余数据,like的话“%%”是没有 办法使用索引的,但是“%”是可以使用索引的 having以前一直不知道到底真 ...

  2. k个区间相交的段落数 Educational Codeforces Round 4 D

    http://codeforces.com/contest/612/problem/D 题目大意:给你n个区间,这n个区间会有相交的部分,如果一个区间相交的部分>=k,那么就把这个区间记录下来. ...

  3. 笨方法学python--读文件

    1 raw_input()的另外用法 prompt = '> ' likes = raw_input(prompt) 提示符> 可以不用每次输入,要修改,只修改一个地方. 2 读取文件 t ...

  4. [Mark] openvswitch megaflow

    Megaflow is an OpenVSwitch (OVS) feature than enables us to install flows for which some fields are ...

  5. Screen tearing

    Umm, screen tearing happens when the frame rate and the monitor refresh rate don't match.  When that ...

  6. Dialog对话框管理工具类

    import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; i ...

  7. NEU OJ 1644 Median I

    优先级队列 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> ...

  8. VS2010 制作安装包,无法生成卸载快捷方式

    目前我出现了这个错误,原因是项目目录中包含了中文字符导致的,我改变了文件夹之后,就没问题了

  9. H5的新应用-拖到页面上的元素

    -------------------------- <script type="text/javascript">                        // ...

  10. 利用朴素贝叶斯算法进行分类-Java代码实现

    http://www.crocro.cn/post/286.html 利用朴素贝叶斯算法进行分类-Java代码实现  鳄鱼  3个月前 (12-14)  分类:机器学习  阅读(44)  评论(0) ...