2023接口自动化测试,完整入门篇(超详细~)

news2025/2/24 12:21:03

一、自动化测试

众所周知,自动化测试已经成为软件项目中不可或缺的测试方法。基于用户交互界面(GUI)的自动化测试方法具有模拟用户行为和过程可视化的特点,因此受到了广大入门自动化人士的喜爱。诸如:QTP、Selenium等都具有强大的功能支撑和丰富的知识库,而逐渐成为自动化测试人士必备工具之一。

然而,伴随着敏捷开发和持续交付在软件开发项目中的普及和应用,测试工作的重心不得不进一步前移。而由于用户界面的开发通常处于软件开发的末端且缺陷修复成本较大,因此基于GUI的自动化测试无法很好的适用于此类项目。基于应用程序接口(API)的自动化测试却可以很好的解决了此类问题。

二、接口自动化测试

在分层测试策略中各层工作有明确的测试重心,测试工作通过逐层开展螺旋上升。这样一方面促使开发测试一体化,直接提高了测试效率;另一方面也可以尽早发现程序缺陷,降低缺陷修复成本。

分层测试策略

API接口测试

介于单元测试和界面测试之间,是一种灰盒测试方法,主要测试内部接口功能的完成性。相较于UI自动化测试,它具有自动化成本低和测试效率高的特点。

接口测试的工作原理是接口测试工具模拟客户端向服务器发送报文请求,服务器接受请求并做出响应。然后向客户端返回应答信息,接口测试工具对应答信息进行解析的一个过程。如图(报文传输的大致流程):

常用的接口测试工具有:

1、Apache JMeter:是一款基于Java的开源测试工具,主要应用于WEB应用程序的负载测试,同时也支持单元测试和接口测试;

2、Postman:是一款功能强大的网页测试工具,支持WEB API和HTTP请求,能够发送任何类型的HTTP请求(GET、HEAD、POST、PUT等)。Postwomen与其近似的一款免费开源、轻量级测试工具;

3、SoapUI,是一款用于SOAP和REST的开源API测试自动化框架,可以集成到Eclipse等开发工具中,支持用户二次开发;

4、Robot Framework,是一款基于Python3的开源自动化测试框架,具有良好的可扩展性,支持关键字驱动,运行用户二次开发。

基于这些接口测试工具,测试人员可以根据自身业务需要开发适合自己的接口自动化测试工具。有了接口自动化测试工具,我们就可以开展自动化测试工作。

接口自动化测试的基本流程有(如图):

1、在测试工具中登记待测交易的接口报文格式;

2、编写测试案例,向案例中添加交易接口并进行配置关联;

3、准备测试数据并对测试数据进行参数化;

4、测试工具自动执行自动化测试案例;

5、测试工具比对预期结果和返回结果,验证案例是否执行成功。

三、接口自动化测试要点

参照DevOps的评级标准,作者所处项目的所有交易的接口必须进行全量自动化测试覆盖。项目组为了保证项目测试达到该标准,为此做了大量的前期规划和实践探索,结合作者的自身的项目实践与大家分享几点接口自动化测试过程中的工作要点。

1、梳理交易流程做到一目了然。

以税金支付账号维护交易为例,该交易包含新增/修改提交复核、复核通过、复核退回、删除四个程序接口。各接口程序之间的关系如下图所示,提交复核,分为新增提交复核和修改提交复核,提交之后可以复核通过也可以复核退回,删除交易只能处理复核退回的数据。

因此我们可以整理出该交易的分支案例如下:

1)新增提交复核>复核通过>修改提交复核>复核通过;

2)新增提交复核>复核退回>修改提交复核>复核退回>删除。

由图(税金支付账号维护交易流程图)我们可以一目了然的看出该上述两条分支案例已完全覆盖税金支付账号维护交易的所有业务分支。从而避免接口自动化测试时遗漏某一逻辑分支,造成缺陷逃逸。

2、详细的接口设计文档是成功的前提

子曰:”工欲善其事必先利其器。”一个详细的接口设计文档是接口自动化测试顺利开展的重要前提。为了保证接口测试的顺利开展,我们要求项目组开发人员务必给出接口交易各字段的校验规则和操作步骤。

如图示,展示了提交复核接口各输入字段的校验规则,提交复核类型不能为空,必须是old/new

。同时开发人员还写出了提交复核接口程序的处理步骤,如对数据库表:税金支付账号,先进行赋值操作,然后进行了保存到数据库中。

详细的字段校验规则,有助于后续测试人员在编写接口自动化测试案例时准确的填写接口字段值。并根据校验规则和操作步骤设置检查点,比对判断程序返回结果是否正确。详细的验证方法见下一部分“案例正确性验证”。

提交复核接口字段校验规则

提交复核接口操作步骤

3、案例的正确性验证

1)程序返回信息的正确性验证。案例执行完毕,对程序返回结果的正确处理决定了自动化案例能否正确发现程序缺陷。可以说全面的正确性验证决定了自动化测试案例的质量高低与否。如:图(提交复核接口字段校验规则)中提交复核类型字段输入NULL/add等非法值后,我们不仅要验证程序的错误码为200,同时也要验证报错信息是否符合预期,确定该条案例确实测试到该条校验规则。

为此我们引入了关键字对比功能,提取预期错误提示信息的唯一标识关键字。以关键字为标准,检索程序反馈信息是否存在该关键字,若检索到该错误信息关键字则判定该反向案例执行通过且正确。若未检索到该错误信息关键字,则判定该反向案例设计不能覆盖此条交易规则。

2)数据库操作的正确性验证。程序执行过程中涉及到大量的数据库增删改操作,从验证完备性考虑,需要进一步验证数据库操作是否正确,避免插入、修改的数据存在错误,或数据库操作失败后回滚造成脏数据的存在。

为了验证数据库插入、修改、删除是否成功,数据是否符合预期,我们采用了以下两种验证方法:1)交易关联验证;2)数据比对验证。

交易关联验证是通过业务逻辑进行验证,使用后置交易是否能成功执行来验证前置交易数据库操作是否正确。如:录入一张金额为100元的发票,我们可以先发起领票101元的交易,再发起领票100元的交易,如果领票101元失败,领票100元成功,即可证明录入金额为100元准确无误。

数据对比验证是系统或业务需要的登记类数据,这类数据没有后续的逻辑关系,传统的处理方法是人工查询数据库或查询交易,我们开发出一个数据库查询API,通过前置交易传入的表的KEY值查询到该条记录的其他字段值,并与预期值进行比对,从而实现了自动化核对。

4、其他要点提示

除了以上3点之外,测试人员还需要关注数据是否独立、测试案例是否形成了闭环、测试数据的参数化。数据是否独立决定了测试环境对自动化案例的影响程度,数据独立性越高则环境变化造成的影响越小。测试案例能否形成闭环决定了该条测试案例是否可以被重复大量执行。测试数据参数化决定了我们的案例复用程度和后期的维护成本,对等价的数据进行参数化设置不仅有助于我们覆盖大量测试数据。同时当程序发生改变时,我们可以简单快捷的修改测试数据。常用的测试数据来源有数据库、配置文件、接口返回值、excel/txt文件。

四、结语

随着自动化测试成为测试工程师必备技能之一。拥有了该项技能在面对功能、模块日趋复杂和迭代频繁的软件开发项目时,测试人员可以从容不迫的解决和应对这些问题。本文基于此种考虑,介绍了自动化测试的相关知识。结合作者在项目中的实践分享了接口自动化测试过程中的几点感悟,希望对想要迈入和初步迈入的自动化测试领域的同志们有所帮助。

END配套学习资源分享

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】

加入我的软件测试交流qq群:110685036免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

全套资料获取方式:

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

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

相关文章

问题记录:K8s中安装calico,calico反复重启,原因:版本未匹配

问题描述 K8s版本1.23.6 calico-node-反复重启,READY状态一直为0,STATUS为CrashLoopBackOff, 查看节点日志 #calico-node-xxx 对应pod名称 kubectl logs calico-node-xxxx -n kube-system 没有错误,只有info信息 但是一直反…

代码随想录算法训练营15期 Day 14 | 理论基础、递归遍历、迭代遍历、统一迭代

理论基础 二叉树的种类 需要了解 二叉树的种类,存储方式,遍历方式 以及二叉树的定义 满二叉树 满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。 完全二叉树…

十年寒冰,IT老鸟告诉你如何快速入门一个编程语言 #如何系统学习一门it技术#

我个人算是学了非常多的各类编程语言了,从最早的.NET到后面的PHP、数据库MySQL、Redis、前端(HTML、CSS、JS)、公众号开发、再到后面因为工作的需要,学习前端工程化、NodeJs、Vue、React、以及个人学习爬虫的时候把Python也学了&a…

复合材料压缩模拟探究:选取应变分量的区别,与实验结果的对比分析

复合材料压缩模拟探究:选取应变分量的区别,与实验结果的对比分析 一、模型介绍 6641的试验件模拟。加强片是采用continuum shell,试验件采用每层一个单元,并且采用一层一个材料,并定义方向。 试验件材料为X850材料&a…

做接口测试必须要弄明白的7个问题

1. 为什么要进行接口测试 接口测试是软件测试中必不可少的环节之一。在软件开发过程中,不同的模块之间需要通过接口进行交互,因此对接口进行测试可以有效地检测模块间的交互是否正常,从而保证整个系统的质量和稳定性。 2. 接口测试的作用 接…

跨境必看!FP独立站必备安全支付方式

收款对于做F牌独立站的卖家来说至关重要,收款的方式有很多种,卖家在选择收款方式时需要关注什么?FP独立站必备的支付收款方式又有哪些?卖家又该如何选择呢? 一、在选择支付方式时要注意什么?1.安全合规&…

RPC、HTTP、DSF、Dubbo,每个都眼熟,就是不知道有什么联系?

一、HTTP 和 RPC 首先,http 与 rpc 有什么区别这个问题不太严谨,因为这俩就不是一个层级的东西。 HTTP 这个大家太熟悉了吧?日常接触最多的恐怕就是各种http协议的接口了。 没错,http它是一个协议。 其他在这里就不打算铺开了…

Nginx+Tomcat实现负载均衡、动静分离

目录 一、Nginx负载均衡实现原理 1.Nginx 实现负载均衡是通过反向代理实现 2、Nginx配置反向代理主要参数 3、动静分离原理 4、Nginx静态处理优势 5、并发量和吞吐量计算 二:7层反向代理 1、环境准备 ​2、配置Nginx Server 3、tomcat1 和tomcat2配置 4、 搭…

Jmeter性能测试 (入门)

Jmeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率。 熟练使用Jmeter后, 能用Jmeter搞定的事情,你就不会使用LoadRunner了。 本文将通过一个实际的测试例…

浪涌保护器的选型和原理(SPD)

SPD是Surge Protective Device的简写,中文名称有:电涌保护器、浪涌保护器、防雷栅、雷电浪涌防护器、防雷器等。 SPD浪涌保护器其内部包含至少一个非线性元件。当电涌出现时,SPD能在极短的时间导通,将电流泄放到地,其…

如何有效的提升餐饮油烟的监控力度

摘要:现阶段餐饮行业发展十分迅速,为了更好地提升餐饮油烟的监控力度,强化餐饮业油烟在线监控系统的设计成为重中之重。油烟在线监控系统的强化可以降低油烟的排放量,同时在排烟的过程中,还可搜集到更多的数据和信息。…

用“Function“替代“eval“进行动态代码生成

一、背景 在JavaScript中我们有时会遇到这么一个场景:“函数可能要根据不可预知的条件执行代码”。比如说计算器中的加减乘除,用户无法直接将操作符"、-、*、/"作为参数传入函数中,因此我们一般会采取字符串形式的操作符&#xff0…

asp.net高校食谱管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net高校食谱管理系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语言 开发 asp.net高校食谱管理系统VS开发s…

Spring - Bean的实例化流程及生命周期

文章目录 Bean的实例化流程及生命周期一、Bean实例化基本流程1.1 Bean实例化基本流程1.2 总结 二、 Bean 后处理器2.1 介绍2.2 BeanFactoryPostProcessor Bean工厂后处理器2.2.1 入门2.2.2 Bean工厂后处理器注册BeanDefinition2.2.3 BeanDefinitionRegistryPostProcessor专门注…

2023年软件测试工程师如何提升?测试工程师破局进阶...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 熟练掌握基本的测…

Java反编译工具Jad的下载与使用示例

场景 Java反编译工具-JD-GUI下载以及使用: Java反编译工具-JD-GUI下载以及使用_霸道流氓气质的博客-CSDN博客 上面讲过Java反编译工具JD-GUI的使用,如果使用jad并通过命令如何实现反编译。 为了验证Java开发手册中为什么不推荐使用进行字符串拼接&…

基于轻量级卷积神经网络模型开发构建中国象棋棋子识别系统

关于棋类相关的AI类型的项目在我之前的文章中也有过不少的实践开发经历,这里就不再赘述了,感兴趣的话可以自行移步阅读即可: 《YOLOV5融合SE注意力机制和SwinTransformer模块开发实践的中国象棋检测识别分析系统》 《基于轻量级YOLO开发构建…

【IP技术】什么是IP地址?

一、IP地址概念 IP地址是一个32位的二进制数,它由网络ID和主机ID两部份组成,用来在网络中唯一的标识的一台计算机。网络ID用来标识计算机所处的网段;主 机ID用来标识计算机在网段中的位置。IP地址通常用4组3位十进制数表示,中间用…

(论文阅读)Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

论文地址 https://openreview.net/pdf?id_VjQlMeSB_J 摘要 我们探索如何生成一个思维链——一系列中间推理步骤——如何显著提高大型语言模型执行复杂推理的能力。 特别是,我们展示了这种推理能力如何通过一种称为思维链提示的简单方法自然地出现在足够大的语言模…

运用自动化测试脚本,测试下CSDN的登录功能模块

目录 前言 python程序目录 账号密码登录模块 测试用例执行模块 运行结果示例 前言 自动化测试的重要性越来越受到人们的重视,因为它可以提高测试效率、降低测试成本并减少人为错误的出现。为了满足这个需求,越来越多的公司开始采用自动化测试来保证…