目录

  1. 1. 项目
    1. 1.1 项目介绍
    2. 1.2 使用Postman进行简单的接口测试
  2. 2. 基础知识
    1. 1. 什么是接口测试?
    2. 2. 接口测试的必要性:
    3. 3. 前后端数据传输:
    4. 4 . 接口测试和UI测试
    5. 5. HTTP协议
    6. 6. TCP和UDP
  3. 2.1 浏览器与服务器
  • 3. 项目流程知识点
    1. 2. PO封装
    2. 3. 数据驱动框架
  • 4. 那些年踩过的坑
  • 5. 问题与思考
  • 接口测试相关知识点文档

    最近在整理接口测试的知识点,刚刚好看到了这篇文章,太好了,感谢大佬们的辛苦付出!2021 接口测试白皮书 欢迎下载阅读 · TesterHome

    1. 项目

    1.1 项目介绍

    依赖

    1. pip
    2. virtualenv
    3. pytest
    4. requests
    5. pytest-xdist:并发
    6. filelock 文件锁

    1.2 使用Postman进行简单的接口测试

    2. 基础知识

    1. 什么是接口测试?

    接口测试是前端页面/APP等调用与后端做交互用的通道。

    111.png

    2. 接口测试的必要性:

    1.可以发现很多在页面上操作发现不了的

    2.检查系统的异常处理能力

    3.检查系统的安全性、稳定性

    4.前端随便变,接口测好了,后端不用变

    5.其它优点:简单易学,维护成本低等等

    2021接口测试白皮书_V1.02 (kdocs.cn)

    3. 前后端数据传输:

    对于请求参数和返回的数据,前后端会统一起来,使用同一个数据格式,一般有两个XML和json常用格式。JOSN会更常用

    请求的参数,可以被封装成json格式,传入到后端,后端,根据后端语言的系统常量,进行获取,解析请求数据,操作数据库,获得数据库数据,打包成json格式,最终以json格式的形式,传给前端。

    前端和后端数据交互的基本知识和常见方式

    4 . 接口测试和UI测试

    问题:接口测试和UI测试分别的侧重点是什么,接口测试的特点及适用范围?

    对比点 接口测试 UI测试
    测试类型 针对各模块的接口,一般采用灰盒测试。(首先以黑盒方式设计如何调用API的测试用例,同时在测试执行过程中统计代码覆盖率,然后根据结果补充针对性的测试用例。) 模拟真实用户在软件界面上的各种操作,并检验这些操作的准确性,替代部分功能测试
    测试对象 数据 页面元素
    效率 更高
    实用性 更高
    更稳定的原因 由于接口测试是对后端数据的验证,如果接口测试改动,那么基本属于业务重新设计。更稳定,实用性更高。 UI是基于页面的,UI测试的改动,很可能是因为前端的一个小小的改动

    接口测试虽然优点很多,但接口测试保证的是后端工程师的产出质量UI测试保证的是大前端工程师的产出质量。这就是二者适用范围的不同之处。

    UI还是接口?自动化测试如何决断?

    5. HTTP协议

    HTTP(超文本传输协议)是无状态协议,即服务器不会维护关于客户的任何信息,

    深入理解HTTP协议

    6. TCP和UDP

    传输层向上层提供远程的进程到进程的服务,传输层在网络层提供的主机到主机的服务基础上的加强。把由IP向上层提供的不可靠服务,通过TCP进行加强了这种可靠性。

    TCP:面向连接、错误重传、拥塞控制,可靠性高。

    UDP:无连接、可靠性低,实时性高。

    2.1 浏览器与服务器

    浏览器向服务器发出请求,服务器响应,浏览器将返回的数据进行了渲染,而curl、requests可以代替浏览器发出请求,只是少了一层渲染

    请求要满足某种规则

    任何API的操作的第一步都是获取Tocken

    并发要考虑到互相影响

    3. 项目流程知识点

    post传入body的两种方法对比:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        requests.post(f"https://qyapi.weixin.qq.com/cgi-bin/user/create?access_token={test_token()}",
    data={})
    # data={}需要指定json格式

    date = {
    "userid" : "zhangsan"
    }
    requests.post(f"https://qyapi.weixin.qq.com/cgi-bin/user/create?access_token={test_token()}",
    json=date)
    # 写json=date,不仅可以将数据传给json,同时还可以对格式进行转化

    并发测试:pytest-xdist、pytest.ini配置

    【Pytest篇】pytest配置文件之pytest.ini - Code World (codetd.com)

    pytest.ini配置文件之addopts设置项 - 码上快乐 (codeprj.com)

    Pytest之并发执行(十四) - 云+社区 - 腾讯云 (tencent.com)

    post迷惑:

    在这里我传入了data参数,返回错误提示要改成json:Warning: wrong json format

    1
    2
    3
    4
    5
    6
    7
    8
    "data": {
    "userid": userid,
    "name": name,
    "mobile": mobile,
    }

    # 返回的结果
    {'errcode': 60111, 'errmsg': 'Warning: wrong json format. userid not found......

    传入json返回正确

    1
    2
    3
    4
    5
    6
    7
    8
    "json": {
    "userid": userid,
    "name": name,
    "mobile": mobile,
    }

    # 输出结果
    {'errcode': 0, 'errmsg': 'updated'}

    为啥?

    问题2:**data

    传入的时候应该是代表多个参数的意思,那么解析呢是什么意思

    2. PO封装

    base用来封装通用的操作;wework中封装工具类

    1. get_token单独放在一个py文件中,并在所需要使用的类中__init__ self.token

    疑问:为什么不写在base_api中?base_api是封装多次使用的方法的父类;而token等是会变化的,

    3. 数据驱动框架

    从po风格变为数据驱动风格(yaml文件)

    yaml.load

    4. 那些年踩过的坑

    踩坑合集 · 每一次踩过的坑都能让你更加从容潇洒地跌入下一个深坑,风里雨里坑里等你

    5. 问题与思考

    1、 UI测试更为接近使用者的真实体验的测试流程,接口测试是通过HTTP协议发送请求,接收响应,那么接口测试在测试中的用处在哪里,扮演了什么样的角色?

    2、如果我懂一点后端开发是不是可以对接口测试有更深的认识?在开发中接口起到了什么作用,其内部又是如何连通的?正向、反向来看🤔