接口测试详解

什么是接口?

  硬件接口:usb接口(外部设备和电脑交换数据)
  软件接口:统称为api,例如微信充值接口、提现接口
    内部接口:开发人员自己开发的接口,对自身系统提供数据交互的。
    外部接口:调用外部应用
  总结:接口就是软件提供给外部的服务,主要用于交互数据
  为什么需要接口?
    接口能够让内部数据被外部进行修改
    银行系统(银联支付接口)
  为什么做接口测试?
    1.项目都是前后端分离(mock server)
    2.基于安全考虑:前端的js认证容易绕过直接攻击后端接口。容易暴露敏感信息(接口鉴权)
    3.测试左移。要尽早介入到项目周期

接口及接口测试的本质

  接口的本质是:函数,动作
  接口测试的本质就是:测试接口是否能够正常实现数据交互,异常场景,权限控制

接口返回的数据格式

  1.json格式
    开发规则:{error_code:0,message:返回说明,data:返回数据}
    error_data:错误码,0表示
    message:错误码的中文说明
    data:接口具体返回数据
    json只包含两种数据格式:
      1.键值对{key:value}
      2.数组[1,2,3]
  2.html格式
  3.xml格式

接口架构

  SOAP架构:webservice协议。接口地址:http://...?wsdl(表示webservice dictionary language)
  RPC架构:dubbo协议。接口地址:dubbo://...(springcloud微服务)
  RestFul架构:http协议。http://...
  http协议
    http是一种超文本传输协议,主要作用于浏览器和服务器之间交互数据,交互数据分为请求和响应两个部分
    请求
      请求行:请求方式、请求地址、协议版本
      请求头:
        Host:请求主机
        Connection:keep-alive 保持活跃
        Content-length:内容长度
        Accept:客户端接收的数据格式
        X-Request-with:XMLHttpRequest(异步请求,一般用于登录)
        User-Agent:工具名称,浏览器名称。客户端的角色。
        Content-Type:请求的内容格式。x-www-form-urlencoded
        Cookie:cookie信息
    响应
      响应行(状态码)、响应头(set-Cookie)、相应正文(响应数据)
  cookie、session、token的相同点和不同点:
    相同点:都是服务器生成的
    不同点:cookie保存在客户端,session保存在服务器内存里,token保存在服务器的数据库或文件里
    1.session和cookie区别:
    ·   数据存放位置不同:Session数据是存在服务器中的,cookie数据存放在浏览器当中。
    ·   安全程度不同:cookie放在服务器中不是很安全,session放在服务器中,相对安全。
    ·   性能使用程度不同:session放在服务器上,访问增多会占用服务器的性能;考虑到减轻服务器性能方面,应使用cookie。
    ·   数据存储大小不同:单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie;session存储在服务端,根据服务器大小来定。
    2.token和session区别:
    ·   token是开发定义的,session是http协议规定的;
    ·   token不一定存储,session存在服务器中;
    ·   token可以跨域,session不可以跨域,它是与域名绑定的。
  cookie
    Cookie实际上是一小段的文本信息。 Cookies是由服务器产生的。 当浏览器第一次访问服务端时,服务器此时肯定不知道他的身份,所以创建一个独特的身份标识数据,格式为key=value,放入到Set-Cookie字段里,随着响应报文发给浏览器。浏览器看到有Set-Cookie字段以后就知道这是服务器给的身份标识,于是就保存起来,下次请求时会自动将此key=value值放入到Cookie字段中发给服务端。服务端收到请求报文后,发现Cookie字段中有值,就能根据此值识别用户的身份然后提供数据。
  session
    Session机制是一种服务端的机制 ,服务器使用一种类似散列表的结构来保存信息。当程序需要为某个客户端的请求创建一个session的时候 ,服务器首先检查这个客户端里的请求里是否已包含了一个session标识-session ID ,如果已经包含一个session ID ,则说明已经为此客户端创建过session,服务器就按照session ID把这个session检索出来使用。如果客户端请求不包含session lD,则为此客户端创建一个session并且声称一个与此session相关联的session ID ,session ID的值应该是一个既不会重复 ,又不容易被找到规律以仿造的字符串(服务器会自动创建),这个session ID将被在本次响应中返回给客户端保存。
  token
    Token是在服务端将用户信息经过Base64Url编码过后传给在客户端,每次用户请求的时候都会带上这一段信息,因此服务端拿到此信息进行解密后就知道此用户是谁了,这个方法叫做JWT(JSON Web Token)。 Token类似一个令牌,无状态的,服务端所需的信息被Base64编码后放到Token中,服务器可以直接解码出其中的数据。
Token相比较于Session的优点在于,当后端系统有多台时,由于是客户端访问时直接带着数据,因此无需做共享数据的操作。
Token的优点
    简洁:可以通过URL,POST参数或者是在HTTP头参数发送,因为数据量小,传输速度也很快。
    自包含:由于字符串包含了用户所需要的信息,避免了多次查询数据库,因为Token是以JSON的形式保存在客户端的,所以JWT是跨语言的,不需要在服务端保存会话信息,特别适用于分布式微服务。

接口测试流程

  步骤
    1.拿到api接口文档(如果没有,就去抓包),熟悉接口业务流程,地址,鉴权方式,入参,出参,错误码
    2.编写计划和方案(必须保证正确接口是通的)
    3.编写接口用例并评审
    4.执行接口测试
    5.输出接口测试报告

执行接口测试

  鉴权码:鉴权是否有访问此接口的权限的字符串码
  获取鉴权码的方式:
    1.有一个专门的获取token鉴权码的接口
    2.登录之后自动生成token鉴权码

接口测试用例设计思路

 

 

 
posted @ 2022-05-31 18:32  乌醍  阅读(120)  评论(0编辑  收藏  举报