新书连载06软件测试专项技术—HTTP

Posted 51Testing软件测试网

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新书连载06软件测试专项技术—HTTP相关的知识,希望对你有一定的参考价值。


【新书连载06】软件测试专项技术—HTTP
1.2.7  HTTP
【新书连载06】软件测试专项技术—HTTP

  超文本传输协议(HyperText Transfer Protocol,HTTP)是Web联网的基础,也是手机联网常用的协议之一。

  从图1-15可以看出相关协议和OSI参考模型的关系。

  从图1-15中还可以看出,HTTP是一个应用层协议,也就是传输层的上一层协议。HTTP只定义传输的内容,不定义传输方式(这是底层协议做的事情),因此,要想理解HTTP,只需要理解协议的数据结构及其意义。

  HTTP是一种请求-应答式协议。其显著特点是客户端发送的每个请求都需要服务器返回响应,而且在请求结束后,它会主动释放连接。从建立连接到关闭连接的过程称为"一次连接"。

  下面比较HTTP 1.0和HTTP 1.1之间的差异。

  • 在HTTP 1.0中,对客户端的每个请求都要建立一次单独的连接,在处理完请求后,自动释放连接。

  • 在HTTP 1.1中则可以在一次连接中处理多个请求,并且多个请求可以重叠执行,不需要等待一个请求结束后再发送下一个请求。


  【新书连载06】软件测试专项技术—HTTP

图1-15  相关协议和OSI参考模型的关系


  由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种"短连接"。要保持客户端程序处于在线状态,需要不断向服务器发起连接请求。通常的做法是即使不需要获取数据,客户端也每隔一段固定时间向服务器发送一次"保持连接"的请求,服务器在收到该请求后对客户端进行回复,以表明知道客户端"在线"。若服务器长时间未收到客户端的请求,则认为客户端已"下线"。若客户端长时间无法收到服务器的回复,则认为网络已经断开。

  1.HttpWatch的抓包方法

  为了更好地理解HTTP请求和响应,可以使用HttpWatch工具抓取一些数据包。下面介绍HttpWatch的抓包方法。

  (1)安装完HttpWatch后,从菜单栏选择"工具"→"浏览器栏"→HttpWatch Professional,打开HttpWatch,如图1-16所示。

  (2)单击工具栏上的Record按钮,如图1-17所示。

  【新书连载06】软件测试专项技术—HTTP

图1-16  HttpWatch的打开方式


【新书连载06】软件测试专项技术—HTTP

  图1-17  单击工具栏上的Record按钮


  (4)按Enter键进行访问,可以发现HttpWatch已经开始抓包了。待页面打开后,单击Stop按钮,如图1-18所示。

  【新书连载06】软件测试专项技术—HTTP  

图1-18  单击Stop按钮


  (5)选择任意一条录制的信息,单击下方的Headers选项卡,查看里面是否有内容。如果有内容,那么说明录制、抓取成功,如图1-19所示。

  【新书连载06】软件测试专项技术—HTTP

图1-19  录制、抓取成功


  2.HTTP请求

  在HTTP常用的请求类型中,GET请求和POST请求较重要。这两种请求代表了客户端和服务器之间传输数据的典型方式,它们在Web系统的开发和测试中非常重要。无论是哪种请求,都是由头部和正文两部分组成的,但GET请求的正文为空,POST请求的正文为提交给服务器端的数据。

  1)GET请求

  GET请求是指客户端发送一个请求给服务器,目的是从服务器端获取资源。例如,当我们访问一个网站时,输入相应网址并按Enter键后,便发送了一个GET请求给服务器端,请求服务器端返回该网站首页的html代码。事实上,通过工具监控,可以了解图1-20所示的请求过程。

   【新书连载06】软件测试专项技术—HTTP

图1-20  请求过程


  当访问前面提到的http://172.21.200.189/oscommerce/index.php时,发送了多个GET请求,原因在于构成该网站首页的资源除了HTML代码外,还包括很多图片、动画、javascript脚本和CSS格式化文件。在HTTP中,一个请求只能对应一个特定的资源,而不能对应整个页面,这一点首先需要了解。

  不妨先使用HttpWatch工具来监控访问该网站首页时的请求过程,监控结果如图1-21所示。切换到Stream选项卡,根据需要,可以单击Export按钮将结果导出。

   【新书连载06】软件测试专项技术—HTTP

图1-21  监控结果及结果导出操作


  分别单击两个Export按钮,导出两个txt文件--index.php.request和index.php. response。打开txt文件 index.php.request,如图1-22所示。


【新书连载06】软件测试专项技术—HTTP

图1-22  打开index.php.request文件


  其中,GET /oscommerce/index.php HTTP/1.1指明了3个关键信息:请求类型为GET,资源URL为/oscommerce/index.php,协议类型和版本为HTTP/1.1。

  标准GET请求包含的关键字段如下所示。

  • Accept:告诉服务器当前浏览器能接受和处理的介质类型,"*/*"表示可接受所有类型。

  • Accept-Language:告诉服务器当前浏览器能接受和处理的语言。zh-CN表示浏览器接受中文。还有其他很多能接受和处理的语言,如en-US(英文)。

  • User-Agent:告诉服务器当前客户端的操作系统和浏览器的内核版本信息。

  • Accept-Encoding:告诉服务器端当前客户端支持的编码格式,如gzip,这样服务器端可以将HTML、JavaScript或CSS文本型资源压缩后再传递给浏览器,浏览器接收到它们后再解压缩,从而显著减少资源占用的带宽和网络上的传输时间。

  • Connection告诉服务器浏览器想要使用连接方式,如 Keep-Alive,告诉服务器在完成本次请求的响应后,保持该TCP连接,不释放,以等待本次连接的后续请求。这样可以减少打开及关闭TCP连接的次数,提升处理性能。另外,可选的选项还有Close,它表明在接收响应后将直接关闭连接。


【新书连载06】软件测试专项技术—HTTP

图1-23  得知来访者是从哪个网站访问本网站的


  Cookie:将客户端的Cookie信息发送给服务器端。关于Cookie的作用及详细用法,将在后续章节中介绍。

  2)POST请求

  POST请求与GET请求最大的区别就在于,GET请求主要负责数据的获取,而POST请求主要负责数据的提交,并且把所有提交的数据放在请求的正文中。

  在访问http://172.21.200.189/oscommerce/index.php网站时,输入用户名和密码并单击"登录"按钮后,就能看到POST的信息,如图1-24所示。


  【新书连载06】软件测试专项技术—HTTP

图1-24  关于POST的信息


  将Stream选项卡中的内容导出为txt文件并打开,如图1-25所示。

  可能有读者注意到了最后一行内容,显示用户的账号和密码,这说明这个站点的安全性较低。

  下面对比一下百度的登录信息,如图1-26所示。

  从关于 POST 的信息中可以看到,百度已经对登录账号进行了加密。http://172.21. 200.189/oscommerce/index.php网站在这方面存在很大的安全隐患。


【新书连载06】软件测试专项技术—HTTP图1-25  导出的内容


【新书连载06】软件测试专项技术—HTTP

  【新书连载06】软件测试专项技术—HTTP  图1-26  百度的登录信息


  3.HTTP响应

  HTTP响应与请求类似,同样分为两部分--头部和正文。响应中的头部主要是由服务器端返回给客户端的,用于获取一些服务器端的信息。响应的正文就是请求的各类资源的内容。如果请求的是HTML文件,则正文是HTML文件的源代码;如果请求的是JavaScript文件,则正文是JavaScript代码;如果请求的是图片,则正文就是该图片。

  先来看看响应中头部的内容。同样切换到Stream选项卡,查看窗口右边的内容,这里需要把响应的内容导出为文本文件,如图1-27所示。


【新书连载06】软件测试专项技术—HTTP

图1-27  响应文件的内容


  响应文件里面的字段内容和GET请求中的相似,其中一个不同之处需要解释。

  "Transfer-Encoding: chunked"表示在HTTP中使用Content-Length这个头部来告知数据长度。在数据下行的过程中,Content-Length要预先在服务器中缓存所有数据,然后把所有数据一起发给客户端。如果要在产生数据的同时发给客户端,那么Web服务器就要使用"Transfer-Encoding: chunked"这种方式来代替Content-Length。Transfer-Encoding用于指定HTTP的编码方式,chunked编码的基本方法是将大块数据分解成多块小数据,每块都可以指定长度。

  然后,查看HTTP响应的状态码。在响应的第一行中,包含了两个信息:一是HTTP的协议版本号,这里服务器告知浏览器它使用的版本是HTTP 1.1,浏览器可以按照HTTP 1.1的版本规则来对服务器进行解析;二是响应的状态码,这里"200 OK"表示响应完全正常。

  响应的状态码由5类状态码组成,其中1xx(状态码为100~199)属于参考信息,2xx指明成功接受请求并已完成整个处理过程,3xx用于重定向,4xx指出客户端错误,5xx则表示服务器端错误,具体见表1-1~表1-5。


【新书连载06】软件测试专项技术—HTTP

【新书连载06】软件测试专项技术—HTTP

【新书连载06】软件测试专项技术—HTTP

【新书连载06】软件测试专项技术—HTTP


……


扫码/点击阅读原文立即查看本章完整内容


【新书连载06】软件测试专项技术—HTTP


“阅读原文”,试读本书!

以上是关于新书连载06软件测试专项技术—HTTP的主要内容,如果未能解决你的问题,请参考以下文章

新书连载19测试场景运行——软件接口测试实战详解

新书上市 | 连载 5 年,千万读者追更,这本书讲透了通信背后的故事!

专项测试用户纬度及技术方案

专项测试之HTTP接口测试还可以这么玩

app测试专项--@松勤技术分享

技术分享|软件可靠性设计-连载