接口自动化测试是个啥?如何开始?什么是框架?带你揭开神秘面纱

自动化测试

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

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

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn888】

举个栗子

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

接口信息:

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

参数:

名称

类型

是否必填

描述

type

String

name,根据名称查询

keyword

String

高校名称,如:四川轻化工大学

请求示例:

12345678POST /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: 54type=name&keyword=四川轻化工大学

响应示例:

123456789101112131415{"status": 1,"info": "查询成功!","data": [{"id": "2181","name": "四川轻化工大学","code": "4151010622","department": "四川省","city": "自贡市","level": "本科","remark": ""}]
}

线性脚本

123456789import requestsres = 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

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

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

  1. 测试的输入和断言都是捆绑在脚本中,易读性差
  2. 无共享或重用脚本,可复用性低
  3. 线性脚本修改代价大,维护成本高,不便于后期优化
  4. 容易受软件变化的影响,容易受意外事件的影响,引起整个测试失败

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

接口自动化测试框架

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

END今天的分享就到此结束了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/217651.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

某图app sig、client_session

文章目录 声明目标加密参数定位代码实现声明 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请私信我立即删除! 目标 这次看一下某图秀秀app 搜索接口: 抓一下包 url参数提取 url = "https://api.x…

1.前端--基本概念【2023.11.25】

1.网站与网页 网站是网页集合。 网页是网站中的一“页”,通常是 HTML 格式的文件,它要通过浏览器来阅读。 2.Web的构成 主要包括结构(Structure) 、表现(Presentation)和行为(Behavior&#xff…

操作系统:操作系统教程第六版(骆斌、葛季栋、费翔林)习题二处理器管理

目录 前言1. 简答题2. 应用题 前言 本系列文章是针对操作系统教程第六版(骆斌、葛季栋、费翔林)的习题解答,其中简答题部分为博主自己搜索整理的,错漏之处在所难免。应用题部分有答案为依据。 1. 简答题 (1&#xf…

centos 7.9 下利用miniconda里的pyinstaller打包python程序为二进制文件操作方法

centos 7.9 下利用miniconda里的pyinstaller打包python程序为二进制文件操作方法 一.centos 7.9 操作系统安装 参考:https://blog.csdn.net/qq_46015509/article/details/134572030?utm_sourceminiapp_weixin 安装完成后用后台连接工具连上虚拟机 二.安装python3 …

SIM卡结构及上电流程详解

SIM卡结构及上电流程详解 1. sim卡概述1.1 什么是SIM卡1.2 Sim卡的作用 2. Sim卡的主要功能2.1存储数据2.2 PIN码保护2.3 用户身份鉴权2.4 Sim卡中的保密算法及密钥2.5 SIM卡的类型2.6 Sim卡物理接口2.7 SIM卡内部结构2.8 SIM卡文件结构2.9 常用的文件操作2.9.1 常用的有如下操…

JSP EL 通过 三元运算符 控制界面 标签 标签属性内容

然后 我们来说说 EL配合三元运算符的妙用 我们先这样写 <% page contentType"text/html; charsetUTF-8" pageEncoding"UTF-8" %> <%request.setCharacterEncoding("UTF-8");%> <!DOCTYPE html> <html> <head>&l…

芙蓉花 欣赏

芙蓉&#xff08;Hibiscus mutabilis Linn&#xff09;是一种锦葵科、木槿属植物原名&#xff1a;木芙蓉&#xff0c;别名&#xff1a;芙蓉花、拒霜花、木莲、地芙蓉、华木、酒醉芙蓉。其花或白或粉或赤&#xff0c;皎若芙蓉出水&#xff0c;艳似菡萏展瓣&#xff0c;故有“芙蓉…

每日一题--删除链表的倒数第 N 个结点

破阵子-晏殊 燕子欲归时节&#xff0c;高楼昨夜西风。 求得人间成小会&#xff0c;试把金尊傍菊丛。歌长粉面红。 斜日更穿帘幕&#xff0c;微凉渐入梧桐。 多少襟情言不尽&#xff0c;写向蛮笺曲调中。此情千万重。 目录 题目描述&#xff1a; 思路分析&#xff1a; 方法及…

类和对象(4)——补充内容+DateOJ题

Date类型的OJ 一&#xff0c;static成员例题 二&#xff0c;DateOJ题一&#xff0c;[计算日期到天数转换](https://www.nowcoder.com/practice/769d45d455fe40b385ba32f97e7bcded?tpId37&&tqId21296&rp1&ru/activity/oj&qru/ta/huawei/question-ranking)1…

原生实现底部弹窗效果 h5 小程序

<template><div class"home"><div class"btn" click"showPopupshow">弹出底部蒙层</div><div class"popup " catchtouchmove"true" :class"showPopup" ><div class"mask&q…

基于Flutter的图片浏览器的实现

一 效果展示&#xff1a; 1. 图片展示&#xff1a; 2.混色&#xff0c;平铺&#xff0c;拉伸&#xff0c;原图展示 二 实验准备&#xff1a; 1.在包结构中创建images包来存放我们用到的图片&#xff0c;在pubspec.yaml中声明路径&#xff1a; 2. 检查虚拟机是否正常运行&…

VS中如何使用Halcon

使用Halcon的本质就是调用Halcon的库&#xff0c;其主要步骤有&#xff1a; 1、将Halcon代码导出为C的.cpp文件 2、获取.cpp文件中的action函数的函数体 3、添加Halcon的动态库和静态库 4、添加action函数需要的头文件 导出halcon中的代码 a&#xff09;导出代码 b&#x…