查询计划(天气查询)

这是一个入门计划,仅使用jmeter进行查询功能的计划,可参考http://www.cnblogs.com/TankXiao/p/4045439.html有代码可下载。不过我还是以自己的学习再讲解一下。

实际编写web测试时,你会发现:只有熟悉HTTP,才能理解Jmeter的实现方式,才能更好的去使用它,因为它就是模拟http的。

计划目标:根据城市名称,获取城市代码,然后获取到天气信息

分析步骤:

第一步: 发送请求到http://toy1.weather.com.cn获取城市代码

比如上海,http://toy1.weather.com.cn/search?cityname=上海

从这个请求的response 中获取到上海的城市代码.

(上海的地区代码是101020100)

第二步:  发送请求: http://www.weather.com.cn/weather2d/101020100.shtml   可以得到该城市的天气数据

我用到的JMETER点有:自定义变量、关联(正则表达式)、断言

1.      第一步:创建线程组

JMETER的所有任务都必须线程处理,可以理解为WEB的请求就是一个线程组,所以需要模拟线程组来实现功能。

操作:添加——Threads(Users)——线程组,如图所示

释:

名称:自定义的线程组名称。

线程数:即设置发送请求的用户数,即并发数。

Ramp-Up Period(in seconds):所有线程启动起来的总时间,单位为妙。如果未指定ramp-up period ,也就是说ramp-up period 为零, JMeter 将立即建立所有线程。假设ramp-up period 设置成T 秒, 全部线程数设置成N个, JMeter 将每隔T/N秒建立一个线程。

循环次数:请求的重复次数,如果选择永远,则一直请求;输入次数,则根据指定次数重复请求;如果为1,则仅执行一次请求。

Delay Thread creation until needed直到需要时延迟线程的创建。

调度器:选中之后可以配置启动时间、结束时间,立即或者预定的启动及结束时间;

持续时间,即测试计划持续多长时间,会覆盖结束时间;

启动延迟,即测试计划延迟多长时间启动,会覆盖启动时间。

 

 

2.      第二步:创建一个请求,获取城市代码

首先:创建自定义变量

我们可以直接把需要查询的“城市”写在url地址进行请求(相当于一个常量),也可以设置为参数进行传递请求(相当于变量)

这里就介绍怎么创建自定义变量

定义一个变量叫 city.    使用它的时候用  ${city}

操作:添加——配置原件——用户定义的变量,如图所示。然后设置变量名称为city,值为上海

然后:创建一个HTTP请求

操作:添加——Sampler——HTTP请求,如图所示

输入http的请求信息,如下图所示

请求名称:citycode。

发送一个Get 方法的http 请求: http://toy1.weather.com.cn/search?cityname=${city}

释:

名称:自定义的HTTP请求的名称。

服务器名称或IP必填,内容为HTTP请求的Host头域信息,表示请求url的原始服务器或网关的位置(域名)。

HTTP请求:这里测试web查询,所以协议一般默认的都是http。方法,根据http请求使用的方法选择。Content encoding当参数值会有特殊字符时,最好设置一下,一般为utf-8.

路径:主要指跟在服务器名称或IP后的参数信息。

最后:创建HTTP信息头管理器

为什么要创建http信息头呢,我前面说了jmeter就是模拟http发送请求的,但是它毕竟不是http,所以测试某些系统的时候,可能会检测http请求的某些信息,比如这里的系统,可能会检测到http的header,如果不包含,可能跳转出现302.

操作:选择http请求,右键——添加——配置元件——HTTP信息头管理器。

输入信息头的值,这里输入的是Referer的值,也可以添加其他。

补充:添加响应断言、断言结果

响应断言操作:选择http右键添加——断言——响应断言。

断言响应内容是否包含上海的字符串。

释:

模式匹配规则:选择“包括”“匹配”时,支持正则表达式;当为Equals和Substring时,则为完全匹配。

断言结果操作:选择线程组右键添加——监听器——断言结果

3.      第三步:创建结果树

创建结果树,当然就是为了看执行结果了,当然还有其他接听结果的,请自行选择。

操作:右键线程组添加——监听器——查看结果树。

点击执行按钮就可以执行前面编写的citycode请求信息了,通过为绿色,出现问题为红色。

如图,响应数据就是我们需要城市代码信息了,同时第2步会对内容进行断言。

得到了响应数据,但是内容很多。我们只需要上海对应的“城市代码”,那么怎么得到呢?

4.      第四步:关联,正则表达式提取器

所谓关联, 就是第二个Requst, 使用第一个Request中的数据(后置关联)

我们这里,就是需要将城市代码提取出来,给第二个http用,用来获取天气。

操作:右键线程名称——后置处理器——正则表达式提取器,

通过第3步可以看到响应主体内容的格式,我们只要根据格式填写下面的即可。

释:

引用名称:下一个请求要引用的参数名称,如填写title,则可用${title}引用它。

正则表达式:():括起来的部分就是要提取的。

         .:匹配任何字符串。

         +:一次或多次。

         ?:不要太贪婪,在找到第一个匹配项后停止。

模板:用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$2$$3$等等,表示解析到的第几个值给title。如:$1$表示解析到的第1个值

 匹配数字:0代表随机取值,1代表全部取值,通常情况下填0

 缺省值:如果参数没有取得到值,那默认给一个值让它取。

5.      第五步:创建第二个请求,获取天气

创建第二个http请求,请求信息为 http://www.weather.com.cn/weather2d/${citycode}.html

其中${citycode} 中的数据, 是从第4步正则表达式获取的

此时,再重复第第三步,清空上次结果,再,则可以获取到响应的天气信息,这样的一个计划就完成了。

Jmeter实例计划(查询天气)的更多相关文章

  1. 【ORACLE】记录通过执行Oracle的执行计划查询SQL脚本中的效率问题

    记录通过执行Oracle的执行计划查询SQL脚本中的效率问题   问题现象: STARiBOSS5.8.1R2版本中,河北对帐JOB执行时,无法生成发票对帐文件.   首先,Quartz表达式培植的启 ...

  2. 基于WebForm+EasyUI的业务管理系统形成之旅 -- 施工计划查询(Ⅷ)

    上篇<基于WebForm+EasyUI的业务管理系统形成之旅 -- 施工计划安排>,主要介绍整个施工计划列表与编辑界面. 下面看看施工计划查询(ⅠⅡⅢ ⅣⅤⅥ Ⅶ Ⅷ) 一.施工计划查询 ...

  3. C++ 容器的综合应用的一个简单实例——文本查询程序

    C++ 容器的综合应用的一个简单实例——文本查询程序 [0. 需求] 最近在粗略学习<C++ Primer 4th>的容器内容,关联容器的章节末尾有个很不错的实例.通过实现一个简单的文本查 ...

  4. 【Python3爬虫】自动查询天气并实现语音播报

    一.写在前面 之前写过一篇用Python发送天气预报邮件的博客,但是因为要手动输入城市名称,还要打开邮箱才能知道天气情况,这也太麻烦了.于是乎,有了这一篇博客,这次我要做的就是用Python获取本机I ...

  5. SSM 框架快速整合实例--学生查询

    一.快速准备 SSM 框架即 Spring 框架.SpringMVC 框架.MyBatis 框架,关于这几个框架的基础和入门程序,我前面已经写过几篇文章作为基础和入门介绍了.对于这 3 个框架还不熟悉 ...

  6. SSM框架快速整合实例——学生查询

    一.快速准备 SSM 框架即 Spring 框架.SpringMVC 框架.MyBatis 框架,关于这几个框架的基础和入门程序,我前面已经写过几篇文章作为基础和入门介绍了.这里再简单的介绍一下: 1 ...

  7. BAE+Python+Django+Wechatpy+Baidu weather api +微信订阅号 = 实现微信查询天气

    最近想在微信上面实现天气查询,分两个步骤: 1.被动回复:输入天气.xx天气获取天气情况 2.主动推送:每天定时推送天气(针对24小时内产生交互的人) 目前已经实现第一个步骤,如下: 现将实现此功能环 ...

  8. TP5结合聚合数据API查询天气

    php根据城市查询天气情况看到有人分享java的查询全国天气情况的代码,于是我想分享一个php版本的查询天气接口.免费查询天气的接口有很多,比如百度的apistore的天气api接口,我本来想采用这个 ...

  9. python 基础例子 双色球 查询天气 查询电话

    # 随机生成双色球import random# 随机数 1-16之间# r = random.randint(1,16)# print(r)phone_numbers_str = "匪警[1 ...

随机推荐

  1. JS 提交反斜杠\替换成正斜杠/

    js将字符串中所有反斜杠\替换成正斜杠/ 区分正斜杠与反斜杠: 正斜杠:http://.http紧跟着的斜杠,离手输入最近的斜杠,shift中间斜杠.45度角斜杠.正斜杠不需要转义 反斜杠:回车与空格 ...

  2. Azure 上 Linux 虚拟机 Mac 地址的持久化

    有些用户在使用 Azure Linux 虚拟机安装软件时,有些软件的 license 会和当前系统的 mac 地址绑定,那么在 Azure VM 重启,reszie(改变尺寸大小),停止然后再启动的时 ...

  3. 深入Java关键字null

    一.null是代表不确定的对象   Java中,null是一个关键字,用来标识一个不确定的对象.因此可以将null赋给引用类型变量,但不可以将null赋给基本类型变量.   比如:int a = nu ...

  4. 由ArrayList来深入理解Java中的fail-fast机制

    1. fail-fast简介“快速失败”也就是fail-fast,它是Java集合的一种错误检测机制.某个线程在对collection进行迭代时,不允许其他线程对该collection进行结构上的修改 ...

  5. 二 Channel

    Java NIO的通道类似流,但又有些不同 既可以从通道中读取数据,也可以写数据到通道.但是流的读写通常是单向的 通道可以异步读写 通道中的数据通常总是要先读到一个Buffer,或者总是从Buffer ...

  6. 微信公众号开发《一》OAuth2.0网页授权认证获取用户的详细信息,实现自动登陆

    原创声明:本文为本人原创作品,绝非他处转账,转载请联系博主 从接触公众号到现在,开发维护了2个公众号,开发过程中遇到很多问题,现在把部分模块功能在这备案一下,做个总结也希望能给其他人帮助 工欲善其事, ...

  7. 终止ajax请求

    在做搜索功能时,文本框输入文本就得请求一次数据,如果上一次的请求还没回又请求了就导致数据错误和无用的数据请求. 我们需要输入文本时候判断上一次的ajax请求是否完毕,若还没完毕就终止本次请求. 对于j ...

  8. 无法远程访问Mysql的解决方案

    现在在很多的互联网公司对于mysql数据库的使用已经是不可阻挡的趋势了,所以经常我们在项目开始的时候就会做的事情就是找一台Linux服务器,到上面去安装个mysql,然后在开始我们的数据表的导入工作, ...

  9. Spring中无法访问resources目录下页面或静态资源

    1.新建项目,在 resources 目录下创建 views 目录,在 views 目录下创建 index.html 页面,项目跑起来,浏览器访问页面,提示找不到页面之类的错误提示. 2.再尝试访问图 ...

  10. Shared Project

    从VS2015开始支持Shared Project,挺好的,省去了单独引用的麻烦.