【接口自动化测试】月薪12k必会技术,从0到1学习接口自动化测试,6个操作安排的明明白白

news2025/1/13 16:58:55

导读:在所有的开发测试中,接口测试是必不可少的一项。有效且覆盖完整的接口测试,不仅能保障新功能的开发质量,还能让开发在修改功能逻辑的时候有回归的能力,同时也是能优雅地进行重构的前提。编写接口测试要遵守哪些原则?测试代码的结构应该是什么样的?接口测试有哪些实践技巧?本文分享作者在接口测试上的实践总结。

测试工程师是一个高技术含量的岗位,但现在不少人误以为测试工程师就是“点工”,拿到软件“点点点”,就可以完成测试了,没啥技术含量,而一些测试工程师错误的工作方法也滋长了这种误解。

目录

1、什么是接口测试

2、为什么要做接口测试

3、接口测试的范围

4、接口测试的重点

5、测试原则

6、接口测试常用工具

接口自动化测试学习资源分享


1、什么是接口测试

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

2、为什么要做接口测试

a)互联网的快速发展,公司内部系统或与外部系统的关联越来越多,一个业务流程关联多个后端系统,它们的关联都是基于接口来实现,接口测试可以将复杂的系统关联进行简化,只要做好每个接口的测试就能够较好的保证系统质量。

b)单个系统的变更,是否会影响到关联业务系统,比较难用常规的测试方面来覆盖相关的应用系统(例如使用此接口的外部 系统有N个,不可能每个做功能兼容性测试),但可以通过对接口功能的覆盖来验证是否影响它人对接口的调用。

c)接口功能比较单一,能够比较好的进行测试覆盖,也相对容易实现自动化持续集成,,可以减少人工回归成本与时间,缩短测试周期。

d)接口相对于界面功能,会更底层一些,测试覆盖会更容易(如业务在调用接口时做了判断,当不满足条件时链接就不显示,此时从界面无法测试相关功能是否做好判断,通过接口就比较容易)

3、接口测试的范围

a)业务功能(包括正常、异常场景是否实现)
b)业务规则(覆盖度是否全面)
c)参数验证(边界、业务规则是否达到要求)
d)异常场景(重复提交、并发提交、事务中断、多机环境、大数据量测试)
e)性能测试(响应时间、吞吐量、并发数、资源要求)
f)安全测试(权限验证、SQL注入等)

4、接口测试的重点

a)检查接口返回的数据是否与预期结果一致。
b)检查接口的容错性,假如传递数据的类型错误时是否可以处理。
c)接口参数的边界值。例如,传递的参数足够大或为负数时,接口是否可以正常处理。
d)接口的性能,http请求接口大多与后端执行的SQL语句性能、算法等比较相关。
e)接口的安全性,外部调用的接口尤为重要。

5、测试原则

基础原则:

•自动化:接口测试是非交互式的自动化执行,不需要人参与。

•独立性:接口测试之间不应该相互依赖。

•可重复:接口测试可重复执行,不受环境影响。

•接口测试遵守BCDE原则,保障接口交付质量。

  • Border:边界测试。

  • Correct:正确的输入,正确的预期输出。

  • Design:按照需求和设计文档编写测试逻辑。

  • Error:错误输入,预期输出。

•数据准备:数据准备通过系统服务进行,不能通过直接插入db方式。

•可测性:对于不可测的代码需要进行重构成合理的结构。

•覆盖性:接口测试需要覆盖所有UC,同时代码覆盖率和分支覆盖率应达到一定标准,新增代码必须被覆盖。

•持续性:如果代码修改导致已有接口测试执行失败,必须修复代码问题或者测试代码逻辑。

•时间要求:接口测试应该在项目发布之前完成,不应放到项目发布之后补充。

以上的基本原则应适用于所有层的自动化测试用例,在编写接口测试时,除了上面这些原则,还有其他原则需要遵守,先看一张图:

从系统角度来分析入口调用,以HSF服务为例:

•外围系统调用由我们系统提供的服务。

•系统执行了一堆代码逻辑,其中包含有分支逻辑。

•系统执行过程中依赖外部HSF服务,进行了调用,并得到了返回值。

•系统执行过程中依赖DB查询或者落地了数据,依赖缓存查询或者落地了数据。

•系统执行过程中对外发送了消息。

•给上游系统返回HSF执行结果。

有效接口测试的关键原则是要覆盖所有入口,mock所有依赖,校验执行过程中所留下的痕迹,总结如下:

•入口覆盖:接口测试用例必须覆盖HSF服务入口、消息入口、定时任务入口。

•依赖mock:在基本原则中,有可重复这个原则,即接口测试不能受环境依赖,需要mock掉对外依赖。但对于db依赖,不建议完全mock掉,一方面mock成本高,另外可能覆盖不到sql和表约束逻辑。

•校验完整:有效的接口测试,应该具备完整的校验,没有校验的接口测试是没有意义的。只要执行过程中,留下的痕迹对业务有影响,都要进行完整校验,方能保障接口测试的有效性、

  • HSF接口返回值校验:按照场景和接口约定进行HSF返回参数校验。

  • DB校验:校验落地数据的正确性。

  • 缓存校验:校验存入缓存中数据的正确性。

  • HSF依赖入参校验:通过mock工具获得依赖HSF调用的入参,进行入参校验。

  • 消息校验:通过mock工具获得发送的消息对象,进行消息体校验。

6、接口测试常用工具

1、JMeter
JMeter是Apache组织开发的基于Java的压力测试工具,能够将请求转换为脚本来实现,并允许使用正则表达式创建断言来对请求返回结果进行判断,具备接口测试功能和性能的能力。

2、Robot Framework

Robot Framework是一款Python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。常用于轮次很多的验收测试和验收测试驱动开发(ATDD)。

3、SOAPUI
SoapUI是一个完整的自动化测试解决方案。支持SOAP和REST的Web服务,JMS企业消息层,数据库,丰富的互联网应用,等等。而在SoapUI,你从它的直观和强大的用户界面这一切。对于自动化程度较高,SoapUI还提供了命令行工具,让您运行的功能/负载测试和几乎所有的任务调度程序,或作为您的构建过程中的一个组成部分MockServices集。

4、PostMan
Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件,具备Fiddler、httpwatch之类的工具调试请求的功能,同时具备接口管理功能,官网提升脚本保存同步功能,支持接口导入导出。

接口自动化测试学习资源分享

 END绵薄之力

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

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

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

获取方式 :

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

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

相关文章

电商直播商家崛起所面临的问题,订单管理系统起关键性作用

随着短视频直播的兴起,电商企业再次迎来大爆发,随着销量的猛增,随之而来的的订单处理成了各大商家的头等大事,面对再次崛起的电商蓝库云认为企业在订单管理会经常遇到以下问题: 电商企业在订单管理中可能面临以下问题…

js版计算连续12个月计算不超3万公里

<!--考虑比亚迪车友不是程序员的多&#xff0c;写了个html版的&#xff0c;复制以下代码在记事本&#xff0c;改后缀名为test.html&#xff0c;然后用浏览器打开--> <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>…

基于SpringBoot3从零配置MybatisPlus

基于SpringBoot3从零配置MybatisPlus记录 文章目录 1.环境2.表数据准备3. 配置pom配置yml 配置MapperScan 3.问题总结问题1: Property sqlSessionFactory or sqlSessionTemplate are required问题2&#xff1a;org.apache.ibatis.binding.BindingException: Invalid bound stat…

Python学习13:说句心里话 A(python123)

描述 分两次从控制台接收用户的两个输入&#xff1a;第一个内容为"人名"&#xff0c;第二个内容为"心里话"。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪…

使用D435i深度相机运行ORB-SLAM3

下载安装链接 下载ORB-SLAM3地址&#xff1a; git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git eigen3多版本安装&#xff1a;https://blog.csdn.net/weixin_41756645/article/details/129570141 ORB-SLAM2中eigen3版本为&#xff1a;3.2.10版本 ORB-SLAM3中eigen3版…

【Jetpack】ViewModel + LiveData + DataBinding 综合使用 ( 核心要点说明 | 组合方式 | 代码示例 )

文章目录 一、ViewModel LiveData DataBinding 核心要点1、ViewModel 使用要点2、LiveData 使用要点3、DataBinding 使用要点 二、ViewModel LiveData DataBinding 代码示例1、ViewModel LiveData 代码2、build.gradle 构建脚本 - 启用 DataBinding3、DataBinding 布局文件…

ChatGPT实战100例 - (10) 提前体验ChatGPT的多模态绘图功能

文章目录 ChatGPT实战100例 - (10) 提前体验ChatGPT的多模态绘图功能一、需求与思路二、基本调教三、开始秀四、 总结 ChatGPT实战100例 - (10) 提前体验ChatGPT的多模态绘图功能 这个绘图其实比较基础&#xff0c;只能说是能显示个图吧 真要出图&#xff0c;隔壁 文心一言 秒杀…

如何提高三维模型OSGB格式转换3DTILES的转换速度和数据质量

如何提高三维模型OSGB格式转换3DTILES的转换速度和数据质量 提高三维模型从OSGB格式转换为3DTILES格式的转换速度和数据质量&#xff0c;可以从以下几个方面进行优化&#xff1a; 1、选用高效的转换工具&#xff1a;选择高效的转换工具是提高转换速度和数据质量的关键。目前市…

.NET中比肩System.Text.Json序列化反序列化组件MessagePack

简介 官方定义&#xff1a;MessagePack是一种高效的二进制序列化格式。它允许您像JSON一样在多个语言之间交换数据。但是它更快并且更小。 MessagePack是一种开源的序列化反序列化组件&#xff0c;可支持JAVA&#xff0c;C#等主流语言。在 C# 中使用 MessagePack&#xff0c…

javaScript:cropperjs是一款非常强大却又简单的图片裁剪工具

cropperjs是一款非常强大却又简单的图片裁剪工具&#xff0c;它可以进行非常灵活的配置&#xff0c;支持手机端使用&#xff0c;支持包括IE9以上的现代浏览器。&#xff08;关键是使用方法简单&#xff0c;几行代码就可以搞定&#xff09; 官方github文档&#xff1a;GitHub -…

深入理解计算机系统--理解编译器编译的过程

前言 大家在学习C语言的时候&#xff0c;相信对编译器这个词并不会感到陌生。我们也会知道编译器编译的过程是&#xff1a;预处理-》编译-》汇编-》链接。这篇文章主要介绍这四个过程中&#xff0c;编译器究竟做了那些工作&#xff0c;它是如何让一份高级程序转换成机器语言的…

USB 转 4 串口芯片 CH9104

CH9104 是一款USB总线的转接芯片&#xff0c;支持最高6M波特率与硬件流控&#xff0c;支持USB配置功能&#xff0c;提供RS485方向控制与GPIO等信号引脚&#xff0c;可实现PC等平台扩展多串口或多个串口设备升级成USB口。CH9104实现 USB 转四个异步串口 UART0/1/2/3 功能&#x…

Docker 在Linux-CentOS上的安装使用

Linux CentOS 虚拟机安装及与windows远程登录_XiaoGuaiSs的博客-CSDN博客 一、如果安装过程有兼容问题&#xff0c;执行更新 yum 包&#xff08;生产环境中此步操作需慎重&#xff09; 注意​ yum -y update&#xff1a;升级所有包同时也升级软件和系统内核&#xff1b;​ …

计讯物联智能虫情测报系统,保障粮食安全的守卫者

计讯物联农业虫情监测系统 夏天是粮食作物生长关键期&#xff0c;也是农作物病虫害高发期。因此&#xff0c;预防农作物病虫害在生产过程中是至关重要的环节。作为智慧农业的先行者&#xff0c;计讯物联以预防为主、综合防治为设计理念&#xff0c;利用先进的现代光、电、数控技…

Android、Android Studio 和 Gradle 是如何使用 Java 的

目录 Java平台JRE虚拟机JDKAndroid Studio 如何使用 JavaGradle 如何使用 JavaAndroid Gradle 插件从命令行执行 Gradle 构建Android 设备上是如何使用 Java 的 可以肯定地说&#xff0c;每个人都知道 Android 使用 Java。然而&#xff0c;“使用 Java ”的含义范围相当大。因此…

ROS学习8:ROS机器人平台设计

【Autolabor初级教程】ROS机器人入门 1. 电机与电机驱动板 1.1 直流减速电机 电机主体通过输入轴与减速箱相连接&#xff0c;通过减速箱的减速效果&#xff0c;最终外端的输出轴会按照比例 (取决于减速箱减速比) 降低电机输入轴的转速&#xff0c;当然速度降低之后&#xff0…

effective c++ item35-39

item35:考虑虚函数的替代方案 NVI----Non-Virtual Interface 不使用虚函数接口&#xff0c;子类也可以实现按需求更改实现&#xff1a; The Strategy Pattern via Function Pointers 也可以使用函数指针 或者使用stl::function The “Classic” Strategy Pattern item…

手术麻醉信息管理系统源码,生成规范麻醉文书,自动信息采集

C#手麻系统源码&#xff0c;C# .net 桌面软件 C/S版手术麻醉信息管理系统源码 手术麻醉信息管理系统源码是专门为麻醉科和手术室开发的围手术期临床信息管理系统&#xff0c;具备以下功能: 1.规范手术流程管理&#xff1a;系统整合了手术室、麻醉科的工作及管理流程&#xff…

一则“孔乙己文学”,刺痛了多少学子的心?

个人主页&#xff1a;【&#x1f60a;个人主页】 孔乙已是鲁迅笔下人物&#xff0c;穷困流倒还穿着象征读书人的长衫&#xff0c;迁腐、麻木。最近&#xff0c;大家自我调佩是“当代孔乙己”&#xff0c;学历成为思想负担&#xff0c;找工作时高不成低不就。 文章目录 前言对待…

【C++技能树】再也不怕没有对象了 --初识类

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法…感兴趣就关注我吧&#xff01;你定不会失望。 目录 0. 初识类1.类的引入**在一个结构体里可以定义函数了:**定义一个Struct的时候再也不用写Struct了. 2.类的定义类的两种定义方式:成员…