zoukankan      html  css  js  c++  java
  • REST API接口测试

    背景介绍
    
    为什么要做借口测试?
    很多系统关联都是基于接口来实现的,接口测试可以将复杂的系统关联进行简化.
    接口功能比较单一,能够比较好的进行测试覆盖,也相对容易实现自动化持续集成.
    接口相当于界面功能,会更底层一些,测试覆盖会更容易.
    
    软件开发生命周期?
    接口测试在单口测试后,UI测试之后
    接口测试可以获得较高的投资回报(接口测试比单元测试的粒度要粗一些)
    
    什么是接口测试? (什么是接口: 电梯、开车刹车、搜索引擎,不用关注内部,只关注外部应用)
    接口测试又称为API测试 Application Programming Interface
    接口测试是测试系统组件间接口的一种测试. 重点关注数据传递.
    接口测试一般会用于多系统间交互开发,或者拥有多个子系统的应用系统开发的测试.
    
    Web Service
    一种跨编程语言和跨操作系统平台的远程调用技术
        最重要的两种实现方式: SOAP(只支持xml格式,但拥有良好的安全性.银行项目,可以考虑使用SOAP协议) & REST(http: json或其他格式,是一种设计规范)
        Web2.0时代,REST方法的广泛普及.
    
    SOAP & REST
    SOAP - Simple Object Access Protocol
        交换数据一种协议规范,是一种轻量的、简单的、基于XML的协议.
    REST - Representational State Transfer
        一种软件架构风格,可以降低开发的复杂性,提高系统的可伸缩性.
    
    两者的区别:
        安全性: SOAP会好于REST
        效率和易用性: REST更胜一筹
        成熟度: 总的来说SOAP(存在时间比较长)在成熟度上由于REST
    
    REST or RESTFUL 区别:
        RESTful是REST的形容词形式
        RESTful API指的是REST风格的接口
        一般来说REST等于RESTful,区别一个是名词一个是形容词
    
    REST API (基于http的)
        出现: REST最早是由Roy Fielding博士发表的论文中提到的
        定义: 简单来说REST是一种系统架构设计风格(而非标准),一种分布式系统的应用层解决方案
        目的: Client和Server端进一步解耦
        应用: 最为经典的莫过于github API
    
    核心思想是资源
        资源:
            创建资源 - HTTP POST (Create)   相当于数据库的CRUD
            获取资源 - HTTP GET (Retrieve)
            更新资源 - HTTP PUT (Update)
            删除资源 - HTTP DELETE (Delete)
    
    
    REST特点总结:
        面向资源的接口设计
        抽象操作为基础的CRUD
        Http是应用协议而非传输协议
    
    
    REST支持的方法:
    
            Verd                    描述
        HEAD(SELECT)        只获取某个资源的头部信息
        GET(SELECT)         获取资源
        POST(CREATE)        创建资源
        PATCH(UPDATE)       更新资源的部分属性(很少用,一般用POST代替)
        PUT(UPDATE)         更新资源,客户端需要提供新建资源的所有属性
        DELETE(DELETE)      删除资源
    
    
    补充一些概念:
        幂等性(Idempotent):
            是一个数学上的概念,在这里表示发送一次或多次请求引起的边界效应是一致的.Post是不幂等方法
        安全性: 
            GET、HEAD和OPTIONS均被认为是安全的方法,因为它们旨在实现对数据的获取,并不具有“边界效应(Side Effect)”
    
    
    设计规范:
        协议: 使用HTTPs协议,确保交互数据的传输安全.
        域名: 应该尽量将API部署在专用域名之下.
            https://api.example.com
        版本控制: 将版本号放在URL或者Header中
        路径: 只能包含路径,不能包括动词
        过滤信息: ?limit=10  ?offset=10  ?page=1  ?sortby=name
        Hypermedia API: 在返回结果中提供相关资源的链接,连向其他API方法
        验证(Authentication): 确定用户是其申明的身份,比如提供账户的密码.
    
    常见的HTTP status code状态码:
        200(OK) - 如果现在资源已被更改
        201(created) - 如果新资源被创建
        202(accepted) - 已接受处理请求但尚未完成(异步处理)
        301(Moved Permanently) - 资源的URL被更新
        303(See Other) - 其他(如,均衡负载)
        400(bad request) - 指代坏请求
        406(no acceptable) - 服务端不支持所需表示
        409(conflict) - 通用冲突
        412(Precondition Failed) - 前置条件失败(如执行条件更新时的冲突)
        415(unsupported media type) - 接受到的表示不受支持
        500(internal server error) - 通用错误响应
        503(Service Unavailable) - 服务当前无法处理请求 
    
    
    返回结果设计:
        通用错误码, 具体产品由具体产品api文档给出
        {
            "msg":"uri_not_found",
            "code":1001,
            "request":"GET Vv2VphotoV132"
        }
    
    REST API接口实例
        GET /producet: 列出所有产品
        POST /product: 新建一个商品
        GET /product/ID: 获取某个指定商品的信息
        PUT /product/ID: 更新某个指定商品的信息
        DELETE /product/ID: 删除某个商品
        GET /product/ID/purchase: 列出某个指定商品的所有投资者
        GET /product/ID/purchase/ID: 获取某个指定商品的指定投资者信息
    
    
    
    
    
    手动测试
        测试方法:
            借助工具来完成
            拼接参数执行请求
    
    自动化测试
        测试方法:
            编写自动化脚本实现
            一劳永逸,加入回归测试集合(每天可以定期启动)
            需要一定编码经验
    
    
    
    常见的测试工具:
        Postman
        JMeter 性能测试,压力测试工具,也可以做RestAPI的测试
        RestClient 等等
    
    
    
    
    
    功能测试:
        测试覆盖:
            业务流程。支付功能
            边界值,特殊字符(0-255),特殊字符的验证(中日文,双字符)
            参数类型,必选项,可选项等
    
    性能测试:
        测试覆盖:
        并发数: 同一时间,同时发给用户的数量, 比如说:可以支持50个并发,100个并发,我们可以采用逐步加压的方式,找到系统支持的最大并发量
        吞吐量,tps(性能指标)
        错误率等
    
    
    安全型测试
        测试覆盖:
            敏感数据加密
            恶意攻击
    
    
    REST API的测试步骤
        了解接口格式
        编写测试用例
        测试用例评审(测试团队和开发团队一块评审)
        开始测试
        完成测试报告(中间要经过多次的迭代)
        结束
    
    
    Postman介绍
        Postman是Google开发的一款功能强大的网页调试与发送网页HTTP请求,并能运行测试用例的Chrome插件.
    
    主要功能包括:
        模拟各种HTTP requests
        Collection功能(测试集合)
        人性化的Response整理
        内置测试脚本语言
        设定变量与环境
    
    HTTP Header:
        Accept: 指定客户端能够接收的内容类型
        Accpet-Charset: 浏览器可以接受的字符编码集
        Authorization: HTTP授权的授权证书
        Content-Type: 请求的与实体对应的MIME信息
        Referer: 先前网页的地址,当前请求网页紧随其后,指来路(引流)
    
    
    contect-type:
        application/x-www-form-urlencoded: 请求默认方式,数据是简单、平面的key-value键值对
        application/json: 数据是复杂的嵌套关系,有多层数据
        multipart/form-data: 既可以发送文本数据也支持二进制数据上载
    
    
  • 相关阅读:
    Django(app的概念、ORM介绍及编码错误问题)
    Django(完整的登录示例、render字符串替换和redirect跳转)
    Construct Binary Tree from Preorder and Inorder Traversal
    Single Number II
    Single Number
    Binary Tree Level Order Traversal II
    Binary Tree Level Order Traversal
    Binary Tree Zigzag Level Order Traversal
    Recover Binary Search Tree
    Add Binary
  • 原文地址:https://www.cnblogs.com/suixingc/p/rest-api-jie-kou-ce-shi.html
Copyright © 2011-2022 走看看