【接口自动化测试入门】从0到1落地接口自动化测试

news/2025/2/22 21:20:51/

前段时间写了一系列自动化测试相关的文章,当然更多的是方法和解决问题的思路角度去阐述我的一些观点。这篇文章来聊聊新手如何从零到一落地实践接口自动化测试。

为什么要做接口测试

测试理念的演变

早些时候,软件研发交付流程大多遵循V型或W型的瀑布模式,这种模式下只有开发编码完成才会提测进入测试验证阶段。这个阶段测试同学做的大多是基于业务流程和页面的功能测试工作,也就是我们自嘲的“点工”。

近几年随着业务迭代速度加快,以及测试行业的不断发展,像测试左移、敏捷测试等理念开始被更多的人认可。从软件工程的角度来说,越早介入发现问题和风险,修复的成本越低,最终交付的质量也越高。

前几年自动化测试最火爆的时候,很多同学应该都知道测试金字塔模型。见下图:

按照某些理论或者大厂的最佳实践,UI:API:UNIT层的自动化测试占比应该是1:2:7,原因如下:

  • UI:维护成本高,介入时间较晚,收益最小;
  • API:维护成本适中,可以尽早介入,覆盖的场景也较多;
  • UNIT:维护成本最小,可以更早介入,测试粒度最小,收益最高(至于谁来写单元测试,当然是开发啊);

技术要求的提升

国内大部分测试同学在技术上来说相比于开发,是要弱上不少的。

为了不断提升软件系统的交付质量,需要尽可能的扩大测试覆盖的场景和测试的深入程度,这对测试同学的技术有了更高的要求。

随着系统复杂度提升,同时像微服务、云原生、server mesh等新技术的应用,为了了解被测对象以便更好的开展工作,测试这个岗位的技术要求也越来越高。

从一开始的UI层面的测试,开始不断向下探,API层的测试在日常工作中的占比越来越高也是演进的一个必然趋势。API测试还有2个特性:

  • 相比于UI层测试可以更早介入,向上可以不断加大UI层的覆盖广度;
  • 相比于UNIT层测试难度更低点,向下可以逐渐覆盖一些公共接口的单元测试;

既提升了技术逼格,又能做产出KPI,同时还提升了软件的交付质量,一箭三雕,赢麻了。

理解接口和接口测试

如何理解接口?

简单来说,接口就是一个中介,负责界面层的业务场景和代码层的实现逻辑交互转化。

接口遵循一定的规则和约束,输入特定的数据会返回特定的数据,输入和输出的逻辑需要事先约定。

接口之间互相调用也需要遵循一定的规则,这个规则就是网络协议,如:http协议、tcp协议,rpc协议。

如何理解接口测试?

接口测试就是对约定好的输入输出逻辑进行测试和校验,和功能测试一样也需要设计测试用例。

设计测试用例的方法和功能测试没太多区别,同样需要考虑等价类边界值判定表法以及异常场景。

当然,接口测试还需要考虑性能、安全等因素,不过这就是其他细分测试领域了,这里暂且不表。

如何学习接口测试?

学习接口测试的大前提是了解不同类型的接口结构是怎样的,因此网络协议是必学项。相关书籍如下:

  • 入门了解:《图解HTTP》、《图解TCP/IP》
  • 深入学习:《HTTP权威指南》、《TCP/IP权威指南》

了解接口的结构后,还需要学习一些接口测试相关的工具,业内常用的工具如下:

  • 抓包工具:Fiddler、Charles
  • 测试工具:Jmeter、Postman
  • 接口生成管理工具:Yapi、Swagger

UI/API/UNIT测试的区别

UI、API、UNIT测试有各自不同的特点,概括总结的话区别如下:

  • UI测试:业务流程测试;
  • API测试:业务数据流测试;
  • UNIT测试:业务实现逻辑测试;

如何落地接口自动化测试

在讨论新手从零到一落地接口自动化测试之前,我想先抛出我的几点建议:

  • 从零开始,不要直接去学习所谓的自动化框架;
  • 学习框架之前,很有必要学习网络协议和编码知识;

为什么这么说?新手一般技术基础不太扎实,且没有太多编码实践,直接学习框架特别容易一步一个坑。

见过太多新手直接学框架,出现了诸如安装失败,报错看不懂,不会调试等等很多现象。还有部分同学对代码编辑器不会用,看不懂日志,不会封装等问题。

从零开始学习落地接口自动化,或者说其他自动化测试,我更建议从易到难的去落地实践,这样一方面可以在日常工作中优先保证工作的完成,提升工作效率;

另一方面就像打怪升级一样,从易到难去学习提升自己,并不断优化自动化测试在工作中的实践。

从一到难落地实践接口自动化测试,大概可以遵循如下几个步骤:

  • 学会用工具进行接口测试(如jmeter/postman);
  • 学会用持续集成工具(如jenkins)将接口测试脚本批量执行;
  • 学会诸如git/gitlab等版本和源代码管理的工具,便于团队多人协作;
  • 学习一门编程语言,利用自动化测试框架将工具脚本转化为代码脚本;
  • 学习将公共部分封装,优化代码结构,提高写代码脚本的效率,降低维护成本;
  • 学习数据参数化管理的方法,可以从Excel——配置文件——数据库——造数工厂这个方向迭代;
  • 尝试按照业务线和测试场景区分脚本集合,然后引入mock,降低服务间的调用依赖,提高执行效率;
  • 开始画大饼,造轮子,搞KPI,开发自动化测试平台;

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!   


http://www.ppmy.cn/news/1159582.html

相关文章

lenovo联想笔记本ThinkPad系列T15p或P15v Gen3(21DA,21DB,21D8,21D9)原厂Win11系统镜像

下载链接:https://pan.baidu.com/s/1V4UXFhYZUNy2ZQ8u4x1AFg?pwdqz0s 系统自带指纹驱动、人脸识别驱动、显卡、声卡等所有驱动、出厂主题壁纸、Office办公软件、Lenovo联想电脑管家等预装程序 所需要工具:32G或以上的U盘 文件格式:ISO …

Android Fragment 基本概念和基本使用

Android Fragment 基本概念和基本使用 一、基本概念 Fragment,简称碎片,是Android 3.0(API 11)提出的,为了兼容低版本,support-v4库中也开发了一套Fragment API,最低兼容Android 1.6。 过去s…

VS2010 C语言内嵌汇编语言程序

VS2010 C语言内嵌汇编语言程序 2021年7月28日席锦 在visual studio 2010中C语言使用内联汇编写代码 ,它的格式有两种, 一种是__asm 直接接汇编指令语句,比如:__asm int 3 // 软件中断 另一种是加上花括号,类似于一个函数&…

Linux命令及命令来源

Linux是一个强大的操作系统,拥有许多内建的命令。以下是常见的Linux命令及其简单的解释和用法: ls:列出目录内容。 来源:list。用法:ls、ls -l、ls -a cd:改变当前目录。 来源:change director…

LDAP协议工作原理

LDAP,全称Lightweight Directory Access Protocol,译为轻量目录访问协议,是一个在互联网中广泛使用的协议,主要用于实现网络中的信息查找和检索。在身份认证方面,LDAP起着重要的作用。 LDAP的工作原理主要包括以下几个…

HTML标签详解 HTML5+CSS3+移动web 前端开发入门笔记(四)

HTML中列表的作用 HTML中的列表(List)用于呈现按照一定逻辑关系组织的信息,以便用户更好地理解和识别。列表可以分为有序列表、无序列表和定义列表三种类型。 有序列表(Ordered List):用于表示按照一定顺序…

AFL模糊测试+GCOV覆盖率分析

安全之安全(security)博客目录导读 覆盖率分析汇总 目录 一、代码示例 二、afl-cov工具下载 三、编译带覆盖率的版本并启动afl-cov 四、AFL编译插桩并运行afl-fuzz 五、结果查看 AFL相关详见AFL安全漏洞挖掘 GCOV相关详见GCOV覆盖率分析 现将两者结合,即进…

Zoho WorkDrive荣获专业研究机构评定的“Leader”称号

近年,在云计算、大数据、移动互联网、社交所引领的数字化转型变革中,企业对于数字资产的保护和利用愈加重视。相较于结构化数据,企业对于非结构化数据(文档、图片、音视频等)管理的需求更强、难度更大。 同时&#xf…