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: 既可以发送文本数据也支持二进制数据上载
    
    
  • 相关阅读:
    枚举与常量需要注意的一个问题
    parted分区用法
    Linux下常用服务的端口号
    NFS服务
    mount用法
    Rsync服务部署
    常见的RAID级别
    SQL注入语句 (很全)
    数据库被注入daxia123或cn.jxmmtv.com原因及解决办法
    StringTemplate.net模板技术用法
  • 原文地址:https://www.cnblogs.com/suixingc/p/rest-api-jie-kou-ce-shi.html
Copyright © 2011-2022 走看看