接口测试比较基础的问题,有些是面试的时候遇到的问题
1、什么是软件接口?
我认为软件接口就是不同软件组件或系统之间交互的桥梁,定义了组件之间如何通信,接口可以是软件内部模块之间的接口,也可以是不同软件系统之间的外部接口。
2、接口测试属于什么类型的测试?
接口测试主要属于功能测试的一种,因为它主要验证的是系统或组件的功能是否按照预期工作。然而,由于接口测试常常需要了解接口的内部逻辑和参数,有时也涉及到一定的灰盒测试特性。
3、为什么要进行接口测试?
- 提前发现问题:接口测试可以在前端页面开发完成之前进行,提前发现后端逻辑或数据问题。
- 降低耦合度:通过接口测试,可以减少前端与后端的依赖,使得两者可以独立开发和测试。
- 提高测试覆盖率:接口测试可以覆盖到前端无法覆盖到的场景,如并发请求、异常处理等。
4、HTTP和HTTPS的区别?
- 安全性:HTTPS是HTTP的安全版本,通过SSL/TLS协议对数据进行加密传输,保证数据的安全性。
- 端口:HTTP默认使用80端口,而HTTPS默认使用443端口。
- 性能:由于HTTPS需要加密和解密,相比HTTP会有一定的性能损耗。
5、HTTP属于哪一层?
HTTP协议属于应用层协议,它是建立在TCP/IP协议之上的,用于实现超文本数据的传输。
6、HTTP对应的请求方式及区别?
HTTP常见的请求方式有GET、POST、PUT、DELETE、HEAD、OPTIONS、TRACE、CONNECT等。公司常用的是GET和POST。
- GET:主要用于请求数据,请求的数据会附加在URL之后,大小有限制,且数据会显示在浏览器地址栏中,不适合传输敏感信息。
- POST:主要用于提交数据,请求的数据会包含在请求体中,大小没有限制,且不会显示在浏览器地址栏中,适合传输敏感信息。
7、POST提交数据的格式有哪些?
- application/x-www-form-urlencoded:最常见的POST提交数据的方式,表单数据被编码为key/value对,然后发送到服务器。
- multipart/form-data:用于文件上传,表单数据被编码为一条消息,包含多个部分,每个部分都可以是文本或二进制数据。
- application/json:通过JSON格式提交数据,现在越来越被广泛应用。
8、常见的状态码有哪些?
状态码包括五大类,
- 1**信息性状态码
- 2**请求成功
- 3**重定向
- 4**客户端错误,前端错误
- 5**服务器异常
其中常见的有,
- 200 OK:请求成功。
- 404 Not Found:请求的资源不存在。
- 403 Forbidden:服务器理解请求但是拒绝执行。
- 500 Internal Server Error:服务器内部错误,无法完成请求。
9、接口测试流程是什么样的?
- 需求分析:明确测试的目标和范围。
- 接口文档分析:了解接口的输入输出、参数要求、协议等。
- 设计测试用例:根据接口文档设计测试用例,覆盖正常、异常、边界、接口关联等场景。
- 准备测试数据:准备测试所需的数据。
- 执行测试:使用接口测试工具(如Postman)发送请求,验证响应结果。
- 记录测试结果:记录测试过程中发现的问题和测试结果。
- 缺陷跟踪:跟踪缺陷的修复情况,并重新测试验证。
10、接口文档的表现形式?
接口文档通常以文档形式存在,如excel、Swagger等,它们详细描述了接口的地址、请求方式、请求参数、响应数据等信息。
11、之前主要负责哪些接口?从那些方面设计测试用例?
根据某个项目回答,测试用例设计主要从,
功能:基本功能是否正常,功能是否按照接口文档实现,接口的正常、异常场景
业务逻辑:接口之间存在关联的,要根据业务逻辑进行测试
异常测试:参数异常(关键字参数、参数为空、多、少参数、错误参数等)、数据异常(关键字数据为空、长度不一致、错误数据等)
性能测试:响应时间
安全测试:Cookie、header、唯一识别码
12、Postman发送请求需要填写什么数据?
在Postman中发送请求需要填写请求方法(如GET、POST)、请求的URL、请求头(如Content-Type)、请求体(对于POST、PUT等请求方式)等。
13、怎么进行响应数据的检查?
可以通过Postman的断言功能(如Tests标签页)进行响应数据的检查,包括状态码断言、响应正文断言、响应头断言、响应时间断言等。也可以使用肉眼检查,但断言检查更为准确和高效。
14、如何实现接口关联?
接口关联通常用于处理接口之间的依赖关系,即一个接口的响应数据是另一个接口请求的必要参数。在Postman中,可以通过设置环境变量和全局变量来实现接口关联。
- 发送第一个请求:首先发送一个请求并获取响应。
- 提取数据:使用Tests标签页中的JavaScript代码从响应中提取需要的数据。例如,使用
pm.response.json()
访问JSON响应体,并提取需要的数据。 - 设置环境变量:将提取的数据设置为环境变量或全局变量。例如,
pm.environment.set("variable_key", value);
。 - 在后续请求中使用:在后续请求的URL、Headers、Body等位置,通过
{{variable_key}}
的形式引用环境变量或全局变量。
注意:答案或许不是很完美,接受各位指正