美文网首页
接口测试必须要知道的

接口测试必须要知道的

作者: Queenie的学习笔记 | 来源:发表于2020-05-07 16:40 被阅读0次

    1. Tips

    1. 接口就是一个文档,接口规范是架构师指定的
    2. 接口测试主要是测试后端,验证后端编写的程序(业务逻辑)是否符合接口文档的规范
    3. 接口测试不可忽视的点:安全、效率(响应时间)、性能
    图片.png

    2. 接口测试怎么做?(实现流程)

    模拟客户向服务端发送数据,然后查看响应
    要素1:定位服务器资源,通过URL
    要素2:模拟用户,提交数据
    要素3:查看响应结果,是否符合预期

    3. 接口测试的分类

    • 类型1:Web 接口测试(B/S架构的项目)
      (1)服务器接口测试(测试公司写的程序)
      (2)第三方接口测试(测试别的公司写的程序),如自己公司的程序使用天气api、支付api,在测试过程中,这些api也需要测试
    • 类型2:模块 接口测试(C/S架构的项目)

    4. 接口测试环境搭建

    搭建接口测试的环境,运行程序(就是将程序部署到测试主机/服务器上,在测试服务器上运行程序,验证功能是否正常)
    (1) 运维或开发实现部署,正常运行
    (2) 测试自己搭建(根据开发语言选择java 或 python,把项目复制进去,启动项目 python run_server.py,测试 http://127.0.0.1:8000/api/departments,如果有相应数据,代表程序已安装完成并正常启动)

    sqlite是轻量级的数据库,可以用在移动端,使用SQLiteStudio连接工具查看详细的数据表结构
    任何系统都可以归纳为【数据 + 数据操作】,而数据操作无非就是增删改查,即表的增删改查操作

    图片.png 图片.png

    5. RESTful 风格

    规范了URL的实现方式,提交的数据的实现方式,响应数据的实现方式
    从程序的易读性、可维护性方面所做的考虑


    要素1:URL + POST
    要素2:多个数据(方式1:键=值&键=值,方式2:JSON格式)
    要素3: 200|201 + 添加后的记录


    要素1:URL + GET | DELETE
    要素2:多个数据(方式1:键=值&键=值)
    要素3:200|204 + 无


    要素1:URL + POST | PUT
    要素2:多个数据(方式1:键=值&键=值,方式2:JSON格式)
    要素3:200|201 + 修改后的记录


    要素1:URL + GET
    要素2:多个数据(方式1:键=值&键=值)
    要素3:200 一条/多条记录

    404 资源路径有误
    505 服务器异常

    6. JSON

    • JSON 是一种数据载体
    • 互联网的本质:数据传输,数据传输需要数据载体,例如html存储页面信息,但是html和xml等标签标记语言,有效数据占有率低,而json 则大大优化了数据传输的效率,所以部分场景下使用JSON替换html 和XML
    • Json 的缺点:数据太简洁,描述性太差,因此部分场景还是需要采用 html 和 XML(ajax) 等标签标记语言实现
    • 如果传递的是少量数据,可能使用json

    语法:
    格式1(JSON对象):{“key1”:”value1”, “key2”:”value2”, “key3”:”value3”, … … “keyN”:”valueN” }
    格式2(JSON数组):[{“key1”:”value1”, “key2”:”value2”, “key3”:”value3”, … … “keyN”:”valueN” }],[],[],… …[]
    格式3(对象和数组复合){“key1”:”value1”,”key2”:”value2”,[],[]…}

    • 前端网页的局部刷新,如注册账号检测账号是否重复时,用的就是ajax异步刷新技术

    7. 接口文档的生成

    • 需求分析:了解项目具体细节,编写文档
    • 概要设计:项目的大致框架,划分项目模块(如人事模块、税务模块),设计数据库表结构
    • 详细设计:制定每一个流程的每一个细节应该如何实现,写伪代码,声明方法和参数,生成api文档
    • 开发阶段:开发+单元测试
    • 测试阶段:接口测试

    POST 请求新增数据时,数据格式是JSON格式的,必须设置浏览器的 http 请求头(Content-Type: application/json;),不然会当成普通文本处理,为了不让提交的数据格式显示乱码,可以在HTTP头字段中增加编码集(charset=utf-8,支持世界所有字符)

    8. Jmeter

    • Jmeter 支持多协议,如FTP文件传输协议
    • Jmeter 不支持IP欺骗,第三方接口测试无法做
    • Jmeter 不支持前端测试

    思考:使用 Jmeter做高并发,对某一个查询接口,执行100次,如何去做?50个用户同时请求,如何操作?

    下载并解压Jmeter 后必须确保本机上有Java 运行环境,否则运行不了(这也是Java 做不出像QQ、迅雷这样的C/S客户端程序的原因)

    9. 性能测试和压力测试的区别

    性能:内在 -- 程序的算法,重点关注程序的响应时间
    压力:外在 -- 服务器的配置、负载能力

    10. Jmeter支持数据库测试

    如何确认接口返回的数据有没有遗漏?-- Jmeter

    Jmeter支持Java 程序测试

    Jmeter安装路径不能有空格,不能有中文字符,如D:\develop\JDK,D:\develop\JRE

    11. Jmeter 目录结构

    backups:缓存备份,防止数据、脚本丢失
    bin:存储了Jmeter的可执行程序,如启动程序ApacheJMeter.jar、jmeter.bat(Windows启动,黑窗口不可关闭) 、jmeter.sh(Linux启动,黑窗口不可关闭)
    docs:存储了Jmeter整合的功能(java的API文档,可进行Java程序的拓展)
    extras:额外的功能
    lib:存储的是库文件
    licences:版权证书
    printable_docs:Jmeter使用帮助文档

    12. Jmeter 使用

    创建测试计划 > 在计划上创建线程组 > 在线程组上添加sampler,创建HTTP 请求 > 在计划上添加监听器察看结果树(即查看响应)> 工具栏绿色三角执行

    13. Jmeter 组件:线程组

    • 进程、线程和线程组

    进程:正在运行中的程序
    线程:进程中的执行线索(一个进程中可以有多个执行线索,如口型和声音对不上)
    线程组:按照线程的性质,对线程进行分组

    • 三者关系:1个进程有多个线程组,1个线程组有多个线程

    Jmeter 中,进程 – 测试计划,线程组 – 线程组,线程 – 线程组属性中的线程数

    • 并发执行与顺序执行

    并发执行:多个线程同时执行,特点是执行结束的顺序和线程的启动顺序不一定一致
    顺序执行:按照线程的启动顺序,依次执行

    • 基本使用

    默认情况下,线程组中的线程是并发执行的,每一个线程都要执行组内的 http 请求
    勾选测试计划属性中的“独立运行每个线程组”复选框,则线程将顺序执行

    • 在Jmeter 中,万物皆组件,当想要实现某个功能的时候,找组件
      添加Content-Type:添加配置元件 > 信息头管理器
      抽取共同的ip、端口号、协议、编码集:测试计划 > 添加配置元件 > HTTP 请求默认值,通过服用属性,简化实现,提高效率

    • 高级使用(初始化与销毁线程组,属性与调度器)
      线程组属性1:线程数 – 模拟用户数
      线程组属性2:时间值Ramp-Up Period(in seconds) – 在指定时间内启动所有线程
      线程组属性3:单个用户访问的次数

    • 调度器(计时器):可以用于间隔一段时间做某个操作
      1) 循环次数设置为永远
      2) 设置启动延迟x和持续时间y:在延迟x秒后访问服务器,并且持续y秒
      3) 设置启动时间S和结束时间E:在M时开始访问,E时结束

    注意:2)和3)不能同时使用,否则会有冲突

    14. Jmeter 参数化

    • 用于批量操作时,从外部获取数据
      线程组设置循环次数 > HTTP请求负责插入数据 > 创建文本文档 > 添加配置元件CSV Data Set Config

    setUp Thread Group :用于程序主体执行所需的资源加载(初始化)操作
    tearDown Thread Group:用于程序正式关闭之前,将数据保存至内存(本地磁盘)

    相关文章

      网友评论

          本文标题:接口测试必须要知道的

          本文链接:https://www.haomeiwen.com/subject/xfvaghtx.html