接口测试常见面试题(含答案)

这篇具有很好参考价值的文章主要介绍了接口测试常见面试题(含答案)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.http协议和https的区别?

    2. 常见的post提交数据的方式有哪些?

 3. 常见的请求头以及它们的作用是什么?

 4. get请求和post的区别?

5. 接口请求中常用的返回状态码

 6. cookie,session,token有什么相同点,不同点?

   7. 你们公司是如何做接口测试的?(包括︰接口测试流程,方案以及用例设计) 

  8. 如果没有接口文档怎么做接口测试?  

  9. 接口测试中,依赖登录状态的接口如何测试? 

  10. 你平常做接口测试的过程中发现过哪些bug?

  11. 你在接口测试中是怎么校验结果是否正确?

  12. 如何分析一个bug是前端还是后端的?

  13. 依赖于第三方数据的接口如何进行测试?

14. 对于加密接口,签名接口如何进行测试?    

15、请详细阐述接口测试和UI测试在测试活动中是如何协同测试的?

16、接口测试中上下游接口有数据依赖如何处理?

17、webService接口测试是什么?

18、如何获取接口的参数?

19、为什么要做接口测试?

20、HTTP接口传递数据最常用的方式?

21、什么是接口测试?

22、我们测试的接口属于哪一类?

23、接口测试用例编写的要点都包含哪些?

24、接口测试的基本步骤?

25、HTTP协议的特点是什么?

26、HTTP客户端请求消息包含哪几部分?

27、HTTP服务器响应消息包含哪些信息?

28、一个接口用例中有多个API接口,前后两个 API 之间如何进行参数传递的?

29、你在实施接口自动化测试的过程中,如果某些接口第一次调用长时间没有返回,如何保证流程顺利进行又可以记录错误信息?

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

31、jmeter参数化的方式有哪些?

32、你平常做接口测试的过程中发现过哪些bug?


1.http协议和https的区别?


        http协议:超文本传输协议,信息是明文传输;

        https协议:是由SSL+ http协议构建的加密传输协议。。

        两者使用的端口不一样,http:80,https:443

    2. 常见的post提交数据的方式有哪些?

          四种:取决于Content-Type请求头

Content-Type:application/x-www-form-urlencoded
        特点:数据类型是字典,相当于通过表单方式去提交数据,数据的格式:a=1&b=2

Content-Type:multipart/form-data
        特点:报文包含有文件上传。

Content-Type:application/json
        特点:报文都是字符串类型

Content-Type:binary
        特点:报文类型是以二进制的方式上传文件。

 3. 常见的请求头以及它们的作用是什么?

        Accept:客户端接收的数据格式。

        X-Requested-With:异步请求。Ajax异步请求。无刷新。

        User-Agent:发送请求的客户端的类型。

        Content-Type:请求的内容的报文格式。

        Cookie:Cookie信息。

 4. get请求和post的区别?

        都可以向服务器提交数据,并且会从服务器获取数据。

        区别:

         ① 传参方式不同:get通过地址栏的方式传参,post通过表单报文方式传参。

        ② 传参长度不同:get的参数有长度限制,post没有。

        ③ 一般情况下,get是获取数据,比如查询,post提交数据,比如:增删改。

        ④ Get只发送一个tcp数据报文(包含请求头和data),post发送两个报文(1.请求头,返回·100,2.data,返回200)

5. 接口请求中常用的返回状态码

        1XX:信息提示。

        2XX:成功。

        3XX:重定向。(发送一个请求时,这个请求多次请求了服务器的多个资源)

        4XX:客户端错误。

        5XX:服务器错误。

 6. cookie,session,token有什么相同点,不同点?

        相同点:都是用于鉴权并且都是服务器生成的。

        不同点:

                ① cookie保存在客户端的浏览器上,cookie不安全,可以去分析存在在本地的cookie进行cookie欺骗。

                ②  session保存在服务器的内存,默认保存30分钟,比cookie安全,缺点就是当登录的用户越多,比较占用服务器的资源。session一般会生成一个sesionid(名称自定义),sessionid可以通过cookie传输。

               ③  token存储在服务器的数据库里面,通过一个接口或通过登录获取,然后后续所有的接口都必须要传token才可以请求成功。token也可以通过cookie传输。 

   7. 你们公司是如何做接口测试的?(包括︰接口测试流程,方案以及用例设计) 

        ① 获取接口文档,熟悉单接口以及链路接口(接口业务流程)的业务,包括接口地址,鉴权方式,入参,出参,错误码等。

        ② 编写接口测试用例并评审

        正例(1-2个)︰单接口返回成功场景,链路接口业务流程实现。(功能业务流程);

        反例:

              鉴权异常∶空,错误,过期......

              参数异常:空,类型异常,长度异常

              错误码异常:

       其它异常∶接口黑名单,接口调用次数限制。分页(少于0,0,中间页,最大页,超过最大页);

        ③ 使用接口测试工具或代码的方式执行接口测试;

                重要考虑以下情况:

                        接口关联,接口参数加密,是否动态参数,接口参数是否签名,是否需要带请求头。

        ④ 实现持续集成并输出接口测试报告,有Bug提bug。

  8. 如果没有接口文档怎么做接口测试?  

        方式①:可以使用Fiddler 抓包工具抓取接口数据之后整理成接口文档,如果有不清楚的字段,找时间集中找开发验证,然后在进行接口测试。

        方式②∶可以通过Jmeter的代理录制功能,先把接口请求录制下来形成接口文档,然后再逐一的进行接口测试。

  9. 接口测试中,依赖登录状态的接口如何测试? 

        依赖登录的接口本质上是每次发送请求的时候需要带上cookie和session才能够发送成功。在请求时需要添加上cookle和sessionid。

         ① 如果是通过Postman来测试,Postman会自动去管理

         ② 如果是通过Jmeter来测试,需要增加Cookie管理器组件。

         ③ 如果是通过代码来实现接口测试,那么需要生成sesion对象,然后通过sesion对象来发送请求。|

  10. 你平常做接口测试的过程中发现过哪些bug?

        ① 常规Bug ∶接口没实现,没有按接口文档返回结果,输入异常值(空值,特殊字符),接口报错,没有返回合理的错误提示。

                如:购买商品接口,其中有价格参数,我去测试时把商品的价格改成-3,购买成功。

        ② 权限Bug :

                如∶测试修改商品信息接口,接口文档要求只有商家和超级管理员才有权限修改,我传入一个普通用户的ID或者是传入其他商家的ID,修改成功。

        注意:接口测试就是为了避免绕过前端验证,直接访问后端接口的BUG。

  11. 你在接口测试中是怎么校验结果是否正确?

        ① 状态码检验,验证返回的状态码为200.

        ② 业务校验:

                a. 错误码为0

                b. 当接口响应报文比较短,比较固定的情况下,校验完全一致。

                c. 当接口响应报文比较长,比较多的情况下,校验最核心的业务信息。

               d. 当接口响应报文为非常复杂的多层级XML格式或JSON格式,通过Xpath,JSONpath,正则表达式的匹配方式获取到最关键字的业务节点,然后再校验。

                e. 查询数据库校验或者是通过其他接口校验。

  12. 如何分析一个bug是前端还是后端的?

        通过抓包工具抓包,然后查看请求报文,如果请求报文对比接口文档有问题,那么就是前端的问题,如果请求报文没有问题,那就看返回报文,返回的数据不对,那就是后端开发的问题。

  13. 依赖于第三方数据的接口如何进行测试?

        接口关联〔依赖)是项目中的接口依赖于本项目的接口。

        可以通过Postman搭建Mock服务,但是Postman的Mock服务有访问次数限制,一天只能访问1000次。也可以通过Servlet ,Flask等技术来实现接口Mock服务。

14. 对于加密接口,签名接口如何进行测试?    

        加密接口:在调用接口的时候,首先要弄清楚接口的加密方式什么什么?

              如∶

                ① 对称式的加密方式(私钥加密)∶不常用的有DESAES,常用是Base64加密方式。

                ② 非对称的加密方式(双钥加密): RSA加密方式。

                ③ 只加密不解密(MD5加密)

                ④ 自定义加密规则。混合加密方式。

了解加密规则(签名规则)之后,在请求接口之前先要对参数做对应的加密(签合)之后在发送请求。单一加密方式,postman和Jmeter有些是支持的,postman使用javascript脚本实现,Jmeter使用beansheI中的java代码实现。

15、请详细阐述接口测试和UI测试在测试活动中是如何协同测试的?

UI与接口测试的协同可以从下面的方向考虑:

  • UI的操作实际上就是用另一种方式调用接口,那么接口有多少种参数组合就要求UI用例要构造多少种操作进行调用
  • UI操作所需要的数据可以用接口来生成
  • 接口测试可以保证数据和逻辑的准确性,UI测试需要考虑交互和界面展示的逻辑正确性
  • UI测试需要重视接口调用不成功或者接口异常情况下UI的呈现方式和用户体验
  • UI中可能会有一些状态的缓存信息(这样就不需要每次频繁调用接口去获取了),比如鉴权信息等,需要重点关注这些缓存的更新策略

16、接口测试中上下游接口有数据依赖如何处理?

假如一个事务需要顺序调用2个接口:A和B接口, B依赖A接口的响应数据,这时候在执行B接口之前必须完成A接口,并通过某些手段获得A接口的特定数据给B接口使用。

上下游接口的数据依赖无非就是准备测试数据,数据一般有三种方式获得:

  • 独立统一的测试数据库, A、B需要的数据都可以从库里拿到
  • 假如B依赖A创造的数据,那么每次执行B之前必须执行A去做数据创建
  • 通过正则表达式动态获得A的返回数据,并保存到变量中,通过参数化的方式传递给B接口

17、webService接口测试是什么?

webService接口有一套完整的协议标准,主要为soap协议,用来进行消息的传递,返回结果需要包装在一个soap协议指定的语法格式中。即使你只需要简单的返回字符1,也需要包装在协议种返回,协议描述了成功失败否,结果值等,可以通过soapUI测试工具去进行接口的模拟及测试。

web service接口的特点:

  • 接口中实现的方法和要求参数一目了然。
  • 不用担心大小写问题。
  • 不用担心中文 urlencode 问题。
  • 代码中不用多次声明认证(账号,密码)参数。
  • 传递参数可以为数组,对象等。

18、如何获取接口的参数?

设计接口测试用例时,涉及的是电商系统,其中包括很多修改,如商品、商家、店铺等等,针对这些数据的修改,会涉及到很多参数。如商品的名称,商品的尺码,商品的颜色等等。

那在设计实现“修改”接⼝口时,如何确定要传哪些参数?是只需要传我要修改的参数,还是全部参数都要传?

方式一、关键还是看后台逻辑实现

举例:User有两个属性username,password
后台逻辑实现:update User set username=? where id=xxx;
那么,如果你只想更新username的时候,可以不传password,其值是保持不变的。
后台逻辑实现:udpate User set username=?,password=? where id=xxx;
这种情况下,即使你只想更新username,也需要传password的值给后台,不然password就会被更新为空。
此外,还有一些数据如id等,如果sql中没有写,那即使传递了本字段的参数,数据库也不会更新。因此,在写关于“修改”的接口时,需要考虑一下,后台的逻辑是怎么实现的,然后确认要传递哪些参数。

方式二、抓包工具直接抓取接口情况分析

如果系统已经实现了,并且已经确定了接口逻辑,那么我们通过Fiddler等抓包工具,抓取到对应业务的请求报文,分析其中传递参数信息即可。

19、为什么要做接口测试?

接口是获取和操作资源的方式,而大部分系统和产品中,资源一般都是产品的核心,比如微信核心资源就是通讯录关系链和聊天记录等,因此资源是必测的。

另外接口中大部分的内容是数据,通过数据的对比我们能推测到系统和产品的逻辑,测接口就是测逻辑。

最后接口中的返回相对单纯,不像web页面,html代码中有太多ui的东西,ui最不稳定,变化太快,接口相对稳定一点点,但是里面的干扰信息更少,断言相对容易很多。

20、HTTP接口传递数据最常用的方式?

Get方式是从服务器上获取数据;在做数据查询时,建议用Get方式;如:商品信息接口、搜索接口、博客访客接口等。

Post方式是向服务器传送数据 ;在做数据添加、修改或删除时,建议用Post方式 ;如:微博图片上传图片接口、登录注册接口等。

21、什么是接口测试?

接口测试是测试系统组件间接口的一种测试。

接口测试的重点是检查数据的交换,传递的正确性,以及接口间逻辑依赖关系。

提交接口测试的重要意义:实现开发期并行测试,减少页面层测试的深度,缩短整个项目的测试周期。

22、我们测试的接口属于哪一类?

大多数的接口指的是HTTP接口,通常是指 B/S架构,由客户端(浏览器)调用,或模拟客户端(浏览器)调用服务器提供的API接口,由接口完成处理并返回一个应答的过程。

常见接口类型还有:Webservice接口,http接口,jms接口,hessian接口、REST接口。

23、接口测试用例编写的要点都包含哪些?

  • 测试每个参数类型不合法的情况(等价类)
  • 测试每个参数取值范围不合法的情况(等价类)
  • 测试参数为空的情况(等价类)
  • 测试参数前后台定义的一致性
  • 测试每个参数的上下限(边界值)
  • 如果两个请求有严格的先后顺序,需要测试调转顺序的情况(参数组合和顺序)
  • 接口参数有可选和必选情况的参数组合测试(参数组合和顺序)

24、接口测试的基本步骤?

1)获取请求报文数据

通过fiddler工具或者API接口文档获得请求报文参数,其中就包括请求方式(get、post、put等)、URL地址、请求的query string parameter以及请求的body数据。

2)借助工具模拟请求报文并发送

把第一步中获得的参数,整理到jmeter、postman、soapui等接口参数工具中,模拟接口请求并发送该请求。

3)获得响应结果

使用接口测试工具发送请求后,会返回响应报文,分析响应报文中的数据是否是符合要求的。

4)断言:判断实际结果是否与预期相同

在工具中也可以添加预设的断言,在运行接口测试后,会自动返回接口是否实现正确。我们可以使用响应报文的响应状态码、响应的headers头部或者响应的正文数据(html、json格式等)进行断言。

25、HTTP协议的特点是什么?

1)HTTP是无连接

无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

2)HTTP是媒体独立的

这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。

3)HTTP是无状态

HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

26、HTTP客户端请求消息包含哪几部分?

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:

  • 请求行(request line)
  • 请求头部(header)
  • 空行
  • 请求数据

27、HTTP服务器响应消息包含哪些信息?

HTTP响应由四个部分组成,分别是:

  • 状态行
  • 消息报头
  • 空行
  • 响应正文

28、一个接口用例中有多个API接口,前后两个 API 之间如何进行参数传递的?

也就是上下游接口的依赖,A接口的响应结果a,是B接口的请求入参。

一种方法是:动态获取a的值。

另一种方法:比如在接口测试工具Postman、Jmeter中设置参数变量。也就是说A接口运行完毕后,将结果提取出来放在全局变量中。这样一来,其余接口就可以获取到这个值了。如果这个变量不想放在全局中共享,也可以只提供给当前测试套件使用。

29、你在实施接口自动化测试的过程中,如果某些接口第一次调用长时间没有返回,如何保证流程顺利进行又可以记录错误信息?

如果一个接口长时间没有返回,会影响整体测试的执行时间以及执行结果。

所以我们要为每个接口设置一个超时时间,比如3秒。一个接口超过3秒还没有返回,就可以定位为异常。

当然也不是一个接口一次调用超时了,就一定是异常了,要设置失败重试(一般为3次),如果执行了3次还是超时,就可以认为是一个异常。在Python中很多单元测试框架都可以添加用例失败重跑机质。另外也可以使用while循环实现用例的重复执行。

当一个接口用例,最终重试了三次依然失败或超时,我们就需要将该问题记录到系统日志中并最终显示在测试报告中。但是该用例执行完毕后,还要保证剩下的用例继续执行。如果在不使用单元测试框架的情况下,我们就需要捕获接口调用超时或错误的异常,以保证测试任务不会中断。

总结一下,要保证每个接口用例执行不会时间过长,不会单次失败就误报,又能成功记录错误信息,保证测试任务不中断。我们需要做到三点:设置超时、添加失败重跑机质、记录错误日志,有必要时要捕获异常对象。

在自动化实施过程中,除了要保证正常流程之外,还要对异常场景做合理的处置。

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

接口测试一般考虑入参形式的变化和接口的业务逻辑,一般设计接口测试用例采用等价类、边界值、场景法居多。

接口测试设计测试用例的思路如下:

1.正常用例,验证接口逻辑是否正确。根据业务逻辑、输入参数、输出值的描述,对正常输入情况下所得的输出值

2.异常用例,为了保证数据的安全及程序在异常情况下的逻辑的正确性而进行的测试。

模块接口测试的主要包括以下几个方面:

1)鉴权码token异常(鉴权码为空<没有鉴权码>,错误的鉴权码,过期的鉴权码)。

2)请求参数正常/异常。

3)返回结果校验,数据库比对

31、jmeter参数化的方式有哪些?

1)配置元件---用户定义的变量元件可以设置全局变量。

2)函数助手对话框中可以选择比如随机字符串、随机日期、随机数字作为参数化。

3)可以使用 csv 文件作为参数化,通过配置元件中的 csv data set config 元件进行设置即可。

32、你平常做接口测试的过程中发现过哪些bug?

可以发现很多在页面上操作发现不了的bug。可以修改请求参数,突破前端页面输入限制。

举例说明:

1、比如一个订单支付时,我们页面上是无法改变订单金额的,但我们可以通过抓包工具捕获订单支付请求,然后修改订单金额后提交,然后出现了一个原价100元的订单我们用1分钱完成了支付。

2、比如一个转账的页面,前端做了限制导致我们无法在转账金额的输入框输入负数,但我们可以通过抓包工具修改,然后出现了一个转账金额为负数的bug。文章来源地址https://www.toymoban.com/news/detail-641675.html

到了这里,关于接口测试常见面试题(含答案)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 软件测试期末试题及答案(史上最全)

    软件缺陷是由很多方面造成的,以下哪个方面是造成软件缺陷的最多 的地方( A ) A. 规格说明书 B. 系统设计结果 C. 编写代码 D. 其他 覆盖准则最强的是( D ) A. 语句覆盖 B. 判定覆盖 C. 条件覆盖 D. 路径覆盖 实际的逻辑覆盖测试中,一般以(C )为主设计测试用例。 A. 条件

    2024年02月02日
    浏览(46)
  • 软件测试最全面试题及答案整理(2023最新版)

    目录 1、你的测试职业发展是什么? 2、你认为测试人员需要具备哪些素质 3、你为什么能够做测试这一行 4、测试的目的是什么? 5、测试分为哪几个阶段? 6、单元测试的测试对象、目的、测试依据、测试方法? 7、怎样看待加班问题 8、结合你以前的学习和工作经验,你认为如何

    2024年02月05日
    浏览(56)
  • 最全的软件测试面试题(含答案)

    软件的生命周期(prdctrm) 计划阶段(planning)-〉需求分析(requirement)-〉设计阶段(design)-〉编码(coding)-测试(testing)-运行与维护(running maintrnacne) 测试用例 用例编号 测试项目 测试标题 重要级别 预置条件  输入数据 执行步骤  预期结果 1、问:你在测试中发现了一个bug,但是开发经理

    2024年02月07日
    浏览(38)
  • 2022大厂高频软件测试面试真题(附答案)

    接口测试实际跟一般测试不同就是测试用例的设计部分。 获取接口规范。 设计接口测试功能用例(主要从用户角度出发看接口能否实现业务需求,用例设计就是黑盒用例那一套)。 各种入参验证(正常情况,异常情况包括输入参数个数不对,类型不对,可选/必选,还有考虑

    2023年04月08日
    浏览(52)
  • 30道软件测试基础面试题!(含答案)

    1、你的测试职业发展是什么? 测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前 3 年积累测试经验,按如何做好测试工程师的要点去要求自己,不断更新自己改正自己,做好测试任务。

    2024年02月02日
    浏览(58)
  • 京东软件测试岗位经典面试题(附答案)

    1)等价类划分: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试

    2024年02月07日
    浏览(38)
  • 软件测试自动化面试题(含答案)

    目录 1.如何把自动化测试在公司中实施并推广起来的? 2.自动化测试用例如何编写? 3.自动化测试发现BUG多吗? 4.在上一家公司做自动化测试用的什么框架? 5.什么是持续集成?它有什么用? UI自动化 1.自动化中有哪三类等待?他们有什么特点? 2.selenium*中的定位方式 3.xpath和

    2023年04月08日
    浏览(73)
  • 金融行业软件测试面试题及其答案

    下面是一些常见的金融行业软件测试面试题及其答案: 1. 什么是金融行业软件测试? 金融行业软件测试是针对金融领域的软件系统进行验证和确认的过程,旨在确保软件在安全、稳定、可靠和符合法规要求的条件下运行。   2. 解释一下金融软件中的风险管理测试。 风险管理

    2024年02月15日
    浏览(42)
  • 软件测试20个基础面试题及答案

    什么是软件测试? 答案:软件测试是指在预定的环境中运行程序,为了发现软件存在的错误、缺陷以及其他不符合要求的行为的过程。 软件测试的目的是什么? 答案:软件测试的主要目的是保证软件的质量,并尽可能大程度地减少软件存在的缺陷和错误。 你了解软件测试的

    2024年02月16日
    浏览(35)
  • 软件测试面试?太简单了 2023测试面经 (答案+思路+史上最全)

    从年后开始投简历面试的,在boss和拉钩上投了有几十份简历,其中70%未读状态,30%已读,已读的一半回复要求发送附件简历,然后这周接到面试的有七、八家公司,所以,当前这个大环境真的难 这半个月来,每天安排三到四场面试,平均每个公司至少都是两轮面试打底,经

    2024年02月03日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包