接口测试

1、软件开发的两种结构

  1.1、CS(Client/Server):客户端---服务器结构。

    C/S结构在技术上很成熟,他得主要特点时交换性强、具有安全的存取模式、网络通信量低、响应速度快、利于处理大量数据。

    

    C/S的优缺点

    优点

  • C/S客户端响应速度快
  • 形式多样、能满足自身的个性化
  • C/S业务处理能力强 
  • C/S安全性高kaifa       

    缺点

  • 兼容性差
  • 维护成本高
  • 用户群固定                                                                

   1.2、B/S(Browser/Server):浏览器----服务器结构  

     

     是目前应用系统的发展方向。B/S是伴随internet技术的兴起,对C/S架构的改进,为了区别传统的C/S模式,特意称为B/S模式,通常W3浏览器来进入工作界面

    B/S的优缺点

    优点

  • 分布性强,客户端零维护
  • 业务拓展简单方便
  • 维护简单
  • 开发简单 共享性强

    缺点

    个性化特点明显降低,无法实现具有个性化的功能要求

  • 在跨浏览器上,BS架构不尽人意
  • 客户端服务器端的交互是请求-响应模式,通常动态刷新页面,响应速度明显降低(Ajax可以一定程度上解决这个问题)。无法实现分页显示,给数据库访问造成较大的压力。

  • 速度和安全性设计成本高
  • 功能弱化,难以实现传统模式下的特殊功能要求

  1.3、B/S与C/S的区别

    C/S响应速度快,安全性强,用户体验好,一般应用用于局域网中,但是开发维护成本高

    B/S可以实现跨平台,客户端零维护,但是个性化能力低,响应速度较慢。

    所以有些单位日常办公应用B/S,在实际生产中使用C/S结构

2、HTTP协议

  2.1、什么是http协议

    HTTP协议是超文本传输协议是Hyper Text Transfer Protocol的缩写

    HTTP是一个客户端和服务器端请求和应答的标准

    客户端是终端用户,服务器端是网站

 

      我们在浏览器的地址栏里输入的网站地址叫做URL (Uniform Resource Locator,统一资源定位符)

      

HTTPURL

HTTP使用统一资源定位符(Uniform Resource Identifiers, URI)来传输数据和建立连接。URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息

URL,全称是UniformResourceLocator, 中文叫统一资源定位符,是互联网上用来标识某一处资源的地址。以下面这个URL为例,介绍下普通URL的各部分组成:

http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name

从上面的URL可以看出,一个完整的URL包括以下几部分:

  1. 协议部分
  2. 域名部分
  3. 端口部分
  4. 虚拟目录部分
  5. 文件名部分
  6. 参数部分

    2.2.HTTP1.0和HTTP1.1的区别

请求方式:

HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE trace和 CONNECT 方法。

GET  请求指定的页面信息,并返回实体主体。

HEAD     类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头

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

PUT  从客户端向服务器传送的数据取代指定的文档的内容。

DELETE   请求服务器删除指定的页面。

CONNECT  HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

OPTIONS  允许客户端查看服务器的性能。

TRACE    回显服务器收到的请求,主要用于测试或诊断。

2.3、TCP和UDP的优缺点

 

TCP的优点: 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。

 

 TCP的缺点: 慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。 而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。

 

 

UDP的优点: 快,比TCP稍安全 UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的,比如:UDP Flood攻击……

 

UDP的缺点: 不可靠,不稳定 因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。 基于上面的优缺点,

 

那么: 什么时候应该使用TCP当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTPHTTPSFTP等传输文件的协议,POPSMTP等邮件传输的协议。 在日常生活中,常见使用TCP协议的应用如下: 浏览器,用的HTTP FlashFXP,用的FTP Outlook,用的POPSMTP Putty,用的TelnetSSH QQ文件传输 …………

 

 什么时候应该使用UDP: 当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。 比如,日常生活中,常见使用UDP协议的应用如下: QQ语音 QQ视频 TFTP ……

 

 

有些应用场景对可靠性要求不高会用到UPD,比如长视频,要求速率

TCP和UDP的区别

 

 

TCP传输控制协议,需要建立连接,可靠协议,效率会稍低

 

UDP是数据包协议,不需要建立连接,不可靠协议,速度快,效率高

2.4、HTTP常用的请求方式

  get请求 在浏览器直接输入URL GET请求数据位于请求行中

 

  

       post请求 POST请求数据位于请求体中

      

    2.5、Get和Post请求的区别

  1GET使用URLCookie传参。而POST将数据放在BODY中。

  2GETURL会有长度上的限制,2kbPOST的数据则可以非常大。

  3POSTGET安全,因为数据在地址栏上不可见。

  4、一般get请求用来获取数据,post请求用来发送数据。

 2.6http请求—消息头Request

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:

 

请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。

 

请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本。

第一部分:请求行,第一行明了是post请求,以及http1.1版本。
第二部分:请求头部,第二行至第六行。
第三部分:空行,第七行的空行。
第四部分:请求数据,第八行。

Accept: text/html,image/*      -- 浏览器接受的数据类型
Accept-Charset: ISO-8859-1     -- 浏览器接受的编码格式
Accept-Encoding: gzip,compress  --浏览器接受的数据压缩格式
Accept-Language: en-us,zh-     --浏览器接受的语言
Host: www.it315.org:80          --(必须的)当前请求访问的目标地址(主机:端口)
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT  --浏览器最后的缓存时间
Referer: http://www.it315.org/index.jsp      -- 当前请求来自于哪里
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)  --浏览器类型
Cookie:name=eric                     -- 浏览器保存的cookie信息
Connection: close/Keep-Alive            -- 浏览器跟服务器连接状态。close: 连接关闭  keep-alive:保存连接。
Date: Tue, 11 Jul 2000 18:23:51 GMT      -- 请求发出的时间

 

    2.7、HTTP之状态码

状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:

1xx:指示信息--表示请求已接收,继续处理

2xx:成功--表示请求已被成功接收、理解、接受

3xx:重定向--要完成请求必须进行更进一步的操作

4xx:客户端错误--请求有语法错误或请求无法实现

5xx:服务器端错误--服务器未能实现合法的请求

常见状态码

200 OK                        //客户端请求成功

400 Bad Request               //客户端请求有语法错误,不能被服务器所理解

401 Unauthorized              //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用

403 Forbidden                 //服务器收到请求,但是拒绝提供服务

404 Not Found                 //请求资源不存在,eg:输入了错误的URL

500 Internal Server Error        //服务器发生不可预期的错误

503 Server Unavailable         //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

更多状态码:http://www.runoob.com/http/http-status-codes.html

3、Cookie和Session介绍     

客户端技术   Cookie

 

两个经典应用场合:判定注册用户是否已经登录网站,购物车。

 

服务端技术   Session

 

经典应用场合一般就是在Session中存储了用户的登录信息,进而可以访问一些需要权限才能访问的页面。

3.1、Cookie应用场景

  记录上一次访问时间

  记录用户名登录

  显示浏览记录

3.2、Cookie原理分析

  

     3.3、Session介绍

在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。

3.4、Session与Cookie的主要区别在于:

Cookie是把数据保存在浏览器端的内存中

Session把数据保存在服务器端的内存中

3.5、cookiesession的联系:

当服务器端生成一个session时就会向客户端发送一个cookie保存在客户端,这个cookie保存的是sessionsessionId。。这样才能保证客户端发起请求后客户端已经登录的用户能够与服务器端成千上万的session中准确匹配到已经保存了该用户信息的session,同时也能够确保不同页面之间传值时的正确匹配。

4、接口测试

  4.1、什么是接口  

API接口是Application Programming Interface的简称,是一些预先定义的函数,包括接口地址、传入参数和返回参数。

4.2、什么是接口测试

接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。

一般我们用的多的是HTTP协议的接口、WebService协议的接口,还有RPC(Remote Procedure Call Protocol)——远程过程调用协议的接口

不管是哪种接口,其本质就是发送一个request,然后服务器响应后返回一个response,然后我们对response进行分析,这即是接口测试。

 

接口的分类

  1.webservice接口:webService接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的,只有工具才可以调用。

  2.http api接口:http api接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式

      一个URL就是一个接口:接口大致会分为一下几个部分:

        

请求协议:

http --- 普通的http请求

https --- 加密的http请求,传输数据更加安全

请求IP:就是指提供接口的系统所部署的服务器地址

请求端口:如果不填端口,默认是80,否则需要填写端口号

接口路径:指系统提供的接口在什么位置

接口参数:参数在接口路径后,用“?”来表示路径地址完了,剩下的都是参数了,用“&”来区分参数个数,

 

 

4.3、接口测试用例编写要点

测试每个参数类型不合法的情况

测试每个参数取值范围不合法的情况

测试参数为空的情况

测试参数前后台定义的一致性

测试每个参数的上下限(这里容易出致命的BUG,如果程序处理不当,可能导致崩溃)

测试每个参数取值不合理的情况(包括取的值不属于自己,取值在这阶段不会出现,取值超出了自己所拥有的数量或者范围)

如果两个请求有严格的先后顺序,需要测试调转顺序的情况

自己和自己的交易、聊天等操作(这种特别容易遗漏)

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/wanglisen/p/14063759.html