zoukankan      html  css  js  c++  java
  • 接口测试基础知识(一)—— 认识接口

    一. 什么是接口

    1. 泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方式,就如面向对象程序设计提供的多重抽象化(百度百科)

    2. 同一计算机不同功能层之间的通信规则称为接口(百度百科)

    3. 指外部系统与系统之间以及内部各子系统之间的交互点。包括外部接口、内部接口,内部接口又包括:上层服务与下层服务接口、同级接口

    二. 接口的类型

    1)系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的。

    2)程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,那么这两个模块就得有交互,它就会抛出一个接口,供内部系统进行调用。

    三. 软件接口的分类

    1)webservice接口

    使用soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试

    2)http api接口

    使用的http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,常用方法有有get、post、put和delete等,后文讲解的接口的组成指的就是api接口

    扩展知识:不同软件之间对接常用的接口协议:

    1) OPC协议:

    OPC(Object Linking and Embedding(OLE) for Process Control)是微软公司的对象连接和嵌入技术在过程控制方面的应用。该标准中定义了在基于PC的客户机之间进行自动化数据实时交换的方法。

    2) ODBC

    开放数据库连接(Open Database Connectivity,ODBC)是为解决异构数据库间的数据共享而产生的,现已成为WOSA(The Windows Open System Architecture(Windows开放系统体系结构))的主要部分和基于Windows环境的一种数据库访问接口标准ODBC 为异构数据库访问提供统一接口。

    3) WebService协议

    是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,Web Service技术,能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。

    4) Http Restful协议

    是一种网络应用程序的设计风格和开发方式,适用于移动互联网厂商作为业务使能接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。

    四. 接口的工作原理

    接口就是一个位于复杂系统之上并且能简化你的任务,它就像一个中间人让你不需要了解详细的所有细节。像谷歌搜索系统,它提供了搜索接口,简化了你的搜索任务。再像用户登录页面,我们只需要调用我们的登录接口,我们就可以达到登录系统的目的。

    本质就是数据的传输与接收

    五. 接口的组成

    这一块部分数据参考文章:https://www.jianshu.com/p/9a68281a3c84

    详细的http信息可参考:https://www.cnblogs.com/leslie12956/p/12463487.html

    1.请求报文

    HTTP请求报文:由3部分组成(请求行+请求头+请求体):

    请求行:包括请求方法,请求url,http协议及版本

    请求头:由多个属性组成

    请求体:请求的正文,以key=value形式进行存储,多个请求参数之间用&连接

    1). 请求URL

    url是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它(来自百度)。通俗来说就是网址,例如https://www.baidu.com/

    一个URL其实就是一个接口,以这个url为例:https://www.cnblogs.com/leslie12956/p/12448995.html,URL由以下几个部分组成:

    1) https--》请求协议,通常出现在‘://’之前,用来告诉web服务器怎么去访问该资源

    http — 超文本传输协议,基于客户/服务器模式,且面向连接的,普通的http请求

    https — 超文本传输安全协议,由 HTTP 加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,加密的http请求,传输数据更加安全

    ftp — 文件传输协议,主要用来传输文件

    2) www.cnblogs.com--》请求IP或服务器名称:就是指提供接口的系统所部署的服务器地址, 用来告诉客户端资源的位置或路径

    3) 请求端口:主机用来监听 HTTP 请求的端口号,端口号是跟在URL的IP地址后面的,用冒号:分隔开, 如果url不填端口,默认是80,否则需要填写端口号

    4) leslie12956/p/12448995.html--》接口路径:指系统提供的接口在什么位置,或者服务器请求客户端的本地资源名称,有时候会指向特定资源

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

    2). http协议和版本

    目前常用的支持HTTP/1.0和HTTP/1.1方式

    两者之前的区别可参考:https://blog.csdn.net/jiyingying_up/article/details/9343097

    3). http请求方式

    常用的请求方式为get、post、put、delete。

    GET --- 通过请求URI从指定的服务器获取数据,请求可被缓存,有长度限制

    POST --- 用于添加新的内容,提交数据到指定的服务区,请求不可被缓存,无长度限制

    PUT --- 用于修改某个内容,从客户端向服务器传送数据取代指定内容

    DELETE ---请求服务器删除某个内容

    CONNECT --- 用于代理进行传输,如使用SSL,HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

    OPTIONS --- 询问可以执行哪些方法,允许客户端查看服务器性能

    PATCH --- 部分文档更改,实体中包含一个表,表中说明与该url所表示的原内容的区别

    PROPFIND (wedav) --- 查看属性

    PROPPATCH (wedav) --- 设置属性

    MKCOL (wedav) --- 创建集合(文件夹)

    COPY (wedav) --- 拷贝,请求服务器将指定页面拷贝到另一个网络地址

    MOVE (wedav) --- 移动,请求服务器将指定页面移动到另一个网络地址

    LOCK (wedav) --- 加锁

    UNLOCK (wedav) --- 解锁

    TRACE --- 用于远程诊断服务器

    HEAD --- 类似于GET, 但是不返回body信息,用于检查对象是否存在,以及得到对象的元数据

    常用方法的详细解析(来自百度):

    1.GET

    get方法请求指定的页面信息,返回实体主体。该请求是向服务器请求信息,请求参数会跟在url后面,因此,对传参长度有限制的,而且不同浏览器的上限是不同的(2k, 7~8k及其他)。由于get请求直接将参数暴露在url中,因此对于一些带有重要信息的请求可能并不完全合适。

    2.POST

    post请求是向指定资源提交数据进行处理请求,例如提交表单或者上传文件等。数据被包含在请求体中,POST请求可能会导致新的资源的建立和/或已有资源的修改。post方法没有对传递资源的大小进行限制,往往是取决于服务器端的接受能力,而且,该方法传参安全性稍高些

    3.PUT

    PUT方法是从客户端向服务器传送的数据取代指定的文档的内容。PUT方法的本质是idempotent的方法,通过服务是否是idempotent来判断用PUT 还是 POST更合理,通常情况下这两种方法并没有刻意区分,根据语义使用即可

    4.DELETE

    请求服务器删除指定的页面,DELETE请求一般会返回3种状态码:

    • 200 (OK) - 删除成功,同时返回已经删除的资源
    • 202 (Accepted) - 删除请求已经接受,但没有被立即执行(资源也许已经被转移到了待删除区域)
    • 204 (No Content) - 删除请求已经被执行,但是没有返回资源(也许是请求删除不存在的资源造成的)

    5.OPTIONS

    允许客户端查看服务器的性能。(常见的是跨域预检Preflighted Reqeusts方法会采用该方法)。一般来说,开发中用到该方法是用来获取服务器支持的请求类型或者查看服务器类型,来确保接下来发送的请求够安全。该请求方法的响应不能缓存。如果该URI是一个星号(“*”),OPTIONS请求将试图应用于服务器,而不是某个指定资源;如果该URI不是星号,则只能用来获取该资源通信中可用的选项。

    tips:

    方法名称是区分大小写的,当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Mothod Not Allowed);当服务器不认识或者不支持对应的请求方法时,应返回状态码501(Not Implemented)。

    4). http请求头

    HTTP的报文头的属性,目的是为了让客户端和浏览器端交流更加便捷、顺利,里面记录了客户端的一些基本信息

    常见的属性

    • Accept:告诉服务器当前浏览器能接受和处理的介质类型,*/*表示可接受所有类型。
    • Accept-Encoding:告诉服务器当前浏览器支持的内容编码,包括字符编码,压缩形式(一般都是压缩形式)。
    • Accept-Language:告诉服务器当前浏览器能接受和处理的语言。上述请求中的zh-CN,zh;q=0.8表示用户对zh-CN的喜好程度为80%。
    • Connection:keep-alive,告诉服务器在完成本次请求的响应后,保持该TCP连接不释放,等待本次连接的后续请求。这样可以减少打开关闭TCP连接的次数提升处理性能。另外的可选项是Close,表明直接响应接受完成后直接将其关闭。
    • Content-Length:用于描述HTTP消息实体的传输长度。
    • Content-Type:内容类型,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件。
    • Referer:表示这是请求是从哪个URL进来的,比如想在网上购物,但是不知道选择哪家电商平台,你就去问度娘,说哪家电商的东西便宜啊,然后一堆东西弹出在你面前,第一给就是某宝,当你从这里进入某宝的时候,这个请求报文的Referer就是www.baidu.com
    • Cache-Control:对缓存进行控制,如一个请求希望响应的内容在客户端缓存一年,或不被缓可以通过这个报文头设置
    • Host:指定要请求的资源所在的主机和端口
    • User-Agent:告诉服务器,客户端使用的操作系统、浏览器版本和名称

    详细的属性可参考:https://www.cnblogs.com/leslie12956/p/12992567.html

     5) http请求体

    将一个页面表单中的组件值通过param1=val1&parma=2的键值对形式编码成一个格式化串,它承载多个请求参数的数据,

    请求体的格式:

    • json格式(常用)
    • xml格式
    • html格式
    • 二进制格式( 多数用于图片 )
    • 字符串格式

    2. 响应报文

    HTTP响应报文:也由三部分组分(响应行,响应头,响应体):

    响应行:标识服务器端对客户端请求的处理结果,主要由协议及版本,响应状态码和描述

    响应头:由多个属性组成

    响应体:接口返回的数据

    1). 接口返回的响应状态码

    HTTP的响应状态码由5段组成: 

    • 1xx 消息,一般是告诉客户端,请求已经收到了,正在处理,别急..
    • 2xx 处理成功,一般表示:请求收悉、我明白你要的、请求已受理、已经处理完成等信息.
    • 3xx 重定向到其它地方。它让客户端再发起一个请求以完成整个处理。
    • 4xx 处理发生错误,责任在客户端,如客户端的请求一个不存在的资源,客户端未被授权,禁止访问等。
    • 5xx 处理发生错误,责任在服务端,如服务端抛出异常,路由出错,HTTP版本不支持等。

    2). 接口响应报文头

    由多个属性组成,类似于请求头的key:value形式,常见的有:

    • content-encoding:响应的编码格式
    • content-type:响应内容的类型
    • date:响应的时间。此处使用的是GMT标准时间
    • server:处理请求的源头服务器所用到的软件相关信息
    • strict-transport-security:HTTP Strict Transport Security(通常简称为HSTS)是一个安全功能,它告诉浏览器只能通过HTTPS访问当前资源, 禁止HTTP方式。

    详细的属性可参考:https://www.cnblogs.com/leslie12956/p/12992567.html

    3). 接口响应报文体

    服务器返回的HTML页面或者json数据,一般在响应头当中会用Content-Length来明确响应体的长度,便于浏览器接收,对于大数据量的正文信息,也会使用chunked的编码方式

  • 相关阅读:
    一款垃圾的仿资源管理器+局域网Ping网段的工具(winform+异步线程) 留了问题
    ruby实现按键精灵的功能
    委托与事件 在.net的争霸战 ,你选择了谁?(异步委托产生的原因)
    小记C语言指针p与*p
    奔波的这 3月份
    ruby实现删除自定义后缀名文件Find
    "new" 出一个新未来——关于new的揭秘
    学了一招半式策略模式(设计模式)
    配置类的定义与使用
    js编写
  • 原文地址:https://www.cnblogs.com/leslie12956/p/12991414.html
Copyright © 2011-2022 走看看