接口测试面试题整理

1.什么是接口测试?

  • 接口测试:是测试系统组件间接口的一种测试方法
  • 接口测试的重点:检查数据的交换,数据传递的正确性,以及接口间的逻辑依赖关系
  • 接口测试的意义:在软件开发的同时实现并行测试,减少页面层测试的深度,缩短整个项目的测试周期

2.接口自动化测试的流程?

基本的接口功能自动化测试流程为:需求分析-->用例设计-->脚本开发-->测试执行-->结果分析

3.GET请求和POST请求区别是什么?

  • GET请求:用于信息获取,相对而言是安全和幂等的;在做数据查询时,建议用GET方式,如:商品信息接口、搜索接口、博客访客接口...
  • POST请求:表示可能会修改服务器上资源的请求;在做数据添加、修改时,建议用POST方式。如:上传图片接口、登录注册接口...

误区:
“GET是从服务器上获取数据,POST是向服务器传送数据”(该说法有误)
解析:
GET/POST都可以提交数据,GET请求也可以向服务器传递数据,POST请求也需要服务器返回数据

4.接口测试的常用工具有哪些?

  • Postman
  • JMeter
  • SoapUI

5.HTTP接口的请求参数类型有哪些?

  • 查询字符串参数(Query String Parameters参数)一般用于GET请求,会以url string的形式进行传递
  • 请求体参数(Request Body)一般用于POST请求,可以使用Content-Type来指定不同参数类型

6.如何从上一个接口获取相关的响应数据传递到下一个接口?

先从上一个接口中的响应数据获取对应的返回值,然后使用正则表达式or使用JSON解析来提取需要获取的值,然后存储在一个变量中,最后在下一个接口中直接引用该变量即可

7.接口测试用例的编写要点有哪些?

1)必填字段:请求参数必填项、可选项
2)合法性:输入输出合法、非法参数
3)边界:请求参数边界值等
4)容错能力:大容量数据、频繁请求、重复请求(如:订单)、异常网络等的处理
5)响应数据校验:断言、数据提取传递到下一级接口...
6)逻辑校验:如两个请求的接口有严格的先后顺序,需要测试调转顺序的情况
7)性能:对接口模拟并发测试,逐步加压,分析瓶颈点
8)安全性:构造恶意的字符请求,如:SQL注入、XSS、敏感信息、业务逻辑(如:跳过某些关键步骤;未经验证操纵敏感数据)

8.接口测试的步骤有哪些?

1)发送接口请求
2)测试接口获取返回值
3)断言:判断实际结果是否符合预期

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

依赖登最状态的接口,本质上是在每次发送请求时需要带上存储有账户有效信息的Session或Cookie才能发送成功,在构建POST请求时添加必要的Session或Cookie

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

可以利用一些MOCK工具(如:JSON Server、Easy Mock)来模拟第三方的数据返回,最大限度的降低对第三方数据接口的依赖

一、接口测试需要考虑的地方有哪些?

1、考虑输入参数和输出参数的合法性,参数必填,默认值,参数长度和格式校验,边界等,图片长传考虑图片大小和格式。查询考虑数据排序,分页考虑分页显示等。

2、业务逻辑和功能实现

3、数据库校验

4、性能测试(接口tps、响应时间等)

5、兼容性,新老版本数据的兼容

6、安全性,敏感信息加密,恶意攻击的防范,权限控制等

7、幂等性(接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为 多次点击而产生了副作用。举个最简单的例子,点击一次或者多次点击同一个数据生成多条相同数据,即在发布帖子或者支付时不能产生这种错误,这就没有保证接口的幂等性;

二、接口测试流程是

1、获取接口文档

2、编写接口测试用例;

3、使用接口工具,或者自己搭建的测试平台进行测试;

4、输出测试报告(持续集成发邮件等形式都可以),

详情注意事项:

1、获取接口文档,熟悉单接口以及链路接口业务,包括接口地址,请求方式,鉴权方式,入参,出 参,错误码等。没有接口文档的,已抓包获取接口相关参数,然后进行测试,相关错误报告给对应开发,根据项目实际情况确定修改方案;

2、编写接口测试用例并评审。接口功能用例设计:

A、正常用例例:单接口返回成功场景!链路接口(业务流接口)逻辑实现!
B、反例: 鉴权反例:鉴权码为空,错误的鉴权码,鉴权码已过期。数反例:参数为空,参数类型异常,参数长度异常, 错误码反例:(根据业务而定) 。其他反例场景: 如接口黑名单,接口调用次数限制等,分页场景:(0,第一页1,中间页5,最后一页10,100,其他 业务异常)
C、兼容性用例:比如一个接口需要兼容多个版本的前端调用。

3、使用接口测试工具Postman/Jmeter执行接口测试,通常执行过程中需要考虑以下几个方面:

A、是否满足前提条件:有些接口需要满足前提,才可成功获取数据。常见的,需要登录Token
B、参数之间是否存在关联:有些参数彼此之间存在相互制约的关系
C、参数是否加密,比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。
D、参数是否是动态参数。
E、接口是否需要签名验证等。

4、实现持续集成并输出接口测试报告发送电子邮件,企微(钉钉群)等,有bug报bug。每天固定时间运行,从而监控是否有因开发代码变更或者新功能添加而导致的遗漏接口 bug。

 

三、get和post的区别

1、GET一般用于查询数据;而POST一般用于添加、删除或修改数据。
2、传参方式不同:get通过地址栏传输,post通过表单报文传输,所以post请求比get请求的安全性相对较好。get请求可以直接通过浏览器访问,支持刷新和后退。post请求不能直接使用浏览器访问,刷新后数据要重新发送。
3、传参长度不同:get参数有长度限制(受限于url长度),而post无限制
4、GET产生一个TCP数据包(对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200返回数据),POST产生两个TCP数据包(对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok返回数据)

四、http和https的区别

1、http是超文本传输协议,信息是明文传输,Https协议是由HTTP协议+SSL协议构建的加密传输协议,比http协议安全;
2、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443;
3、HTTP无需证书,而 HTTPS需要认证证书

五、cookie,session,token有什么相同点和不同点。

1、相同点:三者都是用于鉴权并且都是由服务器产生的。
不同点:
2、cookie保存在客户端的浏览器上,cookie不安全,其他人可以通过分析存放在本地的cookie并进行cookie欺骗。
3、session比cookie安全,它会在一定时间内保存在服务器的内存,但当访问增多时,比较占用服务器的性能。单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,而session则存储于服务端,浏览器对其没有限制。
4、token就是令牌,是一个字符串,主要是用于做客户端身份认证,通常登录成功后,服务端会返回token,客户端需要把token值保存下来,后续请求其他接口时,需要在请求中携带这个token值,只有服务端对token校验通过后,才允许访问。

六、接口测试中是怎么校验接口返回结果是否正确

1、验证接口响应状态码是否是200。
2、当接口响应正文比较短,比较固定时验证响应的完整内容是否等于预期。
3、当响应内容较长较多时,验证响应报文是否包含关键信息。
4、当响应正文为XML格式或JSON格式时,可以通过XPATH或JSONPATH,正则表达式,获取其中的某个节点,验证响应报文关键字段是否存在。
5、查询数据库或调用其余接口查询。当要验证的信息在当前测试接口的响应内容中不存在时,可以调用 其他接口来验证。例如,一个增加用户信息的接口,要验证信息确实增加成功了,可以再调用查询用户信息接口来确认用户信息添加成功。当然,在获取数据库查询权限的情况下,也可以直接查询数据库来验证。

七、为什么要做接口测试

A、 在目前前后端分离开发的模式下,项目在开发过程中,客户端和服务端开发的进度不一致,比如服务端先开发完了,这个时候可以先对服务端进行接口测试,确保服务端逻辑和返回数据是正确的,然后再测试客户端。
B、在测试某些业务时,不能仅仅通过前端来测试,比如用户注册,前端限制了用户名不能为空,但是可以通过工具绕过前端直接调用服务端接口,如果服务端没有做相关的逻辑判断,就会造成数据错误。包括接口数据传输过程中是否对关键信息加密等。所以必须针对服务端接口做测试。
C、接口测试属于集成测试、测试介入越早、就越能在项目早期发现问题,其修复问题的成本越低,在开发提测后,可以先通过工具把服务端的接口测试跑一遍,确保接口测试用例都是通过的,快速判断服务端接口是否符合预期。然后再通过UI界面进行测试。否则接口有bug,前端页面必定有bug。并且接口测试非常快速、接口测试用例执行的时间是毫秒级的。

八、HTTP状态码,以及它们代表什么意思

1xx 信息提示(表示临时的响应) 、200 正常(表明服务器成功地接受了客户端请求)、307 重定向(服务器要求客户端重新请求一个新的URL)、401 未授权,需要身份认证、403 服务端禁止访问 、404 请求的资源未找到(比如url写错了,页面被删除等)、405 请求方法不允许(比如服务端的POST类型,客户端使用GET方式请求)、 5xx 服务端内部错误(服务器由于遇到错误而不能完成该请求)

九、一个接口请求不通该如何排查,可能的原因是:

1.检查请求四要素:请求方式,请求路径,请求头,请求参数是否写错。
2.客户端和服务端网络不通
3.服务端项目没有部署起来,接口无法访问。
4.请求被服务器的***拦截了
5.服务端程序内部发生了错误
6.没有访问权限(比如缺乏token、cookie之类)
7.客户端设置了网络代理(比如打开了Fiddler/Charles等抓包工具)
8.如果是浏览器访问,是不是绑定了错误的hosts ;

十、接口测试中的加密或签名的接口如何处理?

加密接口:
1、首先要先了解接口使用的加密方式(如:base64、md5、sha系列加密、rsa加密等)
2、检查接口测试工具是否支持这种加密方式,如果支持的话,直接使用对应功能就行了(比如Jmeter 支持md5);如果加密方式是公司内部特有的算法,可以在接口测试工具中调用公司的加密算法代码 (如jar包)来实现加密。
签名接口: 了解签名规则之后,在接口请求之前先对参数按照签名规则加密之后再发送请求。签名sign一般通过请 求头传值。

十一、没有接口文档,如果做接口测试

1、方式一:可以使用Fiddler、Charles等抓包工具抓取接口数据之后整理成接口文档,接口中不清楚的字 段,找时间集中找开发解答。然后再进行接口测试;
2、方式二:可以通过Jmeter的代理录制功能,先把接口请求录制下来,然后再逐一进行接口测试。

十二、依赖于第三方数据的接口如何进行测试

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

十三、依赖于登录状态的接口如何测试

依赖登录状态的接口的本质上是在每次发送请求时需要带上session或者cookie才能发送成功, postman会自动关联cookie,jmeter通过添加http cookie管理器来处理cookie关联。

十四、常见的请求头以及它们的作用是什么?

1.Accept: (客户端可以接收的数据格式)
2. X-Requested-With:(ajax请求,异步请求)
3. User-Agent: (客户端的用户)
4. Content-Type: application/x-www-form-urlencoded;
5.charset=UTF-8(内容的格式)
6.Cookie: csrf_token=2c76c391ab3922fe; (cookie信息)

十五、常用的jmeter自带函数有哪些

1、 random():随机数函数
2、randomString():随机字符串函数
3、time():获取当前时间戳函数
4、 md5():加密函数
5、setpropty():跨线程组设置属性值函数

十六、使用jmeter如何做接口之间的数据关联

接口数据关联指的是上一个接口的某个返回值,作为下一个接口的请求参数。 如果上一个接口返回的是json格式的,可以用json提取器把数据保存到一个变量里,如果是其他格式 的,可以使用正则提取器保存数据。 那么在下一个接口中,直接使用${变量名}就能使用这个数据。

十七、Jmeter中常用的断言方式

1、Json断言,可以通过Json路径表达式判断接口返回的Json字符串中某些字段是否符合预期
2、响应断言,可以判断响应头/响应体中是否包含预期的字符串。区别在于:Json断言只能判断Json格式;响应断言只要是文本格式都可以判断,应用范围更广
3、beanshell断言,可以判断当一个接口经过CSV数据驱动之后,对返回的正常结果和异常结果同时进行判断。

十八、postman在工作中使用流程

1、获取接口文档,熟悉单接口以及链路接口业务,包括接口地址,请求方式,鉴权方式,入参,出参,错误码等。
2、 编写好用例
3、在 postman 先建好 url 环境变量
4、根据接口用例所属的模块新建集合管理
5、 在集合中不同模块下录入测试用例
6、录入测试用例的时候根据预期结果在 tests 页签中增加断言
7、 导出通过 Newman+Jenkins 去运行

十九、Postman中常见的POST提交数据方式有哪些?

主要有以下四种方式:
1、application/x-www-form-urlencoded:表单方式提交数据。
2、multipart/form-data :报文包含有文件上传
3、application/json(text/plain,text/xml):报文类型为json字符串类型。
4\binary 报文类型为二进制文件上传。

二十、如何用 postman 设置关联

关联就是把上一个接口返回值的部分截取出来,作为下一个接口的参数,能让接口串联运行在 postman 中设置关联的步骤如下:
1、 先通过正则表达式提取的方式或 json 取值的方式把下一个接口需要的信息从上一个接口截取出来
2、 使用设置全局变量的代码把取出来的值保存到全局变量
3、在下一个接口中,使用{{全局变量}}代替要替换的静态值

二十一、工作中用fiddler抓包工具来做什么

1、当测试出bug时,可以通过fiddler抓包,分析bug是客户端还是服务端的问题
2、当做接口测试时,通过抓包获取接口的入参和返回值,包括接口之间的数据关联
3、当对客户端做弱网测试,可以修改fiddler的网络模拟参数,模拟出不同的网络速度
4、当需要对客户端测试一下特殊场景(线上调试),可以使用fiddler设置响应断点,修改服务端响应的数据,测试客户端对应的逻辑处理。



转载链接:https://www.jianshu.com/p/8d3fb56b0de9
来源:简书
转载地址:https://www.jianshu.com/p/8d3fb56b0de9

posted on   FanF  阅读(337)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示