从零到一落地接口自动化测试

news2024/11/16 3:32:49

前段时间写了一系列自动化测试的文章,更多是从方法和解决问题思路角度阐述我的观点。

昨天花了几个小时看完了陈磊老师的《接口测试入门课》,有一些新的收获,结合我自己实践自动化测试的一些经验以及个人理解,这篇文章来聊聊新手如何从零到一落地实践接口自动化测试。

为什么要做接口测试

测试理念的演变

早些时候,软件研发交付流程大多遵循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,开发自动化测试平台;

如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以加入我们的QQ群:746506216,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。


资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

主要控制系统之间的逻辑关系

电力行业 工控安全解决思路保障框架从电力行业对工控安全需求看,电力企业在主要是以合规性建设为主,在 2004 年原电监会 5 号令颁布开始,大部 分的电厂控制系统安全 建设已经按照 5 号令的要求进行了整改,形成“安全分区、网络专…

【2022硬件设计开源盛宴】一年一度的hackaday大赛结束,冠军便携式风力涡轮机,共提交326个电子作品,奖金池15万美元

https://hackaday.com/2022/11/05/ ... -years-competition/ (1)一年一度的Hackaday大赛结束,今年是第9届了,总奖金池是15万美元,冠军5万美元。前6届,冠军奖金非常高,像第3届冠军是最厉害的&am…

java设计模式之装饰者模式

一:装饰者模式 1.什么是装饰者模式? 装饰模式是一种结构型设计模式, 允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。 装饰者模式的基本介绍 1.装饰者模式:动态的将新功能附加到对象上。在对象功能扩展方面&#xf…

Jasper 中如何将数据拆成多行并跨行累计

【问题】 I have a query that returns some summary records. For instance, loan amount, loan term, interest rate. Then I want to have a second row that builds out the detailed payment schedule. so the report would look like this: Loan Amt Term …

SpringBoot2

文章目录1.简介1.1 SpringBoot优缺点1.2 官方文档结构2. SpringBoot入门2.1 HelloWord2.2 依赖管理2.3 自动配置2.4 容器功能组件添加原生配置文件引入2.5 配置绑定ConfigurationPropertiesEnableConfigurationProperties2.6 自动配置原理底层总结最佳实践2.7 开发小技巧Lombok…

UML类图简单认识

类 类图包括类、接口和关系。类中包含三元素,第一行是类名,如果是虚类则为斜体。第二行包括属性,如果是public则为,如果是private则为-,如果是protected则为#。第三行包括方法,方法前面的符号表示与属性的…

QSS的应用

盒子模型: margin 边距border 边框padding 内边距content 内容常用的一些属性: background背景background-color背景颜色background-image背景图片background-position对齐方式border-(top、left、bottom、right)边界border-…

单调栈问题---(每日温度,下一个更大元素Ⅰ)

代码随想录day 58 单调栈问题— 每日温度,下一个更大元素Ⅰ 文章目录1.leetcode 739. 每日温度1.1 详细思路及解题步骤1.2Java版代码示例2.leetcode 496. 下一个更大元素 I2.1 详细思路及解题步骤2.2Java版代码示例1.leetcode 739. 每日温度 1.1 详细思路及解题步骤 这题会用到…

Spark RDD编程模型及算子介绍(一)

文章目录RDD编程模型介绍RDD的两种算子及延迟计算常见的Transformation算子RDD编程模型介绍 RDD是Spark 对于分布式数据集的抽象,它用于囊括所有内存中和磁盘中的分布式数据实体。每一个RDD都代表着一种分布式数据形态。在RDD的编程模型中,一共有两种算…

Linux-服务管理

服务介绍 服务本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的ing求,比如mysqld,sshd,防火墙灯,因为又称为守护进程 如何管理服务 CentOS7.0前使用service命令 servi…

SpringBoot-配置

目录 起步依赖原理分析 配置文件分类 YAML YAML:基本语法 YAML:数据格式 YAML:参数引用 读取配置内容 profile Profile-小结 内部配置加载顺序 外部配置加载顺序 起步依赖原理分析 在spring-boot-starter-parent中定义了各种技术的…

[附源码]Python计算机毕业设计GuiTar网站设计

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

【学习笔记】《模式识别》4:贝叶斯判别准则

贝叶斯判别准则 文章目录贝叶斯判别准则一、研究对象及相关概率1. 两类研究对象2.概率3. 条件概率4. 模式识别中的三个概率5. 两对条件概率的区别二、贝叶斯决策1.最小错误率贝叶斯决策2. 最小风险贝叶斯决策3. (0-1)损失最小风险贝叶斯决策4.正态分布模式的贝叶斯决策三、贝叶…

RFID在钢筋仓库管理中的应用

RFID在钢筋仓库管理中的应用 应用背景 随着经济的迅速发展,带动了钢材业的迅速发展,钢筋的使用量也在改革开放后有了近370多倍的增长,如此大量的钢筋在库存管理,盘点,防盗,各种型号发货、防窜货上等等一系…

图片链接或pdf链接通过浏览器打开时,有时可以直接预览,有时却是下载,为什么?

在前端开发中,有时候需要对一些文件链接进行特殊处理,比如对于一些图片链接或者PDF链接,有时我们需要通过浏览器打开进行预览,有时又不希望通过浏览器进行打开,而是希望能够直接下载到本地。但现实效果却往往跟我们相反…

硅麦驱动开发及调试(pdm>>I2S>>pcm)

pdm 协议 PDM接口只有两根信号线: PDM_CLK 时钟信号。 PDM_DATA 数据信号。 I2S协议 数据发送规格 I2S在BCLK的下降沿发送数据(发送),在上升沿进行数据采样(接收)。每次是先发送最高位,最后…

Hadoop概述

Hadoop概述 Hadoop介绍 狭义上Hadoop值的是Apache的一款开源软件。 用java语言实现开源软件框架 允许使用简单的编程模型跨计算机集群对大型数据集进行分布式处理 Hadoop核心组件 Hadoop HDFS(分布式文件存储管理系统):解决海量数据存储 Hadoop YARN(集群资源管理…

3-2、python内置数据类型(列表和元组)

文章目录序列列表列表的创建列表的基本特性连接操作符和重复操作符成员操作符(in和not in)索引切片for循环列表的常用方法增加修改(通过索引和切片重新赋值)查看删除其他操作元组(和列表相比,不能增删改元素…

30分钟带你精通Git使用

一、 版本控制工具 1.1. 什么是版本控制系统? 版本控制系统(Version Control System):是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制系统不仅可以应用于软件源代码的文本文件,而且…

[附源码]SSM计算机毕业设计班级风采网站JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…