JMeter必知必会系列 —— JMeter测试HTTP GET

1123 篇文章 45 订阅
866 篇文章 3 订阅

3.1 HTTP协议简介

超文本传输协议(英语:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。

HTTP的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,最终发布了一系列的RFC,其中最著名的是1999年6月公布的RFC 2616,定义了HTTP协议中现今广泛使用的一个版本——HTTP 1.1。从2007开始到2014为止,经过多年的努力,RFC2616和RFC2617已经被废弃,被新的RFC7230-RFC7239共10个文档所代替。

下面对HTTP协议的介绍都是基于最新的RFC7230-RFC7239。

HTTP报文格式

请求方法

1. 传统HTTP请求方法

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn999】

2. RESTful HTTP请求方法

状态码

 

首部

3.2 HTTP Request(GET)

配置项

Web Server

1.Protocol [http]: 
  若为HTTP协议可以不填写(默认为HTTP);若为HTTPS协议可以填写“https”;还可以为FILE协议(本地文件传输协议);
2.Server Name or IP: 
  HTTP/Web服务器的域名或IP地址,本机可以使用localhost或127.0.0.1表示;
3.Port Number: 
  HTTP/Web服务器的监听端口,若为HTTP协议,默认端口为80;若为HTTPs协议,默认端口为443。使用默认端口可以不填,非默认端口必填。

HTTP Request

1.Method: 
  请求方法,测试GET请求,请选择“GET”。
2.Path: 
  HTTP请求行中的request-target,可以使用绝对地址或相对地址。
  比如: http://www.test.com/ecshop/index.php (绝对地址)
         /ecshop/index.php(相对地址)
  注意: 若使用绝对地址,则会覆盖“Web Server”中的配置。
3.Content-encoding: 
  通常用于在发送POST、PUT、PATCH请求时对message-body进行内容编码,以防止请求出现乱码或服务器无法正确处理请求。
  注意其与请求的首部字段“Content-encoding”无关。
4.Redirect Automatically: 
  自动重定向。在JMeter中不记录重定向的过程,只能看到最终的重定向请求。
5.Follow Redirects: 
  跟随重定向。在JMeter会详细记录重定向的过程,可以看到多个重定向请求。
  其中4与5是互斥的。
  比如,使用http://www.sina.com/访问新浪,会有两次重定向:
  第一次请求: GET http://www.sina.com/ 重定向返回: Location: http://www.sina.com.cn/
  第二次请求: GET http://www.sina.com.cn/ 重定向返回: Location: https://www.sina.com.cn/
  第三次请求: GET https://www.sina.com.cn/
  若设置自动重定向,在查看结果树中只能看到最终的请求:GET https://www.sina.com.cn/
  若设置跟随重定向,可以看到全部的三次请求。
6.Use KeepAlive: 
  勾选在请求中加入首部字段“Connection: Keep-Alive”,否则设置为“Connection: Close”,默认为勾选。
7.Use multipart/form-data: 
  是否以multipart/form-data传输message-body。
8.Browser-compatible headers: 
  勾选此项,在使用multipart/form-data时,会抑止Content-Type与Content-Transfer-Encoding首部字段,仅发送Content-Disposition首部字段。
请求参数放置的位置
1.可带查询字符串的请求方法
  GET请求带查询字符串是最常见的,除此之外,DELETE、POST、PUT、PATCH也可以携带查询字符串,不过处理的方式不同:
  a.GET、DELETE会将查询字符串附加在请求request-target之后;
  b.POST、PUT、PATCH将查询字符串作为message-body单独发送。

2.查询字符串生成
  a.直接放在Path配置项中(?后的一串字符,但不包括片段信息,各name=value通过&连接,name=可选)
  比如,Path设置为:/ecshop/upload/goods.php?act=price&id=9&attr=227&number=1&1551081863462462
  则查询字符串为:act=price&id=9&attr=227&number=1&1551081863462462
  b.由“Parameters”选项卡中参数列表的“name/value”名值对生成(以name=value形式通过&连接)
  比如:
     Name    Value
    username  zhangsan
    password  123456
  则生成的查询字符串为:username=zhangsan&password=123456
c.根据“Parameters”选项卡中参数列表的“name/value”名值对生成字符串并追加到Path中的查询字符串末尾(两者以&连接),
  此规则仅对于GET请求有效。
  比如,Path设置为: /index.php?cc=3
  参数列表中的“name/vaue”名值对为:
     Name     Value
     a         1
     b         2
  则生成的查询字符串为:cc=3&a=1&b=2

3.无名参数处理
  对于POST、PUT与PATCH方法,若没有上传文件,并且参数没有对应的参数名,则将参数值之间连接起来作为message-body。
  这些值的末尾不会加入行结束符,可以调用${__char(13,10)}来插入CRLF。
  比如,参数列表设置了:
    Name     Value
             line1${__char(13,10)}
             line2
  则message-body为:
  line1
  line2
  对于其他请求方法比如GET,若参数没有参数名,则JMeter会忽略该参数。
4.当请求只有未命名的参数(或根本没有参数)
  可以将请求参数放入“Body Data”选项卡中(也可以放在Parameters选项卡中)。一般用于发送如下类型的请求:
    a.GWT RPC HTTP
    b.JSON REST HTTP
    c.XML REST HTTP
    d.SOAP HTTP
  在“Body Data”模式下,除了最后一行之外,每行末自动附加CRLF。要在最后一行数据之后发送CRLF,只需确保其后面有空行即可。
5.POST、PUT与PATCH方法的请求,message-body可以是如下之一:
  a.在“File Upload”选项卡中,不设置“Parameter Name”,设置“MIME Type”为Content-Type;
  b.在“Parameters"选项卡中,不设置“Name”;
  c.将请求参数放在“Body Data”选项卡中。

6.参数的Content-Type设置
  a.参数仅放在“Parameters”选项卡中,默认为“application/x-www-form-urlencoded”;
  b.参数放在“Body Data"选项卡中,默认为“text/plain”;
  c.参数仅放在"Files Upload”选项卡中,默认为“multipart/form-data”;
  d.参数放在“Parameters”与“Files Upload”两个选项卡中,默认为“multipart/form-data”。
  若要指定Content-Type,可以在取样器请求下添加一个HTTP首部管理器,并在其中设置Content-Type首部字段与值域。

3.3 应用案例

测试案例说明

1. 接口说明

查询被购买商品的总金额接口。

2. 请求方式

HTTP GET请求。

3.接口地址

/ecshop/upload/goods.php

4. 请求参数

1) 输入参数:

2) 请求示例:

GET /ecshop/upload/goods.php?act=price&id=9&attr=227&number=1&1551081863462462 HTTP/1.1
Accept: */*
X-HttpWatch-RID: 22945-10042
Referer: http://localhost/ecshop/upload/goods.php?id=9
Accept-Language: zh-Hans-CN,zh-Hans;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Host: localhost
Connection: Keep-Alive
Cookie: ECS[history]=9; ECS[visit_times]=2; ECS_ID=2a50bfdc24b5443814e73a5783912e21a55af811

5. 返回参数

1) 响应参数:

2) 响应实例:

HTTP/1.1 200 OK
Date: Mon, 25 Feb 2019 08:16:27 GMT
Server: Apache/2.2.4 (Win32) PHP/5.2.4
X-Powered-By: PHP/5.2.4
Cache-control: private
Content-Length: 50
Keep-Alive: timeout=5, max=86
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8

{"err_msg":"","result":"\uffe52298\u5143","qty":1}
测试步骤
1.在“Test Plan”节点上右键,选择Add-->Threads(users)-->Thread Group;
2.在“Thread Group”节点上右键,选择Add-->Sampler-->HTTP Request;
3.在“HTTP Request”节点上右键,选择Add-->Listener-->View Results Tree;
4.选中“HTTP Request”对HTTP请求进行配置;
5.点击“Save”,保存测试计划;
6.点击“Start”,运行JMeter测试。

HTTP GET请求的参数有两种配置方法:

1. 放在Path配置项中

2. 放在Parameters选项卡中

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
 

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值