Skip to content

初级面试题

接口报错怎么处理

面试题目

接口报错怎么处理?

公司

  • 字节外包

招聘类型

社招

题目解析

面试官考察点

  1. 问题分析能力:能否根据报错现象快速定位问题根源。
  2. HTTP 协议理解:对 HTTP 状态码及其含义的理解。
  3. 排查和解决能力:是否能采取有效方法解决接口报错问题。
  4. 经验总结:是否有实际项目中处理接口报错的经验。

知识点

  1. HTTP 状态码:如 404(Not Found)、500(Internal Server Error)等的含义及对应的处理方法。
  2. 日志分析:如何查看和分析服务器端、客户端或网络设备的日志以定位问题。
  3. 网络调试工具:如 Postman、Charles 等,用于检查请求和响应的详细信息。
  4. 接口请求结构:理解请求的 URL、参数、头信息及鉴权机制(如 Token)。

答案

  • 如果碰到接口报错,那么要先看响应状态码,如果响应状态码为 4 开头的,那么很有可能是在填写请求信息的时候出现了错误,那么就需要检查请求的 url、请求的参数、请求是否有携带 token 等鉴权信息。
  • 如果响应状态码为 5 开头的,那么则为服务端的报错,则需要通过查看后端的日志信息,排查具体报错发生在哪里。
  • 没有响应状态,首先检查 url 是否正确,网络是否正常,如果以上都没有问题则检查是否能正常连接后端服务。

接口测试的优势

面试题目

接口测试的优势

公司

某金融公司

招聘类型

社招

题目解析

面试官的考察点:

  1. 技术理解:对接口测试的基本概念和重要性的理解。

  2. 测试策略:对比其他测试方法,阐述接口测试的独特优势。

  3. 实践经验:实际项目中应用接口测试的经验和效果。

知识点:

  1. 高效:接口测试比界面测试更快,因为它不涉及加载和渲染UI,大大缩短了测试时间。

  2. 可重复性:接口测试可以编写自动化测试脚本,保证测试的可重复性,减少人为错误和重复劳动。

  3. 覆盖范围更广:接口测试可以测试应用程序的每个接口,覆盖更广泛的测试场景。

  4. 稳定性更好:接口测试可以发现和解决应用程序接口的问题,提高应用程序的稳定性和可靠性,不受UI变化影响。

  5. 易于集成:接口测试可以更容易地集成到持续集成/持续交付流程中。

  6. 提前发现问题:接口测试可以在开发初期检测到问题,减少后期修复成本,避免问题积累导致的重大故障。

  7. 更好的协作:接口测试鼓励团队之间更好的协作。

  8. 提高安全性:接口测试有助于识别安全漏洞。

  9. 成本效益:接口测试比其他形式的测试更具成本效益。

  10. 更好的用户体验:接口测试有助于确保软件易于使用并提供良好的用户体验。

答案

接口测试有许多优势。

  • 首先,它能在开发初期发现问题,避免后期修复成本高。
  • 其次,接口测试覆盖范围广,不仅测试单个务,还能测试服务间的交互,确保系统整体功能正常。
  • 此外,接口测试可以实现高度自动化,节省测试时间和人力,提高测试效率。相比UI测试,接口测试更加稳定,不易受到界面变化影响,更适合频繁的回归测试。
  • 在实际项目中,通过接口测试,我们能够快速定位并修复问题,提升系统的可靠性和性能。
  • 总之,接口测试不仅高效、稳定,还能提升团队协作和用户体验,具备显著的成本效益。

接口测试工具都用哪些

面试题目

接口测试工具都用哪些?

公司

  • 快手外包

招聘类型

社招

题目解析

面试官的考察点

  1. 工具熟悉度:对常用接口测试工具的熟悉程度。

  2. 实际应用经验:在项目中使用这些工具的经验和效果。

  3. 工具选型能力:根据不同场景选择合适工具的能力。

  4. 技术深度:对工具的高级功能和配置的了解。

知识点

  • L1: Postman 接口测试工具、 Charles 或 Fiddler 抓包工具、JMeter 性能压测工具。
  • L2~L3:请求发送工具 cURL、安全测试工具 ZAP、Mock 工具 MitmProxy、WireMock。
  • L4~L5:BurpSuite 、WireShark。

  • Postman:用于发送 HTTP 请求、调试接口和自动化测试。

  • Charles:类似 Fiddler,用于抓包和调试 HTTP/HTTPS 请求。
  • Fiddler:用于抓包分析 HTTP/HTTPS 流量。
  • JMeter:主要用于性能测试,但也支持 HTTP 接口测试。
  • cURL:用于发送 HTTP 请求,支持 RESTful API。
  • ZAP:用于安全测试,支持扫描 Web 应用漏洞。
  • MitmProxy:用于模拟网络请求,支持 Mock 和 Stub。
  • WireMock:用于模拟 HTTP 服务,支持 Stub 和 Mock。
  • BurpSuite:用于渗透测试,支持 Web 应用安全扫描。
  • WireShark:用于抓包分析网络流量。

答案

接口测试中,经常会用到 postman 接口测试工具,还会用到 Charles 或者 fiddler 这样的抓包工具,还有 jmeter 这样的性能压测工具。还可以自己编写脚本工具进行测试。

接口测试流程

面试题目

接口测试流程

公司

  • 美团外包

招聘类型

社招

题目解析

面试官的考察点

  1. 系统化思维:对接口测试流程的全面了解和系统性理解。

  2. 实际经验:在实际项目中应用接口测试流程的经验和案例,想看在之前的公司的测试流程是如何做的,是否有借鉴意义。

  3. 细节把控:对每个流程环节的细节有深刻的理解和把控能力。

  4. 工具使用:对常用工具和方法的熟悉程度。

知识点

  1. 需求分析:理解接口需求,明确测试目标和范围。
  2. 测试计划:制定测试计划,包括资源分配、时间安排、测试环境搭建等。
  3. 测试设计:编写测试用例,设计测试数据,确保覆盖所有测试场景。
  4. 测试执行:使用工具(如 Postman、SoapUI)执行测试用例,记录测试结果。
  5. 缺陷管理:发现并记录缺陷,及时与开发团队沟通,跟踪缺陷修复情况。
  6. 结果分析:分析测试结果,评估接口的稳定性和性能。
  7. 回归测试:在修复缺陷后进行回归测试,确保修改未引入新问题。
  8. 测试报告:撰写测试报告,汇总测试结果和发现的问题,提出改进建议。

初创公司: 因为是初创公司所以很多流程还不够规范。主要是在需求评审之后,研发提测后,通过抓包工具获取接口信息(初创公司研发不会十分配合写接口文档)。获取到接口信息之后,再编写接口自动化测试用例,以便于回归测试使用。

外包公司(有流程,有规范,但是权限控制比较严格): 在需求评审之后,研发会同步输出接口文档,会根据接口文档编写接口测试用例,然后使用接口测试工具实现。用于冒烟测试、回归测试以及后续版本的测试。

答案

接口测试流程包括以下几个步骤。

接口测试一般分为几个步骤:

  1. 需求分析:先要搞清楚接口需求,明确测试的重点和范围。如果没有接口文档,可以用抓包工具获取接口信息。
  2. 测试计划:接下来做个大概的计划,分配好时间和资源。
  3. 测试设计:设计测试用例和数据。没接口文档的情况下,可能要根据抓包来写,有接口文档就直接根据文档来做。
  4. 测试执行:通过 Postman 或者自动化脚本等工具跑测试用例,记录结果。
  5. 缺陷管理:发现问题后要及时记录,并跟开发团队沟通,直到问题解决。
  6. 结果分析:分析测试结果,看看接口稳定性和性能怎么样。
  7. 回归测试:问题修复后要做回归测试,确保没有引入新问题。
  8. 测试报告:最后写测试报告,汇总结果并提出改进建议。

接口测试能发现哪些问题

面试题目

接口测试能发现哪些问题

公司

某金融公司

招聘类型

社招

题目解析

面试官考察点

  1. 问题识别能力:是否能清晰地列举接口测试能发现的各类问题。
  2. 测试深度:对各种测试类型(功能、性能、安全等)在接口层面的理解和应用。
  3. 业务理解:能否结合具体业务场景分析接口测试的重要性和效果。
  4. 经验分享:是否能举例说明实际项目中接口测试发现问题的案例。

知识点

  1. 功能性问题:如参数验证、边界条件测试、异常处理等。
  2. 性能问题:如接口响应时间、并发处理能力等。
  3. 安全问题:如权限控制、数据加密传输等。
  4. 兼容性问题:如不同客户端和服务端的兼容性测试。
  5. 业务流程问题:如接口在整个业务流程中的正确性和完整性。

答案

  • 可以检验接口是否按照约定返回响应
  • 可以修改请求参数,突破前端页面输入限制,检验系统的异常处理能力。比如边界值处理错误,输入异常值接口抛异常,输入参数多或者少接口抛异常等等
  • 可以检验系统的安全性。比如明文传输、返回结果含有敏感信息,没对用户身份信息做校验,没做恶意请求拦截等等
  • 可以通过接口测试并发场景,检验系统的性能和稳定性。比如接口并发多条相同操作,响应时间过长,接口压测出现瓶颈等等
  • 通过接口测试,可以让接口质量得到保证,这样前端也会更稳定,功能测试专注与发现前端的 Bug 即可。

因为接口测试拥有上述的作用,所以做接口测试可以发现很多在页面上操作发现不了的 Bug

接口测试用例设计关注哪些点

面试题目

  • 重点题目

接口测试用例设计关注哪些点?

公司

  • 美团外包
  • 芝麻开门交易所
  • 优酷外包
  • 字节外包

招聘类型

社招

题目解析

面试官考察点

  1. 测试设计能力:是否能有效地设计全面的接口测试用例。
  2. 测试深度:对不同类型测试(功能、性能、安全等)在接口层面的理解和应用能力。
  3. 测试策略:如何根据项目需求和风险优先级设计测试用例。

知识点

按照优先级依次回答:

  1. (L1)基本功能流程测试:验证接口的基本功能是否按照预期工作。
  2. (L1、L2)性能测试:评估接口的响应时间、吞吐量和并发处理能力。
  3. (L1、L2)安全测试:检查接口的鉴权、数据加密和防止恶意攻击的能力。
  4. (L1、L2、L3)输入域测试:测试输入参数的边界条件、特殊字符和数据类型。
  5. (L3、L4)线程安全测试:验证接口在多线程环境下的稳定性和可靠性。
  6. (L3、L4)故障注入测试:通过人为注入错误条件来评估系统的健壮性。
  7. (L5)流量回放测试:使用真实生产流量来测试接口的性能和可靠性。

答案

在接口测试用例设计中,我会优先关注以下几点:

  • 首先是基本功能流程测试,确保接口按照预期工作;
  • 其次是性能和安全测试,评估接口的响应时间、安全性和可靠性。
  • 针对输入域,我会测试边界条件、特殊字符和数据类型,确保接口能处理各种输入情况。
  • 对于高级测试,包括线程安全性、故障注入和流量回放测试,这些能帮助发现接口在复杂环境和异常情况下的行为。

通过这些策略,我能设计出全面而有效的接口测试用例,确保系统在各种场景下的稳定性和可靠性。

接口测试中,如果状态码返回 400 是什么意思

面试题目

接口测试中,如果状态码返回 400 是什么意思?

公司

  • metaapp

招聘类型

社招

题目解析

面试官考察点

  1. 技术理解:对 HTTP 协议中状态码的理解和应用能力。
  2. 问题分析能力:是否能根据状态码快速判断问题所在。
  3. 应对策略:针对不同状态码的处理方法和解决方案。

知识点

1xx - 信息性状态码

  • 100 Continue(继续):表示客户端应该继续它的请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
  • 101 Switching Protocols(切换协议):表示客户端需要采用不同协议以完成请求,如升级为 WebSocket。
  • 102 Processing(处理):表示服务器已经收到并正在处理请求,但客户端仍应继续等待。

2xx - 成功状态码

  • 200 OK(成功):表示已成功处理请求,一般用于 GET 和 POST 请求。
  • 201 Created(已创建):表示已成功创建请求的资源。
  • 202 Accepted(已接受):表示已接收请求,但尚未完成处理,需要等待一段时间。
  • 204 No Content(无内容):表示成功处理请求,但没有返回任何实体内容。

3xx - 重定向状态码

  • 300 Multiple Choices(多项选择):表示请求的资源有多个可供选择的表示形式,由客户端进行选择。
  • 301 Moved Permanently(永久重定向):表示资源已被永久移除,并且已经转移到了新的位置。
  • 302 Found(临时重定向):表示资源已被临时移动到另一个位置和 URL。
  • 303 See Other(查看其他位置):表示客户端应当使用另一个 URI 来访问请求的资源,而不是使用当前 URI。
  • 304 Not Modified(未修改):表示客户端缓存的资源未发生修改,可以继续使用缓存。
  • 307 Temporary Redirect(临时重定向):与 302 状态码类似,客户端应该继续使用原地址。
  • 308 Permanent Redirect(永久重定向):与 301 状态码类似,客户端应该使用新的 URL 来访问请求资源。

4xx - 客户端错误状态码

  • 400 Bad Request(错误请求):表示客户端发送的请求有错误或无法完成。
  • 401 Unauthorized(未授权):表示客户端请求需要身份验证,但没有提供有效的凭据。
  • 403 Forbidden(禁止):表示客户端请求被服务器拒绝,通常因为客户端没有访问特定资源的权限。
  • 404 Not Found(未找到):表示客户端请求的资源不存在于服务器上。

5xx - 服务器错误状态码

(注意:虽然您没有直接询问 5xx 状态码,但它们在 HTTP 状态码体系中也是重要的一部分)

  • 500 Internal Server Error(内部服务器错误):表示服务器遇到了一个未曾预料的情况,导致其无法完成对请求的处理。
  • 502 Bad Gateway(错误网关):表示作为网关或代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
  • 503 Service Unavailable(服务不可用):表示服务器当前无法处理请求(由于过载或停机维护)。

答案

状态码返回 400 通常表示客户端发送的请求有语法错误或无效参数,服务器无法处理请求。

在接口测试中,我们会首先查看请求的参数是否符合接口要求,检查是否遗漏了必要的参数或参数格式不正确。

此外,还需确认请求的 URL 是否正确,以及是否缺少必要的鉴权信息。

通过分析请求和服务器返回的具体错误信息,能帮助我们快速定位和解决问题,确保接口能正常响应有效的请求。

接口的幂等性,重复性怎么测

面试题目

接口的幂等性,重复性怎么测?

  • 重点题目

公司

  • 小米外包
  • 滴滴外包

招聘类型

社招

题目解析

幂等性指接口重复执行相同请求,结果保持一致。重复性则是多次请求能否保持数据一致性。

答案

通过重复发送相同的请求,检查响应是否一致,数据是否保持不变。例如对GET请求,结果应相同;对POST请求,如果是幂等的,应避免重复创建资源。

如果没有接口文档,如何开展接口测试

面试题目

如果没有接口文档,如何开展接口测试

公司

某金融公司

招聘类型

社招

题目解析

面试官考察点

  1. 问题解决能力:在没有文档的情况下如何有效开展工作。
  2. 技术能力:利用工具和技术手段理解和测试 API。
  3. 沟通能力:与开发人员、产品经理等相关方协作获取必要信息。
  4. 自学能力:通过逆向工程和分析日志等方法获取接口信息。
  5. 实战经验:实际项目中面对类似情况时的应对策略。

知识点

  1. API 逆向工程:通过使用浏览器开发者工具或抓包工具(如 Fiddler、Charles),捕获网络请求和响应信息,了解应用程序中的请求类型、参数和响应数据。
  2. 日志分析:如果能看到程序源码,可以尝试查找 API 相关的代码段。一些框架和库可能会有内置的路由器和控制器,可以帮助你了解 API 的端点和参数。
  3. 与开发人员沟通:从开发人员或代码中获取 API 信息。
  4. Swagger/OpenAPI:如果项目中有自动生成的 API 文档工具,可以利用它们生成文档。
  5. 编写测试用例:根据获取的信息编写全面的测试用例,确保覆盖主要功能和边界情况,并执行测试。

答案

如果没有接口文档,我会采用以下方法开展接口测试。

  • 首先,我会通过抓包工具如 Charles 或浏览器开发者工具分析前端与服务器的通信,了解 API 的请求和响应格式。
  • 其次,我会查阅服务器日志,从中提取 API 调用信息。如果项目使用 Swagger 或类似工具,可以自动生成文档。与开发人员和产品经理沟通,获取 API 的详细信息也是非常重要的一环。
  • 最后,根据以上收集的信息,编写全面的测试用例,确保覆盖主要功能和边界情况,

通过这些方法,即使没有文档,也能有效开展接口测试,确保产品质量。

如何保证开发给到你的接口文档就是正确的

面试题目

如何保证开发给到你的接口文档就是正确的。站在测试的角度如何去保证接口测试一个正确性?

公司

某金融公司

招聘类型

社招

答案

面试官考察点

  1. 质量保障能力:是否能有效验证接口文档的准确性和完整性。
  2. 沟通协调能力:与开发团队和产品团队合作以获取准确的接口文档。
  3. 测试策略:如何设计测试用例来验证接口的正确性和预期行为。

知识点

站在测试的角度,首先通过流程,在研发的概要设计评审环节,即可与产品、前端一起,针对后端的接口文档进行评审,在接口设计阶段就尽量保证研发设计的接口是合规、合理且满足需求的。

在评审与测试过程中,可以主要从以下几个角度考虑接口文档的正确性:

  • 是否符合需求:是否满足使用场景。
  • 规范性

  • 文档相关的描述是否清晰准确

  • 响应状态码是否符合规范
  • 错误返回是否全面

  • 字段正确性

  • 是否遗漏:比如界面展示需要姓名,对应的接口有没有相关的姓名的字段

  • 是否冗余:接口是否给出无用的响应字段,比如此页面只需 A、B、C 三个字段,接口却返回了 ABCDEF 六个字段
  • 类型是否正确:字段是否都使用符合其语义的类型,比如年龄使用 int 类型
  • 必填非必填:根据需求考虑此字段应该是必填还是非必填

  • 是否需要考虑幂等性:比如接口如果重复多次提交,应该如何返回

答案

  • 从测试角度保证接口文档的正确性,首先要与开发团队和产品团队密切合作,确保获取到最新的、完整的接口文档。
  • 接着,通过仔细分析文档中的请求方法、参数定义和预期的响应结果,制定详细的测试计划和用例。
  • 在测试过程中,我们会验证每个接口的功能、边界条件和异常情况,确保接口按照文档规定的方式进行正确响应。
  • 同时,利用自动化测试工具执行接口测试,确保每次测试的一致性和高效率。

通过这些措施,能够有效保证接口文档的准确性,并及时发现和解决潜在的问题。

如何测试身份验证和授权

面试题目

如何测试身份验证和授权

公司

某金融公司

招聘类型

社招

题目解析

身份验证用于确认用户身份,授权则是确保用户有权限执行特定操作。

  • 用户登录测试:在登录页面上测试输入有效和无效的用户名和密码,以确保只有正确的凭据才能登录。还可以测试登录的过程中出现的错误消息和提示是否正确。
  • 权限测试:测试用户是否可以访问他们有权访问的资源和功能。例如,测试一个普通用户是否可以访问管理员权限下的功能。
  • 注销测试:测试用户注销功能是否正常工作,确保在注销后用户无法访问需要登录才能访问的资源。
  • 安全性测试:测试应用程序是否存在安全漏洞,例如跨站脚本攻击、SQL 注入攻击等。
  • API 测试:测试 API 是否需要身份验证和授权,以及 API 请求是否需要正确的授权令牌。
  • 会话管理测试:测试应用程序的会话管理是否正常工作,以确保只有经过身份验证的用户可以访问应用程序的资源。
  • 多因素身份验证测试:测试多因素身份验证是否正常工作,例如测试用户是否能够成功接收并输入正确的安全代码或短信验证码。

答案

测试身份验证时,尝试有效和无效的凭证登录,检查是否正确验证。测试授权时,使用不同权限的用户访问资源,确保只有有权限的用户能成功访问,无权限的用户被拒绝。

使用 postman 批量运行接口

面试题目

如何使用 postman 批量运行接口?

公司

某社交软件公司

招聘类型

  • 社招
  • 校招

解题思路

如果想要使用 Postman 批量运行多个接口请求,就可以使用测试集的方式。Postman 中的测试集可以让接口用例的运行更加的灵活。

使用 Postman 批量运行接口请求可以通过以下步骤。

第一步:创建测试集

  • 点击左侧边栏的 Collections 选项卡,进入测试集面板

  • 在测试集面板上,可以查看到已经创建好的测试集,也可以新建测试集、导入测试集,还可以对某一个测试集进行更多的操作。

  • 点击 + 按钮,创建新测试集。右侧面板直接展示新测试集的设置界面。

  • 设置测试集

新建好的测试集需要先进行设置。一般可以设置以下内容。

  • 修改测试集名称

  • 设置测试集鉴权

  • 测试集前置脚本

  • 测试集测试脚本。可以使用 Postman 预置好的脚本,也可以直接编写 JavaScript 脚本来实现测试前的准备工作。

  • 测试集变量。如果有只在本测试集中使用的变量,可以统一设置为测试集变量,方便测试集中所有的请求进行引用。

  • 测试集文档。可以编写本测试集的介绍文案,方便进行团队协作。

第二步:添加请求

在测试集中添加请求有两种方式。

  1. 直接在测试集中新增请求

  1. 新建请求,保存请求到测试集中

第三步:运行测试集

  • 选择测试集,点击 。。。 更多按钮,选择 Run collection 进入运行测试集界面

  1. 设置测试集运行参数

第四步:查看运行结果

  • 测试集运行完毕后,自动进入运行结果页面,可以查看接口用例的执行结果。

  • 鼠标移动单击某个请求,可以查看该请求的详细信息

通过这样的操作步骤,就可以使用 Postman 轻松实现多个接口的批量运行了。

答案

  1. 创建一个测试集管理多个接口请求
  2. 把原有的接口保存到测试集中,或者直接在测试集中添加请求。保证想要批量运行的接口请求都在一个测试集当中即可。
  3. 选择测试集中的 Run collection,进入运行测试集的界面
  4. 设置测试集运行的迭代次数延迟时间使用的测试数据文件,勾选 保存响应保持变量值、测试集运行完毕后保存 cookie
  5. 点击 Run 按钮运行测试集
  6. 查看测试集运行结果,可以查看全部接口运行结果,也可以分别查看通过的接口或者失败的接口信息。

网络协议应该怎么测

面试题目

请谈谈网络协议应该怎么测?

公司

某金融公司

招聘类型

社招

题目解析

网络协议测试是一项非常重要的测试工作,因为网络协议是计算机网络中数据交换的基础。

在进行网络协议测试时,我们需要关注以下几个方面:

  • 通信协议测试:这包括测试网络协议栈的各个层次,从物理层到应用层,以确保网络协议的正常工作。在测试时,我们需要模拟各种网络环境和网络流量,以确保网络协议在不同的情况下都能正常运行。
  • 安全性测试:在测试网络协议时,我们需要关注协议的安全性,以确保协议不会被黑客或恶意用户利用。在安全性测试中,我们需要测试协议的加密、认证和授权功能,以确保协议的安全性。
  • 性能测试:在测试网络协议时,我们需要测试协议的性能,以确保协议在高负载情况下能够正常运行。在性能测试中,我们需要测试协议的吞吐量、响应时间和并发性能等指标,以确保协议的高性能和可扩展性。
  • 兼容性测试:在测试网络协议时,我们需要测试协议在不同的平台和环境下的兼容性,以确保协议在各种不同的网络环境下都能正常工作。在兼容性测试中,我们需要测试协议的支持情况,例如不同的操作系统、浏览器和设备等。

答案

首先,验证协议的正确实现,包括数据格式、请求和响应流程。其次,测试在不同网络条件下的稳定性(如延迟、丢包等)。然后,检查安全性,如是否支持加密传输、是否有防止中间人攻击的措施。接下来评估在高负载下的吞吐量和响应时间。最后,确保协议在不同设备和平台上兼容。

怎么用接口用例去覆盖业务逻辑

面试题目

怎么用接口用例去覆盖业务逻辑?

公司

某金融公司

招聘类型

社招

题目解析

面试官考察点

  1. 业务逻辑理解:对业务逻辑的深入理解,如何通过接口测试保证业务逻辑的正确性。
  2. 接口测试策略:如何使用接口测试来覆盖多种业务场景和异常情况。
  3. 技术能力:能否利用不同的测试技术和工具来确保接口的质量和系统的稳定性。

知识点

  1. 业务场景分析:如何从业务需求中提取出测试场景和用例。
  2. 异常场景设计:如何设计针对业务逻辑的各种异常和边界情况的测试用例。
  3. 结果验证:如何通过接口响应、数据库验证和相关接口验证来确认业务逻辑的正确性。

现在大部分系统前后端架构是分离的,接口作为前后端数据交互的,它的质量是必须要通过接口测试去保障的。

而且根据测试金字塔,也能看出接口测试要比传统的 UI 测试更加的底层,有着低成本高回报的优势。通过测试接口,不光可以保证接口本身的质量,也可以保证业务逻辑的正确性。

完整的接口测试不仅要校验接口能否调通,还要校验各种组合场景、异常场景、输入参数合法性有效性和边界值、接口安全、接口性能等。

业务逻辑的验证考虑不同的业务场景,流程的逻辑是什么样的,什么样的参数会有什么样的结果,从而进行多场景覆盖。

使用接口用例覆盖业务逻辑的时候,需要先把需要覆盖的业务场景梳理出来。

接口测试的业务场景的梳理可以参考场景法,先构造出要验证的业务逻辑,然后梳理出对应业务逻辑涉及到的接口,再把这些接口进行组合,完成业务场景的构建。

通常界面上可能限制了一些异常的操作,但是接口不同,可以绕过前端界面的限制,设计各种和业务逻辑相关的异常场景。比如不同状态、异常操作顺序、异常操作次数、权限异常、极限条件的场景等等。

在接口业务校验的时候,除了要校验接口响应中的结果之外,还要到验证数据库中真实的值是否符合预期。同时可以通过其它相关业务接口,验证通过接口是否成功实现了业务场景。总结起来就是通过响应结果进行校验、到数据库进行校验、通过其它接口校验。

这样就可以成功的通过接口测试去覆盖业务逻辑了。

答案

在进行接口测试时,首先需要深入理解业务逻辑,并根据场景法构造相应的业务场景。通过这种方法,可以确保覆盖业务逻辑中的各种正常和异常情况。

接口测试不仅验证接口调用的正确性,还要验证参数的有效性、安全性和性能。在测试过程中,通过检查接口响应结果、数据库状态和其他相关接口的调用,来验证系统是否按照预期实现了业务需求。

这样的测试方法不仅提高了测试的全面性和准确性,也能有效保证系统在各种业务场景下的稳定性和可靠性。

支付接口设计用例

面试题目

支付接口设计用例?

  • 重点题目

公司

  • 小米外包
  • 字节外包

招聘类型

社招

题目解析

支付接口的测试用例设计需要涵盖功能性、安全性、边界条件和异常情况等,确保支付流程的正确性、稳定性和安全性。

答案

  1. 功能测试:验证支付成功、失败、取消、退款、重复支付、多种支付方式等场景。
  2. 边界测试:测试最小和最大金额、超过最大金额、无效金额格式、不同货币类型、精度测试等。
  3. 安全性测试:验证数据加密、身份认证、支付令牌的有效性。
  4. 异常测试:模拟网络中断、支付超时、余额不足等异常情况。
  5. 性能测试:评估并发支付请求的响应时间和处理能力。

GET 和 POST 的区别

面试题目

GET 和 POST 的区别是什么?

公司

某社交软件公司

招聘类型

  • 社招
  • 校招

解题思路

面试官问出这个问题,其实考察的是大家对于网络基础知识中的 HTTP 协议的掌握程度。下面来梳理一下这个问题的回答思路。

GET 和 POST 都是 HTTP 协议中规定好的不同的请求方法,也是实际工作当中最经常使用的请求方法。所以从本质上来说,这两种请求过程是一样的。

GET 和 POST 既然是两种不同的请求方法,肯定还是有区别的。

不同点 GET POST
请求方法 请求头 method 字段值为 GET 请求头 method 字段值为 POST
常用请求参数传递方式 URL 中拼接 请求体 body
请求参数格式 urlencode 支持 formjsonxmlbinary 等各种数据格式
请求参数长度 被浏览器限制(2k) 无限制
安全性 相对较低 相对较高
RestFul 规范 无状态变化 数据的写入与状态修改
  • 请求方法:最直接的区别,它们是两种不同的请求方法,在请求中的 method 字段就是不同的,一个是 GET,一个是 POST。

  • 请求参数传递方式与参数格式:最明显的区别,GET 和 POST 采用的参数传递方式不同。

GET 请求参数一般是拼接在 URL 当中。所以只支持 urlencode 这种数据格式。

POST 请求支持通过请求 body 去传递参数的,body 中可以添加不同格式的参数,比如说 form 表单格式,json 格式,xml 格式,binary 二进制字节流等等。

但是这只是通用用法,如果非要在 GET 请求中添加 body(不建议),或者 POST 请求中把参数拼接在 URL 中,其实技术上是可以实现的。

  • 请求参数长度与安全性

GET 请求携带参数需要拼接在 URL 中,所以请求参数的大小会受到浏览器对 URL 长度的限制,一般来说是 2k 字节。

而 POST 请求参数放在 body 中,所以长度没有限制。

  • 安全性

还是因为 GET 的请求参数拼接在 URL 中,直接在浏览器地址栏中就能看到,所以安全性要低一些。

POST 的请求参数在 body 中,需要懂一点技术,比如会抓包才能看到参数是什么,所以安全性相对要高一些。

  • RestFul 规范

GET 和 POST 的实际使用场景也不同。

现在大部分的接口会遵循 RestFul 风格,这个风格规定好了行业通用的规范,在不同的场景去使用不同的请求方法。

比如无状态变化的建议使用 GET 请求,数据的写入与状态修改建议用 POST。

答案

总体来说 GET 和 POST 最重要的区别就是这几项:

  • HTTP 请求中的 method 字段不同
  • GET 请求参数拼接在 URL 中,有长度限制,安全性相对较低
  • POST 请求参数放在 body 中,可以支持 formjsonxmlbinary 等各种数据格式,没有长度限制,安全性相对较高
  • RestFul 规范

    • 无状态变化的建议使用 GET
    • 数据的写入与状态修改建议用 POST