接口测试学习笔记
目录
接口测试相关知识点文档:
最近在整理接口测试的知识点,刚刚好看到了这篇文章,太好了,感谢大佬们的辛苦付出!2021 接口测试白皮书 欢迎下载阅读 · TesterHome
1. 项目
1.1 项目介绍
依赖:
- pip
- virtualenv
- pytest
- requests
- pytest-xdist:并发
- filelock 文件锁
1.2 使用Postman进行简单的接口测试
2. 基础知识
1. 什么是接口测试?
接口测试是前端页面/APP等调用与后端做交互用的通道。
2. 接口测试的必要性:
1.可以发现很多在页面上操作发现不了的
2.检查系统的异常处理能力
3.检查系统的安全性、稳定性
4.前端随便变,接口测好了,后端不用变
5.其它优点:简单易学,维护成本低等等
3. 前后端数据传输:
对于请求参数和返回的数据,前后端会统一起来,使用同一个数据格式,一般有两个XML和json常用格式。JOSN会更常用。
请求的参数,可以被封装成json格式,传入到后端,后端,根据后端语言的系统常量,进行获取,解析请求数据,操作数据库,获得数据库数据,打包成json格式,最终以json格式的形式,传给前端。
4 . 接口测试和UI测试
问题:接口测试和UI测试分别的侧重点是什么,接口测试的特点及适用范围?
对比点 | 接口测试 | UI测试 |
---|---|---|
测试类型 | 针对各模块的接口,一般采用灰盒测试。(首先以黑盒方式设计如何调用API的测试用例,同时在测试执行过程中统计代码覆盖率,然后根据结果补充针对性的测试用例。) | 模拟真实用户在软件界面上的各种操作,并检验这些操作的准确性,替代部分功能测试 |
测试对象 | 数据 | 页面元素 |
效率 | 更高 | — |
实用性 | 更高 | – |
更稳定的原因 | 由于接口测试是对后端数据的验证,如果接口测试改动,那么基本属于业务重新设计。更稳定,实用性更高。 | UI是基于页面的,UI测试的改动,很可能是因为前端的一个小小的改动。 |
接口测试虽然优点很多,但接口测试保证的是后端工程师的产出质量;UI测试保证的是大前端工程师的产出质量。这就是二者适用范围的不同之处。
5. HTTP协议
HTTP(超文本传输协议)是无状态协议,即服务器不会维护关于客户的任何信息,
6. TCP和UDP
传输层向上层提供远程的进程到进程的服务,传输层在网络层提供的主机到主机的服务基础上的加强。把由IP向上层提供的不可靠服务,通过TCP进行加强了这种可靠性。
TCP:面向连接、错误重传、拥塞控制,可靠性高。
UDP:无连接、可靠性低,实时性高。
2.1 浏览器与服务器
浏览器向服务器发出请求,服务器响应,浏览器将返回的数据进行了渲染,而curl、requests可以代替浏览器发出请求,只是少了一层渲染
请求要满足某种规则
任何API的操作的第一步都是获取Tocken
并发要考虑到互相影响
3. 项目流程知识点
post传入body的两种方法对比:
1 | requests.post(f"https://qyapi.weixin.qq.com/cgi-bin/user/create?access_token={test_token()}", |
并发测试: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 | "data": { |
传入json返回正确
1 | "json": { |
为啥?
问题2:**data
传入的时候应该是代表多个参数的意思,那么解析呢是什么意思
2. PO封装
base用来封装通用的操作;wework中封装工具类
- 将
get_token
单独放在一个py文件中,并在所需要使用的类中__init__
self.token
疑问:为什么不写在base_api中?base_api是封装多次使用的方法的父类;而token等是会变化的,
3. 数据驱动框架
从po风格变为数据驱动风格(yaml文件)
yaml.load
4. 那些年踩过的坑
踩坑合集 · 每一次踩过的坑都能让你更加从容潇洒地跌入下一个深坑,风里雨里坑里等你
5. 问题与思考
1、 UI测试更为接近使用者的真实体验的测试流程,接口测试是通过HTTP协议发送请求,接收响应,那么接口测试在测试中的用处在哪里,扮演了什么样的角色?
2、如果我懂一点后端开发是不是可以对接口测试有更深的认识?在开发中接口起到了什么作用,其内部又是如何连通的?正向、反向来看🤔