性能测试day02_预习知识
在进入第二天的学习之前,我想我们需要提前先了解一下基础的知识,所以这一篇主要讲解的就是预习课程,关于协议和抓包的讲解(原理和工具)。
可以说基于服务器的性能一般都是基于协议的,所以我们就需要懂协议,以下会以http协议作为基础进行讲解下:
一、首先是HTTP协议的特点:
1、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST、PUT、DELETE等。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
2、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
3.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
4.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
5、支持B/S及C/S模式。
二、HTTP的报文结构(fiddler抓取的)
下面是请求头的字段解释:

下面是响应头的字段解释:

如果遇到其它的字段头不懂的可以自行百度,这里只是提及一些主要的字段供大家了解。
三、抓包工具的初探
这里会提及一些工具,当然不会特别深入,主要是让大家学会抓包发包的过程,如果特别感兴趣可以百度进行深入研究,下面的抓包都是以我请求http://www.runoob.com/?s=cai为例。
1.Wireshark抓包
请求出去后可以看到源地址和目的地址,第一条就是刚刚请求的过程,第二条则是服务器的返回。

一般我们抓HTTP不用Wireshark,一般抓取TCP、UDP协议用的比较多。
2.Chrome抓包
浏览器抓包是我用的比较多的,因为非常方便,而且也只能抓基于浏览器的HTTP协议,并且还能模拟手机或Ipad设备。
记得勾选Preserve log,不然再次请求会把之前的请求的信息替换掉,下面的图为基本的请求信息,除此之外第二张图还能看到每个请求的耗时。

耗时查看:

图中request sent代表发送请求的时间,Wating时间代表着服务器处理时间,content download代表下载时间(跟下载内容和网络有关)
3.Fiddler抓包
fiddler是基于代理模式抓包的,一般开启fiddler之后就会自动设置浏览器的代理,端口默认为8888,同时可以抓取手机的包。

fiddler功能较多,在这里不一一详细描述,有问题可以私撩我或者百度,下图也是抓取请求后查看详细的信息,而且也多种形态查看。

四、发包初探
1.fiddler发包
废话不多说,直接看下图即可fiddler中的Composer可以实现该功能,下图是发包的参数填写,一般我们可以将抓取到的包直接拖拽进来后修改再次发送即可。

发包完后查看新发出去的请求,此过程与之前的抓包查看一样就不多累赘了。
2.Postman发包
postman发包跟之前发包差不多,只不过这里还可以做断言,如果有返回json的话还可以对返回的数据进行判断。

3.Python发包
下面简单的写了个get请求,post请求稍微多一点内容,若要做断言可以用unittest或者pyunit框架即可做到。

性能测试day02_预习知识的更多相关文章
- JMeter性能测试的基础知识和个人理解
JMeter性能测试的基础知识和个人理解 1. JMeter的简介 JMeter是Apache组织开发的开源项目,设计之初是用于做性能测试的,同时它在实现对各种接口的调用方面做的比较成熟,因此,常 ...
- 性能测试day02_后端网络协议架构
接着第一天的尾,继续来学习性能测试,上一次说到性能要大致经历哪些阶段,那么我们也来看下行业的做法: 行业有两种做法,一个是TPC,另一个是SPEC: TPC:指定业务类型,获得该指定业务的性能指标,也 ...
- 性能测试的基础知识--QPS和TPS
基本概念: QPS:Queries Per Second意思是“每秒查询率” ,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准. TPS:Transa ...
- 性能测试必备知识(2)- 查看 Linux 的 CPU 相关信息
做性能测试的必备知识系列,可以看下面链接的文章哦 https://www.cnblogs.com/poloyy/category/1806772.html 查看系统 CPU 信息 cat /proc/ ...
- 性能测试必备知识(4)- 使用 stress 和 sysstat
做性能测试的必备知识系列,可以看下面链接的文章哦 https://www.cnblogs.com/poloyy/category/1806772.html stress 介绍 Linux 系统压力测试 ...
- 性能测试必备知识(5)- 深入理解“CPU 上下文切换”
做性能测试的必备知识系列,可以看下面链接的文章哦 https://www.cnblogs.com/poloyy/category/1806772.html 前言 上一篇文章中,举例了大量进程等待 CP ...
- 性能测试必备知识(6)- 如何查看“CPU 上下文切换”
做性能测试的必备知识系列,可以看下面链接的文章哦 https://www.cnblogs.com/poloyy/category/1806772.html 课前准备,安装 sysbench 下载 sy ...
- 性能测试必备知识(7)- 深入理解“CPU 使用率”
做性能测试的必备知识系列,可以看下面链接的文章哦 https://www.cnblogs.com/poloyy/category/1806772.html 回顾 CPU 使用率是单位时间内 CPU 使 ...
- 性能测试必备知识(10)- Linux 是怎么管理内存的?
做性能测试的必备知识系列,可以看下面链接的文章哦 https://www.cnblogs.com/poloyy/category/1806772.html 内存映射 日常生活常说的内存是什么 比方说, ...
随机推荐
- Excel文件转为其他格式文件
引用:Spire.XLS 是一个 Excel 文件的读写库,无需安装office,使用起来也挺方便的.Spire还有一些其他的库(Spire.Doc,Spire.Pdf……) 说明:Spire.XLS ...
- iOS开发 SourceTree将develop合并到master分支的详细步骤
- linux二进制安装MariaDB
第一步:准备账号 [root@centos7 ~]#getent passwd mysql //查看有没有mysql账号(没有的话需要创建) [root@centos7 ~]#useradd -r m ...
- javascript 对象的原型
往往定义一个函数时,函数内部有关键字this时,就把这个函数当成对象,this相当于python中的self.都是对象中用到的,代表对象本身. js不像python,在函数内部定义的子函数,在每次创建 ...
- Hiero中修改BinView中binitem对象名字的方法
之前博客提到了scan for more version这样一个功能,该功能会放宽查询条件,这就会导致BinItem的名称与activeVersion的名称不符.这篇博客提供了一个方法去统一名称. 该 ...
- hadoop HA分布式集群搭建
概述 hadoop2中NameNode可以有多个(目前只支持2个).每一个都有相同的职能.一个是active状态的,一个是standby状态的.当集群运行时,只有active状态的NameNode是正 ...
- java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: " 0"
value = URLDecoder.decode(request.getParameter(paraName), "UTF-8"); 前端用了 encodeURI 来编码参数,后 ...
- idea下的调试配置
react和ts的整合 https://github.com/Microsoft/TypeScript-React-Starter vue的 https://github.com/ducksoupde ...
- 黄聪:php7配置php.ini使其支持<? ?>
<? ?>这种写在php配置文件里php.ini法叫short_tags,默认是不打开的,也就是,在默认配置的php里,这样写法不被认为是php脚本的,除非设置 short_open_ta ...
- 【linux】centos6.9设置etc0网卡开机自动获取ip
在vm新安装的centos系统中,一般选择NAT来设置和主机共享局域网,通过ifconfig etc0 192.168.xx.xx 这种作法机器重启之后就会失效,所以可以使用更改文件的方式完成设置ce ...