你好,我是测试大圣。
今天,我们来聊聊接口主动化测试。
接口主动化测试是什么?如何开始?接口主动化测试框架如何搭建?
主动化测试
主动化测试,这几年行业内的热词,也是测试人员进阶的必备技能,更是软件测试未来发展的趋势。
特殊是在敏捷模式下,产物迭代速率快,市场不断调整,客户需求不断变化,单纯的手工测试越来越无法顺应整个变化过程(迭代快,加班多)。测试人员如何快速响应并保证产物在上线后的质量能够满足市场要求(如何在上线一个新功能的同时快速对旧功能快速举行回归,保证旧功能不被新功能影响而出现严峻的 Bug?)。
针对以上题目,采用主动化测试无疑是一个不错的选择,能够做到在保证产物质量的同时提拔测试服从。
随着行业内卷越来越严峻,对于测试岗位的要求也是水涨船高,岗位招聘要求都会出现主动化测试的字眼,因此也是我们跳槽面试、升职加薪必备利器。
主动化测试又可分为接口主动化、Web UI 主动化、App 主动化,今天我们就来聊聊接口主动化测试。
接口主动化测试的代价
- 相比于 UI 主动化测试,接口主动化的维护本钱更低,主要体现在以下几个方面
- 在分层测试金字塔模子中,接口测试属于第二层服务集成测试,与 UI 主动化测试相比,接口主动化测试收益更大、更容易实现、维护本钱更低,有更高的投入产出比,因此是公司开展主动化测试的首选。
- 前端页面变化快,而且 UI 主动化比较耗时,比如等待页面元素加载、添加等待时间、定位元素、操纵元素、模拟页面动作这些都需要时间,因此 UI 主动化实行起来比较困难。
- 接口较稳固,接口的响应时间基本上都是秒级、毫秒级别,速率快,而且接口主动化自己也可以做一些有关联的操纵、全流程的操纵,比如:注册 --> 登录 --> 修改个人信息。
- 测试复用性
- 快速回归(提高回归的覆盖率、服从、稳固性)
- 可以运行更多更繁琐的测试,主动化的一个明显的好处是可以在较少的时间内运行更多的测试
接口主动化测试如何开展
工具选择
- Python/Java + Requests + Unittest/Pytest + HTMLTestRunner/Allure
- RobotFramework:关键词驱动的主动测试框架
- 基于 Web 的主动化测试平台(公司自主研发,本钱较高,方便不懂编程也能使用)
主动化测试工具有很多,每种工具都有各自的优缺点,选择得当自身实际情况的框架,落地实行才是重点,具体选择哪种工具放在其他文章再探讨。
这里使用 Python + Requests + Pytest + Allure
举个栗子
接口文档(找了一个开放的接口用于测试)
接口信息:
YAML
| - 名称: 全国高校信息查询接口
- 描述: 用于查询全国高校信息
- Host: www.iamwawa.cn
- Request URL: /home/daxue/ajax
- Request Method: POST
- Content-Type: application/x-www-form-urlencoded
- headers: user-agent:Chrome
复制代码 | 参数:
名称类型是否必填形貌typeString是name,根据名称查询keywordString是高校名称,如:四川轻化工大学 哀求示例:
CODE
| - POST /home/daxue/ajax HTTP/1.1
- Host: www.iamwawa.cn
- user-agent: Chrome
- Content-Type: application/x-www-form-urlencoded
- Cookie: PHPSESSID=sjsrn0drje6ds5fq9kouoo2r23
- Content-Length: 54
- type=name&keyword=四川轻化工大学
复制代码 | 响应示例:
JSON
| - {
- "status": 1,
- "info": "查询成功!",
- "data": [
- {
- "id": "2181",
- "name": "四川轻化工大学",
- "code": "4151010622",
- "department": "四川省",
- "city": "自贡市",
- "level": "本科",
- "remark": ""
- }
- ]
- }
复制代码 | 线性脚本
PYTHON
| - import requests
- res = requests.post(url="https://www.iamwawa.cn/home/daxue/ajax",
- headers={"user-agent": "Chrome"},
- data={"type": "name", "keyword": "四川轻化工大学"})
- assert res.status_code == 200
- res_json = res.json()
- print(res_json)
- assert res_json["status"] == 1
复制代码 | 使用以上代码,最基础最简单的接口测试就做起来了,好的开始就是乐成的一半。
但是,题目也随之而来,线性脚本的缺点也暴暴露来了:
- 测试的输入和断言都是捆绑在脚本中,易读性差
- 无共享或重用脚本,可复用性低
- 线性脚本修改代价大,维护本钱高,未便于后期优化
- 容易受软件变化的影响,容易受不测事件的影响,引起整个测试失败
以是,下一步就是如何优化线性脚本,也就是如何实现代码的高内聚低耦合,也是接口主动化测试框架要办理的题目。
接口主动化测试框架
开源代码请点击文末小卡片领取
- base_api.py:对 Requests 库举行二次封装,完成对 api 的驱动
- api:继续 base_api,将 http 哀求接口封装成 Python 方法
- utils:CommonUtil,公共模块,将一些公共函数、方法以及通用操纵举行封装,如:日志模块、yaml 操纵模块、时间模块
- config:配置文件模块,配置信息存放,如:URL、Port、Headers、Token、数据库信息等
- data:测试数据模块,用于测试数据的管理,数据与脚本分离,低落维护本钱,提高可移植性,如:yml 文件数据
- cases:测试用例模块,用于测试用例的管理,这里会用到单元测试框架,如:Pytest、Unittest
- run.py:批量实行测试用例的主步伐,根据不同需求不同场景举行组装,遵照框架的机动性和扩展性
- logs:日志模块,用于记录和管理日志,针对不怜悯况,设置不同的日志级别,方便定位题目
- reports:测试陈诉模块,用于测试陈诉的天生和管理,如:基于 Allure 天生的定制化陈诉
尾声
我自己收集啦很多软测资料,希望能够帮到学软件测试的朋友们软件资料分享包括但不限于:Python主动化测试、性能测试、web测试、APP测试、测试开发、安全测试
测试开发工具包:appuim安装包、fiddler安装包(也有配套视频教程)、eclipse、git、jmeter、loadrunner、monkey、postman、soapul、Xmind等等
末了感谢每一个阅读我文章的人,一点小心意,虽然不是啥值钱的东西,需要的话点击下方小卡片直接拿走~
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |