漫游测试之性能测试(2.1、HTTP的简要描述)

HTTP协议是日常工作中的主要用到的协议,因此了解此协议也是进行大多数后端性能测试工作的前端。

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议,它是一个应用层协议,由请求和响应构成。HTTP是一个无状态的协议。

HTTP协议通常承载于TCP协议之上,有时也承载于TLSSSL协议层之上此时称之为HTTPS协议。如下图所示:

HTTP协议都是客户端发起请求,服务器回送响应,HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系

一次HTTP操作称为一个事务,其工作过程可分为5步:

a)首先客户机与服务器需要建立连接(创建连接,比如说点击某个连接)。

b)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号、请求修饰符、内容等等。

c)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码可能的内容等。

d)客户端接收服务器所返回的信息

e)然后客户机与服务器断开连接。

如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端。返回的错误信息不定会在应用中进行体现,但是通过抓包是肯定能够看到的。

网上这篇文章对此过程进行了描述和计解:

 

出自:https://www.cnblogs.com/wangning528/p/6388464.html

如下例所示一个HTTP协议发出的请求:

 

C代码客户端,S代码服务端的返回;根据上图,可知HTTP的内容无论是发出请求的客户端还是回应的服务端消息,其只包括2部分内容,即地址、包头、内容;

HTTP请求的方法、地址、版本:POST http://experiment.appadhoc.com/get_flags_async HTTP/1.1

请求包头:

Host: experiment.appadhoc.com

Connection: keep-alive

Content-Length: 535

Origin: http://blog.csdn.net

User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36

Content-Type: application/json;charset=UTF-8

Accept: */*

Referer: http://blog.csdn.net/

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9

请求内容:

{"app_key":"ADHOC_3f25bcb4-f154-4b7c-8a82-f79b81816578","client_id":"621f3b94-de90-3ec1-50de-c5a875480dde"}

 

响应包头:

HTTP/1.1 200 OK

Server: Tengine/2.1.2

Date: Wed, 31 Jan 2018 01:24:57 GMT

Content-Type: application/json; charset=UTF-8

Content-Length: 73

Connection: keep-alive

Access-Control-Allow-Origin: *

响应内容:

{"experiments":[{"id":"CONTROL","name":"CONTROL","flags":[]}],"flags":{}}

客户端请求的时候包头的字段非常多,当遇到不熟悉的包头时,需要引起注意,了解其含义,有时脚本的运行可能就依赖这个包头,比如以下请求的token包头用来控制用户的session信息:

POST http://xxx.xx.xx.xx:5408/app/xxxxName.do HTTP/1.1

Host: xxx.xx.xx.xx:5408

Accept: */*

version: 3.1.1

Connection: keep-alive

Accept-Encoding: gzip, deflate

Accept-Language: zh-Hans-CN;q=1

platform: ios

flag: 01

token: 0f7ce211b91f454e8a57023da02cbe79

User-Agent: QHZC_DEV/3.1.1 (iPhone; iOS 10.3.3; Scale/2.00)

Connection: keep-alive

Content-Length: 63

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

如果想了解更多的包头字段http://blog.csdn.net/charleslei/article/details/50621912

返回消息包头一般不需要太观注,一般只在登录后获取到的session消息用来传递到下面的请求,一般的性能测试工具都可以自动的关联session

比如某登录请求的响应:

 

下一个请求中使用到了上一个请求返回中的seesion信息。

 

 

HTTP一共有8种请求方法,但我们实际工作中经常遇到的大多只有GETPOST方法:

GET 方法:

向特定的资源发出请求。它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。

POST 方法:

向指定资源提交数据进行处理请求,如提交表单或者上传文件。POST请求可能会导致新的资源的建立和/或已有资源的修改。

更多HTTP方法:http://blog.csdn.net/resilient/article/details/52585724

猜你喜欢

转载自blog.csdn.net/womengdoushizhongguo/article/details/80040002