使用什么方法可以模拟http请求

使用什么方法可以模拟http请求,第1张

使用什么方法可以模拟http请求

与httpwath相比,fiddler能模拟http请求、能断点调试、http分析统计吸引了我,使用之后感觉这个工具非常不错,这篇文章只单介绍一下fiddler工作原理,简单介绍一下它的重要功能,以及如何使用使用fiddler模拟http请求,满足移动服务端开发人员调试的问题。对于其他的功能大家可以自己研究一下。

fiddler工作原理:

当你启动了Fiddler,程序将会把自己作为一个微软互联网服务的系统代理。作为系统代理,所有的来自微软互联网服务(WinInet)的http请求再到达目标Web服务器的之前都会经过Fiddle,同样的,所有的Http响应都会在返回客户端之前流经Fiddler。:

fiddler重要功能:

1、HTTP统计视图:用来分析http请求,的83个http请求:

2、用Fiddler来调试:当你在软件的菜单rules—automatic breakpoints选项选择beforerequest,或者当这些请求或响应属性能够跟目标的标准相匹配,Fiddler就能够暂停Http通讯,允许修改请求和响应。这个个vs的断点调试一样,相当实用。

比如说:我请求login。在提交到服务器之前,可以暂停请求,强制修改httphead,:

然后点击运行到完成:

3、Fiddler 扩展:fiddler是用.net开发的,可以使用脚本和.net语言扩展fiddler。

使用Request Builder模拟http请求

对于移动服务端开发人员来说,使用这个工具模拟移动客户端请求是非常方便的。

get请求:

下拉框中选择GET,输入请求的地址,输入Request Headers。Request Headers是键值对的格式,用:隔开。点击执行。

在中可以看到相应的结果:

Post请求:对于post请求,需要输入Reuqest Body。而Request Body 默认情况是隐藏起来的。按下面步骤点击显示出Reuqest Body。

1、点击Options。

2、点击Tear off,。

点击执行,就可以模拟post请求了。

上一篇讲解了http协议的大致原理与基本格式,这一篇使用mac系统自带telnet工具来模拟http请求,分为GET请求和POST请求

为了测试使用,我在本地服务器上上传了一个php脚本,

这个脚本的功能是在浏览器输入用户名和密码,正确的用户名为zhangsan,密码为1234,如果用户名和密码正确,那么就返回username=zhangsan,如果用户名和密码不正确,那么就返回空字符。同时支持get请求和post请求,会把请求方法也输出。

1.首先打开终端,在终端输入telnet 127.0.0.1 80

2.连接成功后,按终端提示 按住control+] 进入telnet命令行,注意命令操作一定要快,因为telnet连接web服务器后,在短时间内就会被web服务器关闭连接。具体连接时间是多少不太清楚,目测1分钟左右。所以最好提前把需要输入的命令复制好,等用的时候直接复制粘贴。

为了方便,我就把命令敲在此处:

GET /login.php?username=zhang&password=1234 HTTP/1.1

Host:localhost

3.注意此处一定要在按一下回车,不能直接在telnet>后面输入命令

4.输入两条命令后 连续按两次回车 即是发出请求

可以看到,服务器返回是登录成功。

post请求与get请求前边操作一致,只是请求行 请求头 与请求头有区别

一个post请求的命令如下:

POST /login.php HTTP/1.1

Host:localhost

Content-type:application/x-www-form-urlencoded

content-length:28

username=zhang&password=1234

注意请求头输入完之后要留一个空行,表示请求头输入完成,接下来的内容是请求体。

可以看到telnet发送的POST请求也得到了服务器的正确响应。

通过使用telnet模拟http的请求,我们发现,其实只要我们发送给服务器的消息的格式符合http请求规范,那么http服务器(apache,ngnix)就能正确响应我们的请求,而浏览器所做的工作就是包装我们发送的http请求,形成符合规范的http请求,详细过程我们可以通过谷歌浏览器或者抓包工具进行抓取分析。

在进行网页或应用程序后台接口开发时,一般要及时测试开发的接口能否正确接收和返回数据,对于单次测试,Postman插件是个不错的Http请求模拟工具。

但是Postman只能模拟单客户端的单次请求,而对于模拟多用户并发等性能测试,就必须借助其他的工具了,这里推荐功能强大的JMeter自动化测试工具

Apache JMeter - Apache JMeter™

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库, FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。

下面就以上图的Restful类型的接口为例简单介绍使用Jmeter进行接口测试的方法。

获取某个具体网关设备的基本信息。

请求

方法:GET

URI:/api/gateway/<gateway_id>

参数:

在HTTP请求(http request)的头部(header)添加Userid和Token字段作为用户验证字段

响应

返回值:JSON格式的网关信息

参数:

.启动jmeter:在bin下以管理员身份运行jmeter.bat,启动jmeter

2. 创建测试计划:

默认启动jmeter时会加载一个测试技术模板,保存测试计划:修改名称为Apitest,点击保存,选择保存路径,后面的步骤,每次添加或修改了了一些选项,软件并不会自动保存到jmx文件中,所以进行测试后,如果需要保存本次测试选项,要手动到“文件”菜单中保存一下。

3. 添加线程

右键左边树中的测试计划“Apitest”节点,“添 加”→”Threads”→”线程组”

添加成功后,“Apitest”节点下多了“线程组” 节点,当然这个线程组的名称是可以自己设定的。

4. 添加http默认请求:(用来配置公共参数,不是http请求)

右键线程组,选择“添加”→ “配置元件”→“HTTP请求默认值”,点击“HTTP请求默认值”后

添加成功后,线程组”节点下多了“HTTP请求默认值”节点

这里可以设置主机地址等一下公共参数,比如我们的例子中请求路径前面都是主机地址+index.php,就可以统一在"http请求默认值"里设置

填写默认请求名、服务器、默认请求路径,保存测试计划。

5.添加http请求信息头

这一项并不是必须的,只不过我们的例子中使用了Userid和Token放在HTTP请求头中用作用户验证

右键“Apitest”,选择“添加”→ “配置元件”→“HTTP信息头管理器”

6. 添加http请求

右键“Apitest”,选择“添加”→ “Sampler”→“HTTP请求”

添加成功后,出现新的节点“HTTP请求”,就可以填写具体的请求参数了。

填写完成,保存测试计划

7. 添加监听器:

右键线程组,选择“添加”→“监听器”→“XXXXXXXXX”

可以添加的监听器有很多种,可以添加多个监听器,这里我们添加几个常用的“图形结果”、“察看结果树”、“聚合报告”

添加成功后,“线程组”下增加了几个节点

8. 试运行

点击执行

可以查看各个“监听器”的结果

Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值

#Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100

Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间

Median:中位数,也就是 50% 用户的响应时间

90% Line:90% 用户的响应时间

Note:关于 50% 和 90% 并发用户数的含义,请参考下文

http://www.cnblogs.com/jackei/archive/2006/11/11/557972.html

Min:最小响应时间

Max:最大响应时间

Error%:本次测试中出现错误的请求的数量/请求的总数

Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数

KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec

9. 修改线程组的线程数等参数,用于压力测试

点击左侧树形导航中的“线程组”

设置上面几个参数,模拟的总的请求数是:线程数*循环次数。执行一下,用“图形结果”监听器查看一下

样本数目:总共发送到服务器的请求数.

最新样本:代表时间的数字,是服务器响应最后一个请求的时间.

吞吐量:服务器每分钟处理的请求数.

平均值:总运行时间除以发送到服务器的请求数.

中间值:时间的数字,有一半的服务器响应时间低于该值而另一半高于该值.

偏离:服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布.


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/52412.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-25
下一篇2023-02-25

发表评论

登录后才能评论

评论列表(0条)

    保存