接口测试面试题
一、 接口测试
1、接口的理解
一般在企业中接触的接口测试有前后端进行数据传输的内部接口,和跨平台跨系统连接外部接口的测试。
跨平台跨系统的接口测试,比如说第三方支付接口。
接口可以理解为数据传递的通道,可能只是服务端底层的一个函数,接口参数一般是指函数的参数,接口的返回数据是函数的返回值。
2、为什么要做接口测试
接口测试的开展有比较多的因素,目前接口测试的开展,大部分是由于前后端分离这种开发流程决定的。
产品迭代过程中,会出现前端和后端进度不对等的情况,比如前端开发页面还没有完成的时候,后端就已经开发完成了,测试人员为了尽早的介入测试,可以先进行接口测试。
基于安全的考虑,很多时候绕过前端是非常容易的,业务的很多逻辑,都是需要通过后端实现的,需要在后端进行验证具体的业务场景,通过充分的接口测试可以更好的发现一些底层代码的错误,保障后端的质量。
随着技术的不断发展,现在企业的平台越来越复杂,系统也越来越庞大,多系统间交互开发不断,现在后端很多都是微服务架构,会拆分很多很多服务,需要保障服务内的质量、服务之间的质量和端到端的质量。
传统的测试方法测试成本急剧增加,鉴于对系统的安全性、稳定性而言,接口测试在检查系统的异常处理能力方面起着决定性的作用,且接口测试有利于在自动化及持续集成这两方面建立一个完整的测试体系。
3、接口测试的步骤
- 1、拿到接口需求,分析需求
- 2、依据接口需求去设计接口用例,
- 3、选择接口测试的工具,比如postman或jmeter来执行测试,也可以通过直接写代码的方式来执行测试用例
- 4、在测试过程中,需同步关注数据库的数据准确性,若遇到bug,就提交给开发,进行bug的跟踪和处理
4、接口测试用例
接口测试用例的编写,思路和功能测试用例的编写是一样的:
- 首先需要考虑接口正常调用:
就是输入正常的参数值,检查结果返回的响应结果和接口文档给定的是否一致;还需要考虑数据库的增删改差是否正确。 - 接着是考虑接口的异常验证:
依据限制约束,需要去考虑包括长度、类型、必填等异常场景;同步的话需要考虑一下边界值 - 另外需要考虑业务规则验证:
接口的安全性验证,比如说鉴权 - 最后需要考虑接口的性能:
这一点需要考虑系统有没有需求要做这个。
5、如果没有明确的接口文档,如何进行接口测试
首先需要明确接口测试的目的和测试的范围,在没有接口文档的情况下,需要通过其他途径来确定接口的功能和参数,从接口测试得到目标和范围、分析程序间的交互方式、模拟接口数据方法等方面分别解读
1、与开发人员沟通,如果能看到程序源码,可以尝试查找API相关的代码段,以便明确参数内容和要测试的功能点
2、使用浏览器开发者工具或抓包工具,捕获网络请求和响应信息,了解应用程序中的请求类型、参数和响应数据,明确接口的正向输出
3、边界测试:通过对接口的输入和输出进行边界值的测试,发现接口的潜在问题和异常情况,并进行相关测试。
4、非功能性测试:针对接口的性能、安全性、可靠性等方面进行测试,确保接口的稳定性和安全性。
5、探索式测试:通过对接口进行不断的探索和试验,发现接口的各种功能和限制,并进行相关测试。
6、兼容性测试:针对不同的操作系统、浏览器、设备等进行测试,确保接口的兼容性和可用性。
总之,针对测试文档不全的情况,需要采用多种测试方法和策略,确保接口测试的全面和有效。
6、定位前后端bug
通过抓包分析
可以通过fiddler和其他抓包工具来抓取请求信息来进行分析
fiddler没有设置过过滤器的情况下:
-
没有抓到请求信息,可能是前端页面元素没有绑定事件,也有可能是前端发生了js错误,这就是前端的bug;
-
若抓到的请求返回的结果错误,需确认前端传输的数据是否错误的,
若前端传输的数据错误,那就是前端的bug,
若前端传输的值是正确的,那就是后端的bug。 -
若抓取的请求返回值中间的http的状态码是500的话,说明是后端服务器的内部错误,不过一般情况下都不会让500的错误显示到前端,会通过nginx反向代理将服务器错误显示为404。
若抓取的请求返回值得http状态码是404的话,说明后端服务器没有对应地址的服务,也有可能是前端js提交请求的时候提交了错误的地址。
通过日志分析
通过查看客户端、服务端的日志,分析有没有异常的日志信息,从而具体判断问题出现在哪里
二、抓包
1、为什么要抓包
在程序运行的时候,数据都是以数据包的形式进行传输,在发送和接受数据的过程中,发出的数据可能是错误的,也可能接受的包中有错误的数据,从而导致程序处理出错。因此我们直接抓取传输的数据包,通过其他的工具或者方法解析数据包装的原始数据,可以定位出来,是否因为数据出错而导致程序的出错,如果是因为数据出错,可以定位是哪一部分的数据出错,等等。
2、抓包工具
2.1、抓包使用的工具
- HTTP、HTTPS 协议,使用fiddler、charles进行抓包
一些简单的接口测试,比如使用json形式进行前后端交互的数据,也可以直接在浏览器的控制台查看 - TCP、UDP 协议,使用wireshark进行抓包
这类抓包其实也是很看经验的,比如一个视频流,出现了花屏,wireshark一抓一存是对的,而原因可能是开发人员没处理好udp乱序问题,但如果没看源码的话就只能看时间戳和序号,这种测试起来就很烦躁
2.2、wireshark的使用场景
wireshark工具主要是用于测试过程中遇到的一些网络问题,以及要去分析一些网络协议的时候会用到。
比如说在测试过程中发现某个web页面突然间没法访问了,就可以通过wireshark上的抓包,来分析一下是客户端的问题还是服务器的问题,并且可以确认是连接过程中哪个阶段出现了问题。
拿HTTP协议来说,就可以通过抓包来分析,是在TCP三次握手过程中出现了问题,还是说在完成三次握手之后,http进行数据传输的时候出现了问题;并且可以看出是客户端主动断开的连接,还是被服务器reset重置了连接。这些都是可以通过wireshark上的抓包分析得出来的。