当前位置: 首页 > news >正文

面了一个月,终于让我总结出了这份最详细的接口测试面试题

目录

1、你们公司是如何做接口测试的?

2、什么时候开展接⼝测试?

3、接⼝测试和UI测试的工作是否重复?

 4、接口测试框架怎么搭建?

 5、接⼝之间有依赖时怎么处理?

 6、如何判断接⼝测试的结果(成功或失败)?

7、发送HTTP请求时,传递参数的途径有哪些?

8、持续集成如何做的?⾃动化测试多久构建⼀次?

 9、使用工具和代码实现接口测试的区别?

10、 cookies和session的区别

总结


1、你们公司是如何做接口测试的?

分析:

回答测试流

按测试流程,结合实际⼯作描述接⼝测试内容展现接⼝测试成果

回答测试流

按测试流程,结合实际⼯作描述接⼝测试内容展现接⼝测试成果

在我上家公司,⾸先针对⽤户提出的需求,展开 需求分析,由产品经理主导,出具需求⽂档。 开发⼯程师

据需求⽂档,开始编写代码,功能测试⼯程师根据需求⽂档,设计功能测试点,撰写测试⽤例。接⼝测试⼈员,需要等待后端输出接⼝⽂档后才能展开⼯作,在等待期间,可以熟悉⼀下需求,准备接⼝测试数据。

后端开发提供接⼝⽂档后,接⼝测试⼯程师根据接⼝⽂档,设计接⼝测试⽤例 。根据测试⽤例,展开 接⼝测试⼯作 ,发现BUG,使⽤禅道完成提交、跟踪与管理缺陷的⼯作。

等所有测试⽤例执⾏率达到100%,发现普通等级以上的BUG都已经修复了,那么我们就可以输出接⼝测试的报告,功能测试⼈员再根据我们输出的接⼝测试报告,进⾏功能测试。

在实际的接⼝测试⼯作当中,⽐较困难的部分是登录接⼝的验证码处理,我们系统中,有⼀个⼈脸识别技术,通过接⼝很难进⾏测试,这个时候,我们是通过mock的⽅式绕过了⼈脸识别的登录接⼝,进⽽完成的测试。⼈脸识别的验证,放在了功能阶段进⾏。

我们公司,使⽤的接⼝测试⼯具主要是Postman,使⽤到断⾔、数据关联、参数化等技术,来实现接⼝测试,最后使⽤newman来⽣成测试报告。也了解过 jmeter⼯具 和 python + requests框架来进⾏接⼝测试。postman

⼯具有转换代码的功能,也可以把postman的界⾯操作转换为对应python代码,进⾏接⼝测试

2、什么时候开展接⼝测试

在我们公司中,我们有独⽴接⼝测试部⻔,等后端开发提测接⼝之后,就开始进⾏接⼝测试⼯作。根据个⼈的了解,我们公司是在 后端开发提测 接⼝时,进⾏的接⼝测试。

但是有的公司,会在需求评审之后,开发负责⼈就会输出项⽬的标准接⼝⽂档,所以这些公司,会在需求评审之后,开发负责⼈输出标准接⼝⽂档之后,就开始了接⼝测试。

我们还会进⾏接⼝的持续集成,在整个接⼝测试通过之后,就可以进⾏接⼝的⾃动化测试和持续集成了,这个部分也是属于接⼝测试。

                

                     

 

3、接⼝测试和UI测试的工作是否重复

如果单纯只看UI测试,不看UI测试中的功能部分,那么UI测试和接⼝测试没有重复

因为UI测试只关注界⾯之间的交互,布局,按钮的点击等等。这些UI操作都可以脱离接⼝来进⾏。但是如果UI测试还包括功能测试,那么 UI测试  接⼝测试 在业务测试点上是⾼度重复的。

怎么解决重复⼯作问题?思路1

让接⼝测试⼯程师,重点关注服务器端业务交互

UI测试⼯程师,重点关注界⾯的显示、⻚⾯之间的跳转、布局等⻚⾯元素的变化。关注主业务流程是否与服务器端的操作流程吻合。

思路2

不划分功能测试和接⼝测试⼈员。所有测试⼯程师,都既做功能测试也做接⼝测试。这样可以避免资源浪费情况。

     4、接口测试框架怎么搭建?

相当于问:你们公司的接⼝测试的技术框架是什么?(代码)答:

我们公司使⽤的接⼝测试框架是 python + pytest (unittest) + requests + parameterized 实现的框架结构主要分为6部份。分别是:被测系统,API,测试⽤例,测试数据,测试报告和数据库。

他们的关系是,API⽤于封装被测系统的接⼝,测试⽤例使⽤封装的接⼝编写接⼝测试脚本,测试数据会和测试脚本分离开发,主要采⽤json结构来存储测试数据,使⽤unittest⽣成测试报告,

使⽤pymysql,进⾏数据库相关的操作

     5、接⼝之间有依赖时怎么处理

分析:建议,回答⾯试题是,尽量套⽤实际项⽬作答。如果,你不举例,⾯试官就会结合他们公司⾃⼰的项⽬任

⼀个有关联的接⼝让你分析。答:

在我参与的上个项⽬中,就有依赖关系的处理,是员⼯模块的增、删、改、查等接⼝依赖 登录成功接⼝当时,使⽤postman的关联技术来进⾏处理的。

⾸先是提取登录接⼝的令牌,然后把令牌保存到环境变量,最后在员⼯的增删改查4个接⼝中按照接⼝⽂档的要求,通过请求头的 Authorization 参数完成令牌的关联

      6、如何判断接⼝测试的结果(成功或失败)?

分析:可以结合实际项⽬回答答:

以注册接⼝为例,怎么判断注册接⼝的测试结果是正确的呢?3⼤校验要点:

  1. 判断响应数据与预期是否⼀

注册完成返回的响应数据,与预期数据是否⼀

      2. 断⾔数据与数据库中的数据是否⼀致

查询接⼝,数据库中的数据作为预期数据;响应数据是实际数据

写⼊接⼝(增、删、改),数据库中的是实际数据,写⼊的数据是预期数

判断注册账号成功之后,数据库中写⼊⽤户信息,是否与预期数据⼀致,是否符合业务逻辑

      3.判断业务逻辑正确性。注册成功之后,需要登录查看注册的账号是否能够登录强调:接             测试  功能测试  相通。

如果这个⾯试题换成 如何判断测试的结果 ,回答的⽅式是⼀模⼀样的

     7、发送HTTP请求时,传递参数的途径有哪些

URL、请求头、请求

      8、持续集成如何做的?⾃动化测试多久构建⼀次

在之前的项⽬当中,我负责了⼈⼒资源管理系统登录模块和员⼯管理模块的持续集成⼯作

我们的项⽬主要是使⽤持续集成⼯具,jenkins + 项⽬管理⼯具git + HTML Publisher + 邮件来进⾏持续集

主要是利⽤源码管理,配置拉取git仓库中的接⼝⾃动化测试代码,然后使⽤构建命令运⾏项⽬⼊⼝⽂件,从⽽实

⾃动化测试。在这其中使⽤了构建触发器的定时构建和轮巡构建

利⽤定时构建,每天05:00执⾏1次⾃动化测试。通过轮巡构建,检查⾃动化接⼝测试的代码有没有更新,有更新就触发构建。触发之后,会使⽤HTML Publiser⽣成测试报告,并发送邮件,给测试部⻔所有员⼯,和开发负责⼈。

进⾏持续集成之后,我们可以把晚上的时间也利⽤起来,进⾏⾃动化的接⼝测试⼯作,提升了测试效率。构建频率不是固定的,⼀般每天⾄少1次。如果代码变动频繁,可以会有更多次。

                   

 

     9、使用工具和代码实现接口测试的区别?

⼯具

更容易上⼿、使⽤简单。能应对实际⼯作中⼤部分需求

但,受⼯具本身功能限制,不适合应对对技术要求较⾼的场景。代码:

学习难度较⼤,使⽤有⼀定难度,需反复练习才能掌握。但,灵活度⾮常⾼。适合任何场景。

在实际⼯作当中,⽇常使⽤以⼯具为主。代码是⾼薪的基础,是软件测试⾏业未来发展的⽅向

     10、 cookies和session的区别

位置不同

  1. cookie数据存放在客户的浏览器上
  2. session数据放在服务器上

安全性

cookie不是很安全,别⼈可以分析存放在本地的COOKIE并进⾏COOKIE欺骗

session安全性更⾼。

         占⽤空间:

session会在⼀定时间内保存在服务器上。当访问增多,会⽐较占⽤服务器的性

考虑到减轻服务器性能⽅⾯,应当使⽤COOKIE

⼤⼩不

  1. 单个cookie保存的数据不能超过4K,很多浏览器都限制⼀个站点最多保存20cookie
  2. session是不限量

总结

重点:配套学习资料和视频教学

因为篇幅限制我总结了几个经典的接口测试面试题目给大家。需要完整版的可以找我。那么在这里我也精心准备了软件测试、自动化测试的详细资料包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。如下,需要的点击下方名片加我VX免费领取。

 

                                                     

 

相关文章:

面了一个月,终于让我总结出了这份最详细的接口测试面试题

目录 1、你们公司是如何做接口测试的? 2、什么时候开展接⼝测试? 3、接⼝测试和UI测试的工作是否重复? 4、接口测试框架怎么搭建? 5、接⼝之间有依赖时怎么处理? 6、如何判断接⼝测试的结果(成功或失败&a…...

{新}【java开发环境安装】完整工作环境安装配置

公司新发了一台红米笔记本,打算用新的笔记本,开启自己新的工作旅程,其中把做个的事都记录一边,以便实现,听、读、视频图像、讨论、实践、教人的一个学习过程。 一、Java开发环境安装 找到安装包下载;在官…...

Python|每日一练|数组|数学|图算法|字符串|动态规划|单选记录:加一|迷宫问题|扰乱字符串

1、加一(数组,数学) 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以…...

MySQL 使用IF判断

mysql判断语句 1、IF 和IFNULL IF(表达式1,表达式2,表达式3); 含义:如果表达式1为true,则返回表达式2的值,否则返回表达式3的值,表达式的值类型可以为数字或字符串 例:判断对错 SELECT IF(TRUE…...

C++类与对象(上)【详析】

目录1.面向过程和面向对象初步认识2.类的引入3.类的定义4.类的访问限定符及封装4.1访问限定符4.2封装5.类的作用域6.类的实例化7.类对象模型7.1 如何计算类对象的大小8.this关键字如果说我们对C的初步认识,是觉得C是对C语言不足之处的进行修补,在认识完类…...

AIR系列|板载LED|gpio引脚选择|GPIO|流水灯|LuatOS-SOC接口|官方demo|学习(20-1):GPIO库基础

AIR系列各型号开发板板载LED对应管脚及GPIO控制代码 AIR103: rtos_bsp "AIR103" then -- Air103开发板LED引脚编号--return pin.PB26, pin.PB25, pin.PB24return 42,41,40 AIR105: rtos_bsp "AIR105" then -- Air105开发板LED引…...

MySQL数据库中的函数怎样使用?

函数 是指一段可以直接被另一段程序调用的程序或代码。 也就意味着,这一段程序或代码在MySQL中已经给我们提供了,我们要做的就是在合适的业务场景调用对应的函数完成对应的业务需求即可。 那么,函数到底在哪儿使用呢?我们先来看两个场景&…...

命名空间的使用大全

概述 在C中,我们会使用变量、常量、函数、类、对象、结构体等各种元素。随着工程越来越庞大,代表这些元素的标识符冲突的概率也越来越大。为了解决标识符命名冲突的问题,C标准在1995年引入了关键字namespace,也叫做命名空间。使用…...

Redisson分布式锁和同步器详解-官方原版

一、锁定基于Redis的Java分布式可重入锁对象,并实现了锁接口。如果获取锁的Redisson实例崩溃,则此类锁可能会在获取状态下永久挂起。为了避免这种Redisson维护锁看门狗,当锁持有者Redisson实例处于活动状态时,它会延长锁的到期时间…...

【C语言进阶】指针与数组、转移表详解

前言 大家好我是程序猿爱打拳,我们在学习完指针的基本概念后知道了指针就是地址,我们可以通过这个地址并对它进行解引用从而改变一些数据。但只学习指针的基础是完全不够的,因此学习完指针的基础后我们可以学习关于指针的进阶,其中…...

SDN是什么,和SD-WAN有什么关系

SDN全称为“软件定义网络”(Software-Defined Networking),是一种新型的网络架构,通过将网络的控制面和数据面分离,将网络控制集中到控制器中进行统一管理和配置,以提高网络的灵活性和可管理性。传统网络的…...

百度前端高频react面试题(持续更新中)

说说你用react有什么坑点&#xff1f; 1. JSX做表达式判断时候&#xff0c;需要强转为boolean类型 如果不使用 !!b 进行强转数据类型&#xff0c;会在页面里面输出 0。 render() {const b 0;return <div>{!!b && <div>这是一段文本</div>}</div…...

中级嵌入式系统设计师2016下半年下午应用设计试题

中级嵌入式系统设计师2016下半年下午试题 试题一 阅读以下说明,回答问题1至问题3。 【说明】 某综合化智能空气净化器设计以微处理器为核心,包含各种传感器和控制器,具有检测环境空气参数(包含温湿度、可燃气体、细颗粒物等),空气净化、加湿、除湿、加热和杀菌等功能…...

【雅思备考】九分学长写作课笔记

原视频&#xff1a;https://www.bilibili.com/video/BV1FG4y1J7br?p13&vd_source552ac2291179cf9d44088ea168db5531 一、综述 共计1小时 小作文&#xff1a; 描述 图表图&#xff08;数据图&#xff09;、流程图&#xff08;示意图&#xff09;、地图&#xff08;示意…...

【源码解析】SpringBoot自动装配的实现原理

什么是SpringBoot的自动装配 SpringBoot在启动的时候会扫描外部jar包中的META-INF/spring.factories文件&#xff0c;将文件中配置的类信息按照条件装配到Spring容器中。 实现原理 核心注解SpringBootApplication Target({ElementType.TYPE}) Retention(RetentionPolicy.R…...

详解ROS时间戳

ROS&#xff08;Robot Operating System&#xff09;是一个用于机器人开发的开源软件框架&#xff0c;其中涉及到了一些与时间相关的概念和工具&#xff0c;如时间戳、计时器等。本文将主要介绍ROS中时间戳的概念和应用&#xff0c;并提供一个Python代码案例演示如何处理ROS时间…...

Android Window、WindowManager

1.窗口Window 在Android中显示一个界面,首先想到的是Activity、Dialog或Toast。但是在有些情况下,比如悬浮球,用Activity会显然多余,这个时候可以直接使用窗口来实现。 Android中所有的视图都是通过Window来呈现的,不管是Activity、Dialog还是Toast,它们的视图实际上都…...

【一天一门编程语言】怎样设计一门编程语言?

怎样设计一门编程语言&#xff1f; 确定目标 确定语言的用途&#xff1a; 是一门通用编程语言&#xff0c;还是一门专门面向某个特定目标的语言&#xff1f;是一门面向对象的语言&#xff0c;还是一门过程化的语言&#xff1f;将语言的最终用户定义为谁&#xff1f; 确定语言…...

微服务保护 -- 初识 Sentinel(雪崩问题,快速入门Sentinel)

大家好&#xff0c;今天我们要来学习阿里巴巴开源的流量控制和熔断降级框架 – Sentinel 。 1、雪崩问题及解决方案 首选我们来了解一下雪崩问题及其解决方案&#xff0c;我们学习这个微服务保护&#xff0c;其实就是为了去应对类似于雪崩问题这样的服务故障。 1.1 什么是雪…...

软件测试面试问答

笔试 笔试的话我们需要揣测具体会考什么内容&#xff0c;我们可以通过招聘信息去了解该公司需要什么样的技能&#xff0c;以此来准备笔试。一般必考的内容会有编程&#xff0c;测试用例设计&#xff0c;工作流程&#xff0c;逻辑思维等内容&#xff0c;除此之外每个公司可能还会…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...