网络基础知识

HTTP请求和响应

HTTP 请求

项目非功能测试、接口测试

简称请求,是指从客户端到服务器的请求消息

通俗地讲,就是用户希望从服务器得到什么样的信息?
  • 以上图举例说明

用户在浏览器中输入要访问的网页地址 http://www.baidu.com

按下回车,浏览器会把请求以特定的方式发送给 www.itheima.com 服务器,请求得到 黑马程序员网站的首页的内容

客户端向服务器提的请求,就是HTTP 请求

HTTP 请求内容

在一个完整的 HTTP 请求中,除了包含要访问的网页地址外,通常还会包含以下内容:

  • 用户使用的浏览器类型,如:Chrome、Firefox、IE 等

  • 用户的浏览器支持的语言,如:中文还是英文

    ……

    注:这些额外的请求信息,都是在 HTTP 中规定好的

HTTP 响应

简称响应,是指从服务器返回给客户端的请求结果

通俗地讲,用户只有获取到服务器的请求结果之后,才能够在浏览器中显示出来

以上图来举例说明:

服务器接收到用户请求后,把用户需要的数据内容,以特定的方式传递给客户端

客户端接收到数据之后,把最终结果显示在浏览器中

服务器返回给客户端的数据结果,就是HTTP 响应

HTTP响应码

在一个完整的 HTTP 响应中,除了包含被访问的网页内容外,通常还会包含以下内容:

  • 状态码 用数字表示的响应状态,最常见的有:

    200 :表示成功
    3xx :表示数据路径发生改变--->重定向 302,304
    4xx :表示客户端问题,404表示页面没找到,403表示访问的数据被禁止
    5xx :表示服务器错误

  • 响应数据的长度,通常返回的数据内容越多,用户等待时间越长

  • 响应数据的类型,除了可以返回网页数据外还可以返回:图片、文字、音乐、视频...

      注:这些额外的响应信息,也是在 HTTP 中规定好的
    

科普:HTTPS

HTTPS 中的 S 是 Secure 的意思,就是在 HTTP 基础上增加了数据加密,从而使得客户端和服务器之间传输的数据更加安全。

 

HTTP请求方法--GET和POST

GET 和 POST 是两种最常见的HTTP 请求方法。

GET 方法

GET 方法就是从服务器拿数据

  • 用到Get方法的业务场景

    场景:

          在Tpshop网站上搜索某一个关键字
    

    背景:

          所有的数据都保存在Tpshop的服务器上
          客户端没有任何的数据
          客户端只需要告诉Tpshop的服务器需要搜索什么样的数据
    

从服务器拿需要的数据 使用的请求方法就是 GET 方法

  • GET方法表现形式

    使用 GET 方法请求的具体内容,可以在浏览器地址栏中看到。

  • 科普

    地址栏中输入的内容被叫做 URL,俗称网址--->统一资源定位符。

  • 练习

    在浏览器的地址栏中,输入以下内容,然后观察浏览器中显示的内容。

    https://www.baidu.com/s?wd=测试工程师

    其中:

          * s 表示搜索(search)
          * wd 表示关键字(word)
          * = 右侧就是要搜索的内容
    

POST 方法

POST 方法是把数据提交到服务器,然后服务器做出响应。

  • 用到POST方法的业务场景

    用户登录

          需要把用户名、密码告诉服务器
          密码出现在 URL 中显然不安全
    

    用户注册

          需要把用户注册信息告诉服务器
    

    商城购物

          需要把选购的商品告诉服务器
    
  • 观察以上几个场景,不难发现,无论是用户登录,还是选购商品:

      客户端需要把某些信息主动告诉给服务器,
      在客户端提交信息之前,服务器并不知道是哪一个用户要登录,也不知道用户具体要购买的商品。
    
  • POST方法表现形式

          使用 POST 方法请求的具体内容,在浏览器地址栏中无法看到
          可以在一定程度上保证数据安全,但是 POST 方法请求的数据,使用抓包工具可以拦截。

HttpWatch工具

HttpWatch是强大的网页数据分析工具.可以抓取http数据包,可以在IE和火狐浏览器上使用。

环境准备:目前不是所有的操作系统和浏览器都能使用httpwatch,此处可以选择 win10/8/7系统 + httpwatch9.4.17 + firefoxv35.0 版本。

工具准备:win10/8/7系统 httpwatch9.4.17 firefox v35

  • 断网安装火狐35.0 版本( 断网以免自动更新 ),一路下一步即可,安装后可以在选项中设置取消自动更新【 高版本火狐不支持httpwatch 】 (已经安装高版本的火狐浏览器的先卸载火狐,然后安装火狐35.0 版本)

项目非功能测试、接口测试

httpwatch安装:一路下一步即可

安装完成后在火狐浏览器工具中可以看到httpwatch

项目非功能测试、接口测试

Request Grid

常用功能描述:

项目非功能测试、接口测试

Time:请求所消耗的时间。
Sent:提交该请求所发送的字节数。
Received:提交请求后服务器返回的字节数。
Method:提交请求的方法。
Result:请求处理的结果。
Type:服务器返回内容的类型---text/html、image/gif、text/css
URL:请求的URL地址。

在测试过程中主要关注Time、Received、Result三项的值

Time是请求的耗时,需要注意耗时大的请求,
    因为在整个业务响应时间过程中,耗时长的请求是最有可能需要调优的;
Received是返回的字节数,在测试过程中需要关注返回字节数较大的需要,
    因为返回的字节数较大,会影响整个请求的耗时,它也是调优需要重点关注的内容;
Result是指请求响应的状态,需要关注其响应状态为非200的值,
    请求响应状态只有200是正确的,其他的都是异常的,
    如果请求出现异常情况,说明事务很有可能操作失败,这样直接影响了事务的成功率。

 HTTP Request

项目非功能测试、接口测试

HTTP 请求结构

在 HTTP里 请求和响应的消息结构都被分为三个部分,分别是 行、头、身体,所以请求消息的三个结构为请求行、请求头、请求体。( 头和体之间默认有一个空行 )

1.请求行:显示客户端请求方法 ,协议 及版本号
2.请求头:设置相应的参数
3.请求体:填写具体的提交数据

项目非功能测试、接口测试

 非功能测试:

效率性、
安全性、
兼容性、
易用性

效率性

  • 什么时候考虑?

    对处理有时间要求,用户量大的项目

  • 关注点

    访问项目时的时间

          即浏览器发送一个请求到服务器,从服务器获取数据并解析显示完整的页面所耗费的时间。

项目非功能测试、接口测试

  • 资源利用率(暂不考虑)

Httpwatch查看时间效率

以首页搜索功能为例

 

项目非功能测试、接口测试

安全性

  • 什么时候考虑?
    功能模块涉及到用户隐私信息,人身,财产安全等情况。

关注点:

安全性:登录时密码是否进行加密以及密码是否容易**

SQL注入:输入特殊符号使在数据库中生效:% _ '

示例---263.mail.net

登录时使用httpwatch抓取数据----查看请求实体

账户名均为:[email protected]
  • 第一次密码为:111111

    chr=gb&func=login&isp_domain=&verifycookie=&verifyip=&buttonType=1&usr=shijinxin&domain=qq.com&domainType=wm&encode=on&[email protected]&pass=%24491%3B%24491%3B%24491%3B%24491%3B%24491%3B%24491%3B&safelogin=on

  • 第二次密码为:222222

    chr=gb&func=login&isp_domain=&verifycookie=&verifyip=&buttonType=1&usr=shijinxin&domain=qq.com&domainType=wm&encode=on&[email protected]&pass=%24501%3B%24501%3B%24501%3B%24501%3B%24501%3B%24501%3B&safelogin=on

  • 第三次密码为:333333

    chr=gb&func=login&isp_domain=&verifycookie=&verifyip=&buttonType=1&usr=shijinxin&domain=qq.com&domainType=wm&encode=on&[email protected]&pass=%24511%3B%24511%3B%24511%3B%24511%3B%24511%3B%24511%3B&safelogin=on

          发现,抓取到的请求数据是有规律的,推测出密码为123456时的请求数据,并验证
    
  • 123456

    chr=gb&func=login&isp_domain=&verifycookie=&verifyip=&buttonType=1&usr=shijinxin&domain=qq.com&domainType=wm&encode=on&[email protected]&pass=%24491%3B%24501%3B%24511%3B%24521%3B%24531%3B%24541%3B&safelogin=on

兼容性

兼容性指软件对不同平台,不同环境的适应能力。

  • 什么时候考虑?

    项目要求在不同的操作系统、不同浏览器、不同的平台下操作时

关注点

  • OS

      不同的操作系统:Windows、Linux、mac等
    
      相同的操作系统不同的版本:win7、win8、win10
    
  • Browser(浏览器)

      不同的浏览器:三大主流---IE、Chrome、Firefox
    
      相同的浏览器不同的版本:IE---IE8、IE9、IE11
          可以通过F12开发人员工具选择IE版本;
    
      其他常用的浏览器,如:搜狗、360
          注意不同的版本:高速模式(Chrome)、兼容模式(IE)

 

易用性测试

易用性测试是指用户使用软件时是否感觉方便,比如是否最多点击鼠标三次就可以达到用户的目的。

关注点

项目难易程度
适用人群
用户的计算机水平

易维护性

易维护性指维护人员对该软件进行维护的难易程度,具体包括理解、改正、改动和改进该软件的难易程度。

 

接口测试

常见接口的类型

接口是指外部系统与系统之间以及内部各子系统之间的交互点。主要包括:

  • 程序内部接口

    功能和功能之间、模块和模块之间

          举例:登录和发帖、登录下订单
    

    用户界面

  • 系统外部接口

    第三方登录

          举例:QQ登录、微信登录、手机号登录
    

    第三方支付

          举例:支付宝支付、微信支付、银行卡支付

接口测试-fiddler工具

Fiddler的安装

基于Miscrosoft .Net Framework软件,必选先安装,一路下一步即可

NDP452-KB2901907-x86-x64-AllOS-ENU.exe

项目非功能测试、接口测试

 

Fiddler安装一路下一步即可

Fiddler_4.6.0.2.exe

项目非功能测试、接口测试

Fiddler的基本使用

  • 抓取请求和响应数据

    Browser ---> 选择要抓取的浏览器(IE、Firefox、Chrome) 如果有一个浏览器抓不到数据,就换另一个 选择Remove all 或者在下方黑框(命令行)输入cls可清理数据

项目非功能测试、接口测试

 

设置过滤

Filters菜单--->勾选Use Filters 在第二个下拉框中选择Show only the following Hosts--->只显示以下地址的请求和响应数据 Actions--->Run Filterset Now立即执行

项目非功能测试、接口测试

选中请求,右侧Inspectors

项目非功能测试、接口测试

fiddler的应用---修改接口请求数据

原理:越过界面验证,测试服务器端
  • 步骤

      1. 在Fiddler中做过滤
    
      选择 Fiddler 菜单中 Rules--->Automatic Breakpoints--->Before Requests,设置断点  
      也可以使用快捷键 F11;

项目非功能测试、接口测试

 

过程的理解

  1. 拦包
  2. 修改数据
  3. 重新发包

 

 

接口测试的定义

  • 百度百科

    接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

接口测试(举例)

不依赖浏览器页面,验证Tpshop首页是否可以访问?

已知:tpshop首页接口地址:www.shop.com

Fiddler中Composer应用---模拟接口

可以通过Composer模拟发送接口请求和数据,不用特意先拦截下来再去修改数据

1. 点击右侧Composer--->Options--->Trea off 让它单独显示;

项目非功能测试、接口测试

 

2. 点击Parsed,可以手动输入,也可把我们抓到的包拖动到Composer中,进行相应的修改;

3. 点击【Execute】发送请求。

项目非功能测试、接口测试

接口测试的意义

WEB项目中可以脱离页面进行测试 能发现页面上发现不了的缺

相关文章: