余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

JMeter快速入门知识系列(3)JMeter测试HTTP GET请求

xiyangw 2023-05-14 11:22 10 浏览 0 评论

3.1 HTTP协议简介

JMeter快速入门知识系列(3)JMeter测试HTTP GET请求

超文本传输协议(英语: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请求方法:

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。

这些值的末尾不会加入行结束符,可以调用KaTeX parse error: Expected group after '_' at position 2: {_?_char(13,10)}来插…{__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.请求参数:

4.1输入参数:

4.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. 返回参数:

5.1响应参数:

5.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选项卡中:

相关推荐

辞旧迎新,新手使用Containerd时的几点须知

相信大家在2020年岁末都被Kubernetes即将抛弃Docker的消息刷屏了。事实上作为接替Docker运行时的Containerd在早在Kubernetes1.7时就能直接与Kubelet集成使...

分布式日志系统ELK+skywalking分布式链路完整搭建流程

开头在分布式系统中,日志跟踪是一件很令程序员头疼的问题,在遇到生产问题时,如果是多节点需要打开多节点服务器去跟踪问题,如果下游也是多节点且调用多个服务,那就更麻烦,再者,如果没有分布式链路,在生产日志...

Linux用户和用户组管理

1、用户账户概述-AAA介绍AAA指的是Authentication、Authorization、Accounting,即认证、授权和审计。?认证:验证用户是否可以获得权限,是3A的第一步,即验证身份...

linux查看最后N条日志

其实很简单,只需要用到tail这个命令tail-100catalina.out输入以上命令,就能列出catalina.out的最后100行。...

解决linux系统日志时间错误的问题

今天发现一台虚拟机下的系统日志:/var/log/messages,文件时间戳不对,跟正常时间差了12个小时。按网上说的执行了servicersyslogrestart重启syslog服务,还是不...

全程软件测试(六十二):软件测试工作如何运用Linux—读书笔记

从事过软件测试的小伙们就会明白会使用Linux是多么重要的一件事,工作时需要用到,面试时会被问到,简历中需要写到。对于软件测试人员来说,不需要你多么熟练使用Linux所有命令,也不需要你对Linux...

Linux运维之为Nginx添加错误日志(error_log)配置

Nginx错误日志信息介绍配置记录Nginx的错误信息是调试Nginx服务的重要手段,属于核心功能模块(nginx_core_module)的参数,该参数名字为error_log,可以放在不同的虚机主...

Linux使用swatchdog实时监控日志文件的变化

1.前言本教程主要讲解在Linux系统中如何使用swatchdog实时监控日志文件的变化。swatchdog(SimpleWATCHDOG)是一个简单的Perl脚本,用于监视类Unix系统(比如...

syslog服务详解

背景:需求来自于一个客户想将服务器的日志转发到自己的日志服务器上,所以希望我们能提供这个转发的功能,同时还要满足syslog协议。1什么是syslog服务1.1syslog标准协议如下图这里的fa...

linux日志文件的管理、备份及日志服务器的搭建

日志文件存放目录:/var/log[root@xinglog]#cd/var/log[root@xinglog]#lsmessages:系统日志secure:登录日志———————————...

运维之日志管理简介

日志简介在运维过程中,日志是必不可少的东西,通过日志可以快速发现问题所在。日志分类日志分类,对不同的日志进行不同维度的分析。操作系统日志操作系统是基础,应用都是在其之上;操作系统日志的分析,可以反馈出...

Apache Log4j 爆核弹级漏洞,Spring Boot 默认日志框架就能完美躲过

这两天沸沸扬扬的Log4j2漏洞门事件炒得热火朝天:突发!ApacheLog4j2报核弹级漏洞。。赶紧修复!!|Java技术栈|Java|SpringBoot|Spring...

Linux服务器存在大量log日志,如何快速定位错误?

来源:blog.csdn.net/nan1996jiang/articlep/details/109550303针对大量log日志快速定位错误地方tail/head简单命令使用:附加针对大量log日志...

Linux中查看日志文件的正确姿势,求你别tail走天下了!

作为一个后端开发工程师,在Linux中查看查看文件内容是基本操作了。尤其是通常要分析日志文件排查问题,那么我们应该如何正确打开日志文件呢?对于我这种小菜鸡来说,第一反应就是cat,tail,vi(或...

分享几款常用的付费日志系统,献给迷茫的你!

概述在前一篇文章中,我们分享了几款免费的日志服务器。他们各有各的特点,但是大家有不同的需求,有时免费的服务器不能满足大家的需要,下面推荐几款付费的日志服务器。1.Nagios日志服务器Nagio...

取消回复欢迎 发表评论: