面试必备:接口自动化测试精选面试题大全

一、 请问你是如何做接口测试的?

大体来说,经历以下过程:接口需求调研、接口测试工具选择、接口测试用例编写、接口测试执行、接口测试回归、接口测试自动化持续集成。具体来说,接口测试流程分成以下九步:

第一步:分析出测试需求,并请开发提供接口说明文档;
第二步:从接口说明文档中整理出接口测试用例,里面要包括详细的入参(正常情况,异常情况包括输入参数个数,类型,可选/必选,考虑参数有互斥或关联的情况)和出参数据(符合接口文档需求)以及明确的格式和检查点;
第三步:与开发一起对接口测试用例进行评审;
第四步:结合开发库,准备接口测试用例中的入参数据和出参数据,并整理成Excel格式的文件;
第五步:结合接口测试用例文档和Excel格式的数据文档,编写接口自动化测试的业务逻辑代码;
第六步:开始执行接口自动化测试用例;
第七步:执行如有bug,提交至缺陷管理平台;
第八步:开发修改完成后,回归bug,跟踪状态;
第九步:完成后进行自动化持续集成;

二、接口测试如何设计测试用例?

主要从四个方面来设计接口用例:功能,业务逻辑,异常,安全。

功能:是否符合需求

1)从用户角度出发看接口能否实现业务需求,功能是否正常;

2)功能是否按照接口文档实现;

举例:比如博客园添加随笔,需要登录才能添加。也就是业务要求不支持游客添加随笔功能,如果设计一个没有登录的用户,然后去测试添加随笔接口,结果接口能添加到随笔,说明功能不正常,不符合需求和接口文档描述。

业务逻辑:是否依赖业务

1)接口实现逻辑;

2)业务逻辑覆盖(语句/条件/分支/判定/…);

举例:该接口调用之前,需要调用登录接口,如果不登录也能请求数据,不符合业务逻辑。

异常:参数异常和数据异常

1)参数异常:关键字参数,参数为空,多,少参数,错误参数;

2)数据异常:关键字数据,数据为空,长度不一致,错误数据;

举例:不管数据异常还是参数异常,测试点差不多,一个参数有key和value,key表示参数,value表示数据。第一,看看参数和数据能不能支持关键字,例如Java中的保留关键字等等;第二就是参数和数据都为空,看看是否做了判断;第三,参数多和少,例如有两个参数的接口,需要设计一个包含三个参数的用例,一个只有一个参数的用例。数据长度不一致,例如设计很长的字符串是否支持,因为数据库创建表过程都设置好了每个字段的长度。输入错误的参数和数据,如故意输错单词等等。

安全测试用例设计:

1)cookie:有cookie才能获取数据,如果不带cookie还有信息返回,说明有问题;
2)header:正常接口带header信息,删除header看是否能够返回数据;
3)唯一识别码:app手机识别码,一般是唯一的;

4)文本输入框sql注入和xss攻击。

三、接口测试执行中需要比对数据库吗?

接口的返回关键字段和字段值是需要校验的,不然接口测试就没有意义了。
一般有两种方式:

1)数据库预置数据,接口校验返回;

2)接口调用,比对数据库查询结果。

、接口测试质量评估标准是什么?

一般来说,从以下八个方面评估:

  1. 业务功能覆盖是否完整;
  2. 业务规则覆盖是否完整;
  3. 参数验证是否达到要求(边界、业务规则);
  4. 接口异常场景覆盖是否完整;
  5. 接口覆盖率是否达到要求;
  6. 代码覆盖率是否达到要求;
  7. 性能指标是否满足要求;
  8. 安全指标是否满足要求;

五、接口产生的垃圾数据如何清理

造数据和数据清理,需用Python连数据库了,做增删改查的操作测试用例前置操作。

  • setUp做数据准备后置操作;
  • tearDown做数据清理;

六、其他接口要先获取接口信息,如何让登录的接口只在其他接口调用一次?

解决方法如下:

  • 使用单例模式;
  • 使用自定义缓存机制;
  • 使用测试框架中的 setup 机制;
  • pytest 中 fixture 机制;

                    

七、接口测试断言从哪些方面去设计?

接口测试断言可以从以下五个方面进行设计:

1)响应码:检查响应码是否符合预期,用来判断测试用例是否执行成功(针对http接口);

2)关键字:验证关键字是否符合预期,用来判断测试用例是否执行成功;

3)正则匹配:当一个接口返回的内容较多,并且有一定规律时,可通过正则表达式来校验接口返回的信息来判定测试用例是否执行成功;

4)数据库匹配核对:比如对查询一个接口返回的数据进行验证时,可通过编写sql语句查询结果,然后将sql语句执行后数据库返回的结果与接口返回的结果进行核对,以此来判定测试用例是否执行成功;

5)通过相关接口进行辅助验证:比如,当测试一个删除接口时,删除一条记录后,想验证这条记录真的被删除,可调用查询接口,若删除的记录没被查询到,则说明删除这条记录成功。

八、赖于第三方数据的接口如何进行测试?

可以利用一些Mock工具(如:JSON Server、Easy Mock)来模拟第三方的数据返回,最大限度的降低对第三方数据接口的依赖。Mock服务是指在测试过程中对于某些复杂(或者不太好构造)的对象,用一个虚拟的对象替代它。如现在有A和B两个接口, A需要调用接口B才能完成业务需求。这个时候B接口有如下三种情况:

1)B接口还没有开发完成:需要等待接口的数据来进行开发,这时候完善的接口Mock服务能大大缩短开发联调等待时间。

2)B的某些场景很难去模拟:比如超时、未知错误或者不稳定的第三方接口。

3)性能测试中隔离B接口(第三方接口):在进行压测的时候就会遇到问题。

九、API测试有哪些优势?

API是(Application Programming Interface),即应用程序编程接口。API是一组用于构建软件应用程序的规程,协议和工具。API充当软件应用程序之间的接口,并允许两个软件应用程序相互通信。API是一组软件功能,可以由其他软件执行。

API测试具备如下优势:

  • 更快及更高的测试覆盖率。
  • API测试有助于我们降低测试成本。通过API测试,我们可以在GUI测试之前找到小错误。在GUI测试期间,这些小错误将变得更大。因此,在API测试中发现这些错误将对公司具有成本效益。
  • API测试与语言无关。
  • API测试在测试核心功能方面非常有用。我们可以在没有用户界面的情况下测试API。在GUI测试中,我们需要等到应用程序可用于测试核心功能。
  • API测试有助于我们降低风险。

十、接口调不通,如何去排查?

接口调不通的原因:

1)接口没有任何响应

很多时候在做接口测试时,会发现接口没有任何返回,比如浏览器一直在转圈,或者返回一个空白页面。用接口测试工具时,工具报错,提示“no response”。

排查思路:

1.先检查接口ip是否正确,可以通过在本机ping 接口的ip,检查网络是否通畅;

  1. 检查接口的端口号是否正确,可以通过在本机telnet接口的ip和端口号,检查端口是否能连通;

3.检查项目是否启动或者部署成功,可以找研发确认,或者自己登录到服务器上,通过ps命令检查项目的进程是否存在,然后用tail命令查看部署日志;

4.检查服务器防火墙是否关闭,如果因为安全或者权限问题不能关闭,需要找运维进行策略配置,开放对应的ip和端口号;

5.检查你的客户端(浏览器/测试工具),是否设置了网络代理,网络代理可能会造成请求失败;

6.检查操作系统的host文件,是否绑定了一个错误的ip映射;

2)接口有响应但是返回了错误的状态码

有些时候接口会返回一些错误的HTTP状态码,需要根据不同的状态码来确定具体的原因。

排查思路:

400:客户端请求错误,比如请求参数格式错误(如json字符串不合法);

401:未授权,比如在请求header里,缺乏必要的信息头(如token、auth等字段);

403:禁止,常见的原因是用户的账号没有对应的url权限,还有就是项目所用的中间件,不允许远程访问(比如Apache);

404:资源未找到,导致这种情况的原因很多,比如:

  • url拼写错误;
  • url后有空格;
  • 项目没有启动成功;
  • 请求协议不对,如http/https;

405:方法不允许,常见的原因是请求方式不正确,比如GET类型接口,使用POST方式去请求;

415:不支持的媒体类型,常见原因是请求数据的类型和服务端支持的类型不匹配,比如json接口,需要添加一个信息头Content-type:application/json;

500:服务器内部错误,出现这种情况,说明服务端内部报错了,需要登录到服务器上,检查错误日志,根据具体的提示信息再进行排查;

502/503/504(Bad Gateway/错误的网关、Service Unavailable/服务无法获得、Gateway Timeout/网关超时)。

从以下两种情况分析:

  • 如果单次调用接口就报该错误,说明是后端服务器配置有问题,或者服务不可用,挂掉了;
  • 如果并发压测时出现此错误,说明是后端压力太大,出现异常,此问题一般是后端出现响应时间过长或者无响应造成。
总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

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

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

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

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

相关文章

SpringBoot集成kafka开发-消息消费的分区策略(消费者如何判断从哪个分区中消费消息的?)

这里写目录标题 1、kafak消息者消费消息的4种分区策略2、kafka默认的消费分区策略1-RangeAssignor(均匀分配、默认分配策略)2.1、代码验证RangeAssignor的消息分区策略2.1.1、消费者2.1.2、生产者2.1.3、kafak配置类2.1.4、对象实体类2.1.5、项目配置文件…

基于vue框架的病床管理信息系统odt4v(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 开题报告内容 基于Vue框架的病床管理信息系统开题报告 一、引言 随着医疗技术的不断进步和人口老龄化的加剧,医院面临着日益增长的医疗服务需求。病床作为医院资源的重要组成部分,其管理效率直接影响到患者的就医体验和医院的运营效…

TCP/UDP的对比,粘包分包抓包,http协议

服务器端: 一、loop 127.0.0.1本地回环测试地址 二、tcp特点 面向连接、可靠传输、字节流 粘包问题:tcp流式套接字,数据与数据之间没有套接字,导致可能多次的数据粘到一起 解决方法:(1)规…

使用USB转485转接器,从机不响应

在调试485通信时,bms不响应主机,usb转485转换器接收指示灯常亮,现象如下,通过更新驱动程序解决。 更新驱动程序链接: 1. 下载并解压驱动文件 https://www.szutek.com/Uploads/file/20210917/20210917091627_42822.rar…

生信圆桌:专业生信服务器与平台服务的提供者

生信圆桌是一个专注于提供生物信息学(生信)服务器和平台服务的领先企业,致力于为全球科研机构、企业和独立研究者提供高性能的生信分析解决方案。随着生物信息学研究对计算资源的需求日益增加,生信圆桌凭借其先进的服务器技术和专…

【QT学习】1-2 Liunx环境下QT5.12.9软件安装1——VMware17.0.0虚拟机安装

注意:如果电脑已经安装低版本的VMware,千万不要卸载,直接覆盖安装,更新到新的安装版本 1.点击.exe文件,右键以管理员身份运行,点击下一步,下一步 2.选择软件安装位置后,点击下一步。…

虚幻5|制作一个木桩,含血量及伤害数字

一,基础设置 1.创建Actor蓝图类 2.编辑胶囊体和网格体的碰撞预设 3.打开敌人的角色蓝图,编辑飙血特效 二,创建敌人血量的ui,命名为敌人血量,如下 1. 2,打开后,添加一个画布画板和进度条&#…

ArkUI-布局(一)

ArkUI-布局 布局概述布局元素的组成如何选择布局布局位置对子元素的约束 线性布局部分属性与使用方式 层叠布局部分属性与使用方式 弹性布局基本概念布局方向布局换行主轴对齐方式交叉轴对齐方式容器设置交叉轴对齐方式子元素设置交叉轴对齐方式内容对齐 自适应拉伸 布局概述 …

云端集中管控边缘服务:利用 EMQX ECP 在 K8s 上快速部署 NeuronEX

随着物联网、边缘计算技术的发展,实现边缘服务的快速部署对于分布式计算环境至关重要。它不仅可以显著降低延迟、节省带宽资源、增强数据的安全性和隐私保护,同时还能改善用户体验,支持动态变化的工作负载需求,提供更高的灵活性和…

JAVA毕业设计165—基于Java+Springboot+vue3的二手房交易管理系统(源代码+数据库+11000字论文)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvue3的二手房交易管理系统(源代码数据库11000字论文)165 一、系统介绍 本项目前后端分离(还有ssm版本),分为用户、卖家、管理员三种角色 1、用户&a…

TOMCAT-企业级WEB应用服务器

一 WEB技术 1.1 HTTP协议和B/S 结构 HTTP(HyperText Transfer Protocol)协议即超文本传输协议,是用于在万维网(WWW)上传输超文本内容的基础协议。 一、HTTP 协议的特点 1、简单快速 客户向服务器请求服务时&#…

leetcode234. 回文链表(java实现)

题目描述&#xff1a; 本道题的思路可以使用集合先存储链表的值&#xff0c;然后进行判断即可。 总体思路比较简单。 代码实现&#xff1a; class Solution {public boolean isPalindrome(ListNode head) {List<Integer> res new ArrayList();ListNode cur head;whil…

代谢组数据分析(十八):随机森林构建代谢组诊断模型

介绍 使用随机森林算法和LASSO特征选择构建了一种胃癌(GC)诊断预测模型。参与者(队列1,n=426)通过随机分层抽样分为发现数据集(n=284)和测试集(n=142)。接下来,在发现数据集上执行LASSO回归,以选择能够识别胃癌患者的较少数量的特征。我们将L1约束的系数设置为0.01…

OpenCV绘图函数(3)判断点一条直线是否在一个矩形范围内的函数clipLine()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 裁剪线段与图像矩形相交的部分。 cv::clipLine 函数计算出完全位于指定矩形内的线段部分。如果线段完全位于矩形之外&#xff0c;则返回 false。…

2024年小红书图文制作超火爆风格,1单19.9!趣味性插画AI表情包项目思路

今天我想跟大家分享一个每天只需花20分钟就能轻松赚钱的AI表情包项目。 这个项目在小红书上非常受欢迎&#xff0c;因为它符合小红书的用户习惯&#xff0c;而且操作简单。下面我来详细讲讲如何利用软件快速创作有趣的插画&#xff01; 项目简介 这个项目的原理很简单&#x…

计算机网络-2-tcpip协议

1.说说 TCP/IP 四层模型&#xff1f; TCP/IP&#xff08;Transmission Control Protocol/Internet Protocol&#xff09;模型是一种用于描述互联网通信的协议层次结构。它分为四个主要层次&#xff0c;每个层次都定义了不同的协议来实现特定的功能。下面是TCP/IP模型各层的常用…

AES对称加密算法

1. 简介 AES是一种对称加密算法, 它有3种类型: AES-128: 密钥为128位(16字节)的AES, 加密10轮AES-192: 密钥为192位(24字节)的AES, 加密12轮AES-256: 密钥为256位(32字节)的AES, 加密14轮 密钥长度越长, 加密的强度越大, 当然与此同时开销也越大。每种类型下都有几种操作模式…

给自己复盘的tjxt笔记day9

优惠券管理 开发流程 需求分析&#xff0c;接口统计&#xff0c;数据库设计&#xff0c;创建分支&#xff0c;创建新模块&#xff08;依赖&#xff0c;配置&#xff0c;启动类&#xff09;&#xff0c;生成代码&#xff0c;引入枚举状态 优惠券管理 增删改查的业务代码&#…

NC 数组中的最长连续子序列

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 给定无序数组…

前端算法 === 力扣 111 二叉树的最小深度

目录 问题描述 DFS&#xff08;深度优先搜索&#xff09;方案 BFS&#xff08;广度优先搜索&#xff09;方案 总结 力扣&#xff08;LeetCode&#xff09;上的题目111是关于二叉树的最小深度问题。这个问题可以通过深度优先搜索&#xff08;DFS&#xff09;和广度优先搜索&…