五分钟学会接口自动化测试框架,接口测试自动化框架

大雄 315 2022-08-27


下面是关于接口自动化测试框架

自动化测试

自动化测试,这几年行业内的热词,也是测试人员进阶的必备技能,更是软件测试未来发展的趋势。

特别是在敏捷模式下,产品迭代速度快,市场不断调整,客户需求不断变化,单纯的手工测试越来越无法适应整个变化过程(迭代快,加班多)。测试人员如何快速响应并保证产品在上线后的质量能够满足市场要求(如何在上线一个新功能的同时快速对旧功能快速进行回归,保证旧功能不被新功能影响而出现严重的Bug?)。

针对以上问题,采用自动化测试无疑是一个不错的选择,能够做到在保证产品质量的同时提升测试效率

随着行业内卷越来越严重,对于测试岗位的要求也是水涨船高,岗位招聘要求都会出现自动化测试的字眼,因此也是我们跳槽面试、升职加薪必备利器。

自动化测试又可分为接口自动化、Web UI自动化、App自动化,今天我们就来聊聊接口自动化测试。

接口自动化测试的价值

  1. 相比于UI自动化测试,接口自动化的维护成本更低,主要体现在以下几个方面

    • 分层测试金字塔模型中,接口测试属于第二层服务集成测试,与UI自动化测试相比,接口自动化测试收益更大、更容易实现、维护成本更低,有更高的投入产出比,因此是公司开展自动化测试的首选。

    • 前端页面变化快,而且UI自动化比较耗时,比如等待页面元素加载、添加等待时间、定位元素、操作元素、模拟页面动作这些都需要时间,因此UI自动化实施起来比较困难。

    • 接口较稳定,接口的响应时间基本上都是秒级、毫秒级别,速度快,并且接口自动化本身也可以做一些有关联的操作、全流程的操作,比如:注册 --> 登录 --> 修改个人信息。

  2. 测试复用性

  3. 快速回归(提高回归的覆盖率、效率、稳定性)

  4. 可以运行更多更繁琐的测试,自动化的一个明显的好处是可以在较少的时间内运行更多的测试

接口自动化测试如何开展

工具选择

  • Python/Java + Requests + Unittest/Pytest + HTMLTestRunner/Allure

  • RobotFramework:关键词驱动的自动测试框架

  • 基于Web的自动化测试平台(公司自主研发,成本较高,方便不懂编程也能使用)

自动化测试工具有很多,每种工具都有各自的优缺点,选择适合自身实际情况的框架,落地实施才是重点,具体选择哪种工具放在其他文章再说。

这里使用 Python + Requests + Pytest + Allure

举个栗子

接口文档(找了一个开放的接口用于测试)

接口信息:

名称:全国高校信息查询接口
描述:用于查询全国高校信息Host: www.iamwawa.cnRequest URL:/home/daxue/ajax
Request Method:POSTContent-Type: application/x-www-form-urlencodedheaders:user-agent:Chrome

参数:

名称类型是否必填描述
typeStringname,根据名称查询
keywordString高校名称,如:四川轻化工大学

请求示例:

POST /home/daxue/ajax HTTP/1.1Host: www.iamwawa.cnuser-agent: ChromeContent-Type: application/x-www-form-urlencodedCookie: PHPSESSID=sjsrn0drje6ds5fq9kouoo2r23Content-Length: 54type=name&keyword=四川轻化工大学

响应示例:

{
    "status": 1,
    "info": "查询成功!",
    "data": [
        {
            "id": "2181",
            "name": "四川轻化工大学",
            "code": "4151010622",
            "department": "四川省",
            "city": "自贡市",
            "level": "本科",
            "remark": ""
        }
    ]}
线性脚本
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 == 200res_json = res.json()print(res_json)assert res_json["status"] == 1

使用以上代码,最基础最简单的接口测试就做起来了,好的开始就是成功的一半。

但是,问题也随之而来,线性脚本的缺点也暴露出来了:

  1. 测试的输入和断言都是捆绑在脚本中,易读性差

  2. 无共享或重用脚本,可复用性低

  3. 线性脚本修改代价大,维护成本高,不便于后期优化

  4. 容易受软件变化的影响,容易受意外事件的影响,引起整个测试失败

所以,下一步就是如何优化线性脚本,也就是如何实现代码的高内聚低耦合,也是接口自动化测试框架要解决的问题。

接口自动化测试框架

GitHub开源代码:关注微信公众号 测试蔡坨坨,回复关键字 源码获取

  • 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生成的定制化报告


概述

自动化软件测试系统的实施过程中使用框架设计可以最大限度地减少测试脚本的维护量。 但是,由于许多自动化测试工具采用传统的“录像播放”模式,测试数据通过测试脚本程序硬编码,因此脚本的维护量较大。 此外,工具中内置的测试用例除了测试APP的图形用户界面之外,实际上并不有用。 因此,如何选择合适的测试自动化框架是自动化测试小组开始启动之前最应该优先考虑的问题。


自动化测试框架是支持假设、概念和自动化测试的实践的集合。 介绍以下五个基本的自动测试框架。 模块化测试脚本框架、测试库框架、关键字驱动/表驱动测试框架、数据驱动测试框架和混合测试框架。

不要依赖简单的捕获工具,而要根据实际需求考虑采用一个测试框架。 这些框架也是了解自动测试框架和根据需求和经验设计自动测试框架的基础。


1模块化测试框架

模块化测试脚本框架(TEST MODulARITY FRAMEWORK )需要编写小的、独立的、可编写的模块、碎片和待测试APP的脚本。 通过组合这些树结构中的小脚本,可以配置可用于特定测试用例的脚本。


在五个框架中,模块化框架最容易掌握和使用。 在一个组件上创建抽象层,然后在其他APP中将其隐藏,这是一种众所周知的编程技术。 这样,APP应用程序将与组件中的更改隔离开来,并提供编程的模块化特性。 模块化测试脚本框架利用这种抽象或封装的原理提高了自动测试组合的可维护性和可升级性。


2测试库框架

测试库框架(Test Library Architecture )与模块化测试脚本框架非常相似,具有相似的优点。 不同的是,测试库框架将被测试的APP分解为流程和函数,而不是脚本。 在此框架中,必须创建描述模块、片段和被测试APP的功能库文件。


对于独立于

3关键字驱动或表驱动的测试框架

APP的自动化框架,密钥驱动的I9LJJ和表驱动的密钥驱动的测试是可交换的术语。 这个框架需要开发数据表和关键字。 这些数据表和关键字独立于执行它们的测试自动化工具,可以用于“驱动”所测试的APP和数据的测试脚本代码。 键宇驱动的测试看起来和手动测试用例很像。 一个关键字驱动的测试将被测试APP的功能和每个测试的执行步骤写入一个表中。


这个测试框架可以用很少的代码生成很多测试用例。 同一代码在数据表中生成各个测试用例的同时被复用。

框架本身就是标识Excel表中的这些控件对象和操作


4数据驱动测试框架

数据驱动(数据驱动)、LJ试用是框架。 这里测试的输入输出数据是从数据文件读取的(数据池、ODBC源、CSV文件、EXCEL文件、ADO对象等),由捕获工具生成或手动生成的代码脚本加载到变量中在此框架中,变量不仅用于输入值,还用于存储输出的验证值。 在整个程序中,测试脚本以读取数值文件,并记载测试状态和信息。 这类似于表驱动的测试。 在表驱动的测试中,测试用例包含在数据文件中而不是脚本中,对于数据,脚本只是“驱动器”或传输机构。 但是,虽然导航数据未包含在表结构中,但数据驱动测试与表驱动测试不同。 在数据驱动的测试中,数据文件只包含测试数据。


此框架的目的是减少运行所有测试用例所需的测试脚本总数。 由于数据驱动程序与表驱动程序非常相似,因此需要较少的代码来生成大量的测试用例。


5混合测试自动化(Hybrid Test Automation)框架

最常见的执行框架是上面介绍的所有技术的组合,取长补短。 这个混合测试框架是大部分框架随着时间经过几个项目演化而成的。


个人认为,这些框架是递归关系,至少前四个是肯定的,还是需要结合多个框架的特点,可以作为很好的参考

由于篇幅有限,今天主要介绍到这里,后期会分享更多自动化测试内容,有兴趣的人请关注~

以上就是小编为大家整理的接口自动化测试框架


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Opencv与python实现多目标跟踪 (一) - PaddleDetection目标检测(opencv 多目标跟踪)
下一篇:接口自动化测试世界里的“身份证”—测试工具Jmeter实践篇,Postman接口自动化测试
相关文章

 发表评论

暂时没有评论,来抢沙发吧~