• 接口测试


    抓包作用:  网络,流量分析  数据分析  篡改数据,再次发送

    工具:fiddler,wireshark,charles,浏览器网络监控

    接口分类

    • 应用层<->service<->DB
    • service<->service<->service
    • 系统外部,第三方API--公共服务(如系统介入支付宝,微信的公共服务接口)

    在这个过程中各层之间的交互就是通过接口:

    •  应用层与service主要通过http接口
    •  service层与DB层主要通过DAO(data access object)数据库访问接口)

    网络服务接口的分类

      Restful API(简单的传输方式,传纸条)

         表现层状态转化

             资源

                URI指向它  

             HTTP协议里面,四个表示操作方向的动词, GET,POST,PUT,DELETE,改变资源的状态

      Web Service(完整的流程,可以封装各种协议,如http,socket,soap...,邮政系统)

          用xml来定义一个接口的信息(接口的方法、调用方式、参数说明)用一个文件来描述WSDL

          SOAP协议

             请求和响应的数据载体也是xml

             请求和响应要按照一定的规则进行封装--信封

            底层也要借助于各种网络协议传输(最常见绑定http协议)  

    开放接口项目地址:http://www.webxml.com.cn/zh_cn/index.aspx  

    Http协议基础

    应用层协议,无状态。标准的客户端服务器模型,由请求和响应构成

    URL结构  

      http://host[":"port][abs_path]

    HTTP请求

       请求行

          请求地址,协议版本,请求方法名

       请求报文头:以明文字符串格式传送,以冒号分隔的键值对   请求头部通知服务器有关客户端请求的信息

          User-Agent、Accept、Accept-Encoding、Content-Type

       请求正文:数据内容

           四种格式:

           1.application/x-www-form-urlencoded

              对数据进行序列化处理,以键值对形式

             key1=value1&key2=value2的方式发送到服务器

                2.multipart/form-data

             将表单中数据全部上传,包括文件

                3.字符串文本格式:raw

             text/plain:纯文本,浏览器不解析

             text/html:html,浏览器自动解析

             text/xml或application/xml:后者可指定编码格式

             application/json:消息主体是序列化后的JSON字符串

                4.二进制格式:binary

    HTTP响应

     响应行

         HTTP-Version表示服务器http协议的版本

         Status-Code表示服务器发回的响应状态代码

     响应报文头:以明文的字符串格式传送,以冒号分隔的键值对

         响应头部通知客户端有关服务端的应答消息

        Server、Content-Type

     响应正文:待测试的数据

        html --文本检索、样式内容浏览器检查

        xml、json -- 解析后获取关键数据

    GET与POST请求的区别

    1. GET请求没有请求体,POST请求有请求体(请求正文)

    2. GET请求的参数(需要传递的数据)要放在URL中发送,大小有限制,POST请求的参数可以放在URL后传递,也可以放在请求体中(大小不受限制)

    3. GET安全性相对较差

       a. 参数明文

       b. 数据会被浏览器缓存

    4. 重大区别

      GET产生一个TCP数据包,POST产生2个数据包;对于GET请求,浏览器会把http header和data一并发送出去,服务器响应200;而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200

    5. 设计用途不同

        GET用来查询--不操作数据,参数量小

        POST用来插入、更新数据--安全要求高,数据量大

    接口测试流程

     输入数据->发送请求->输出结果->获取响应->检查响应

    特点:端到端的测试,重点通过不同的输入数据组合,检查数据的传输:

       测试业务逻辑

       测试数据库读写

       覆盖代码分支

    1. 弥补传统UI测试的不足

        -很多系统没有界面,只提供接口功能,无法通过界面的方式进行测试

        -你只测了前端页面可以测试的功能,服务端的功能你又覆盖了多少?

          服务端的所有功能接口都正常吗?

          每个接口返回的每个字段是否正确   绕过前端的校验,接口是否有必要的异常处理

        -当APP的代码不更新,而服务器端代码更新时,直接通过接口自动化测试就能快速知道是否影响APP的功能

      2. 安全方面(SQL注入,1'OR'1'='1)  

      接口返回的字段是否包含多余信息(比如用户id,token等敏感字段)

      用户密码,其他用户隐私信息传输时都需要进行加密后传输

      接口是否存在防刷限制

    在手工接口测试或者自动化接口测试的过程中,上下游接口有数据依赖如何处理?依赖于第三方数据的接口如何进行测试?  在工具中可以使用全局变量等方式将需要的数据进行传送,可以使用SoapUI等工具直接调用第三方数据接口的webservice,通过返回值来查看第三方数据的接口是否调用正常。 也可以利用一些MOCK的工具来模拟第三方的数据返回,最大限度的降低对第三方数据接口的依赖  

                             

  • 相关阅读:
    Java线程基础(二)
    Java线程基础(一)
    泛型集合List的详细用法
    Java中日期格式(String、Date、Calendar)的相互转换
    重写Java中包装类的方法
    Java的集合框架(第一次小结)
    node.js 调用mysql 数据库
    win10 系统解决mysql中文乱码问题
    vue-echarts图表
    文件上传的几个例子
  • 原文地址:https://www.cnblogs.com/jaigejiayou/p/10622299.html
Copyright © 2020-2023  润新知