🌈赏金任务 - 为什么要做接口测试?

赏金任务每周更新,请持续关注哦 :love_letter:

题目

  • 模拟面试场景,面试官提问以下问题,你如何回答。
  • 为什么要做接口测试?

参与方式

  • 本帖下方回复你的答案即可

赏金

  • 100元京东购物卡

活动时间

  • 2023年3月6日 - 2023年3月12日

本周赏金任务汇总:🌈 赏金任务发布 2023-03-06

本问题参与赏金活动,详情点击 :rainbow: 赏金活动上线啦 丨做赏金任务挑战千元奖金 查看活动介绍

如果我在面试过程中,我会从下面三个点来回答 :point_down:
1.为什么要进行接口测试?
a.首先,接口测试可以帮我们更早的发现潜在问题,越早发现BUG那修复的成本就越低价值也就越大,因为系统功能测试必须要等到前后端开发联调通过、提供可以测试的界面后才能进行。然而接口测试只要服务端把接口定义好并把功能实现出来就可以介入接口测试了。也就是说接口测试可以将我们的测试工作前置、更早的介入测试、发现问题并解决问题、使得留到功能测试阶段需要被修复的BUG数量减少、从而缩短整个项目的上线时间
b.从系统的安全性和稳定性角度来讲、接口测试可以发现更多前端页面测试发现不了的问题,比如举个例子,有一个订单支付接口,我们无法从前端页面直接修改这个订单的金额,但是可以通过抓包、抓取到接口以后直接修改接口请求的数据,例如金额字段,将单价为100元的商品直接修改成1元、然后发请求,如果服务端没有对金额限制的话,那会造成一些不可挽回的经济损失。

2.接口测试有哪些优点和缺点?
a.优点:接口测试更容易实现自动化持续集成,因为接口相对于UI来讲,它会更加稳定些,执行自动化测试的维护所消耗的时间和人力成本要更小。
b.缺点:当然接口测试也有它小小的缺点,不能完全取代系统功能测试,因为接口测试无法覆盖UI界面的展示逻辑以及用户的操作行为、操作顺序及操作体验。

3. 你一般在什么情况下进行接口测试?
a.当测试时间紧张,可以提前测试接口,让我们测试可以更早的投入项目的测试中去,帮助开发人员来发现问题,从而缩短我们项目的交互时间,那当系统需要和外部系统进行数据交互的时候,这时没有外部系统的使用权限或外部系统还未研发出来,我们可以通过调用接口来造数据。
b.举个例子,比如说我们系统有一个发送消息的功能,消息的来源是外部系统、但是还未研发出来,我们需要从哪里弄这个消息来测试呢?那这时候可以调用自己的这样一个接口、传入请求参数进行接口功能验证

做接口测试主要分为一下四点原因

  1. 防止集成问题:在软件开发中,不同的模块通常由不同的开发人员开发,这些模块必须在一起协作。如果接口不正确,则模块之间的集成会出现问题。通过进行接口测试,可以及早发现和解决这些问题,以确保应用程序的不同部分能够正确地协作。
  2. 确保质量:接口是应用程序中最重要的部分之一,因为它们负责将不同的组件连接起来。如果接口有问题,则整个应用程序都可能受到影响。通过进行接口测试,可以确保接口质量,减少应用程序中的错误和故障。
  3. 提高可维护性:在应用程序的生命周期内,可能需要对其进行更改和更新。如果接口测试已经完成,则可以确保在进行更改和更新时不会对现有接口造成负面影响。这将使维护应用程序更加容易。
  4. 降低成本:通过在开发过程中发现和解决接口问题,可以避免在产品发布后花费大量时间和金钱来修复错误。
    所以接口测试是确保应用程序质量和可靠性的重要组成部分,它有助于提高开发效率、降低成本,并确保应用程序的稳定性和可维护性。

每次学委回答的都好全面 :clap:

1、前端限制,只能从后台调用:部分场景前端会做限制,比如金额输入,需要验证接口传参是否符合实际需求;模拟异常场景,验证系统的健壮性
2、利于做接口自动化,减少手工回归成本:会有些IT优化升级几乎都是后端修改,如JAR包升级等,不涉及业务流程修改,只需要看接口有没有通,可以使用接口自动化节约回归成本人力;回归时候,无法做到全局案例覆盖,可以跑接口用例快速得到回归结果

一、接口测试之底层性
接口测试比传统的UI测试更加的底层,可以更早的介入测试,而且做接口测试可以发现更多在界面操作发现不了的bug,比如可以检验接口是否按照约定返回响应,还可以修改接口请求参数,突破前端界面的输入限制,检验系统的异常处理能力,例如接口边界值处理是否正确;输入异常至接口会不会抛异常,输入超参数或多或少 接口会不会抛异常等等。越接近底层的bug,影响用户范围越广
二、接口测试之安全性
接口测试还可以检验系统的安全性,例如有咩有明文传输;返回的结果是否包含敏感信息;有咩有对用户身份信息的校验;有没有对恶意的请求做拦截等等;

三、接口测试之性能性
通过接口测试的并发场景,检验系统性能和稳定性,例如接口并发多条相同操作,响应时间会不会过长,接口压测有没有出现瓶颈等等
四、接口测试使得质量得到保证
通过接口测试 可以使得接口质量得到保证,这样前端也会更加稳定,功能测试专注发现前端bug就行啦
五、接口测试提高效率
现在有很多系统,都是前后端分离的,前后端的工作进度不一样,测试为了尽早的介入测试,今早的发现问题,所以可以在前端界面,在没有开发完成的情况下,只要后端接口开发完了,测试就可以介入测试了 ,进行测试左移,再结合自动化测试的技术,可以很大程度的提高测试工作效率;接口测试可以更早的发现bug,越早发现bug,成本越低,价值也就越大
六、接口测试之稳定性
接口测试更容易实现自动化的持续集成,因为接口相对于ui来说,也会更加的稳定,对于自动化的维护,所消耗的时间和人力成本会更加小
七、接口测试之回归、造数
当系统越来越庞大的时候,新增功能是否会对现有系统有影响,如果用人工去回归,消耗大量的人力成本和时间,通过接口测试自动化可以有利于提高回归的效率,进行质量的保证;同时接口自动化的在造数方面有优势,例如在一个贷款系统中,要进行还款,需要进行大量的流程,首先要通过授信审批、用信审批生成相应的借据后,才能进行还款,如果单纯的依靠手工造数,那么效率会很低,如果有自动化,可以大量减少这些繁琐且没有技术含量的工作,更加专注于本次的改动范围

自动化测试的可靠性:
接口测试是自动化测试的重要组成部分,通过对接口进行自动化测试,可以大大提高测试的可靠性和精度。相比手工测试,自动化测试可以在短时间内进行大量的测试,并且可以重复执行同样的测试用例,从而更容易发现潜在的问题。

风险控制:
接口是系统各个模块之间交互的纽带,如果接口存在问题,可能会导致系统整体的不稳定或者崩溃。通过对接口进行测试,可以及时发现并修复潜在的问题,从而提高系统的稳定性和可靠性,降低系统出现故障的风险。

提高效率:
通过接口测试,可以在开发过程中及时发现潜在的问题,并及时修复,从而避免了后期修复问题的成本和时间。此外,对于一些重要的业务场景,可以通过接口自动化测试来进行持续集成和持续交付,从而提高整体的开发效率。

提高测试覆盖率:
接口测试是测试覆盖率中重要的一个方面,它可以测试系统的各个接口是否正常工作,从而提高测试覆盖率。通过接口测试,可以发现系统在不同场景下的表现,从而全面了解系统的工作状态,为后续的测试提供更加全面的数据支持。

实现多样化的测试:
通过对接口进行测试,可以实现多样化的测试,包括性能测试、安全测试、兼容性测试、功能测试等等。这些测试都是非常重要的,可以从不同的角度对系统进行全面的测试,发现系统存在的问题,并及时进行修复。

什么是接口测试

接口测试是一种软件测试方法,主要是测试系统中不同模块之间的接口是否正确地工作、数据是否传输正确、响应是否符合预期等。

系统由许多不同的模块组成,每个模块都有自己的输入和输出。这些模块之间需要进行通信和数据传输,以便系统能够正常工作。接口测试通常用于确保不同模块之间的隔离和正确的数据传输,包括在网络应用程序中,其目的是确保不同的网络应用程序服务之间的接口可靠性。

接口测试主要集中在系统的输入和输出,以及与其他应用程序、网络协议和硬件设备的集成。这种测试方法通常需要对数据格式、数据量、请求类型、响应时间、错误代码等进行验证,以确定接口是否符合设计要求。

接口测试在什么时候做比较好?

接口测试应该在软件开发生命周期的早期阶段进行。特别是在开发阶段的后期,在开发人员完成各个模块并集成到整个系统之前,接口测试应当优先考虑。这有助于及早发现可能存在的兼容性和集成性问题。

此外,在每个版本的发布前,也需要进行接口测试,以确保新版本的系统与现有的系统和第三方应用程序之间的集成没有问题。当然,在软件出现故障时,也需要针对接口进行测试,以确定问题所在,以及建立与其他系统的连接是否存在故障。因此,接口测试不仅是开发阶段必不可少的一项工作,也是软件维护与升级过程中必不可少的一项工作。

接口测试的优势和缺点

以下是接口测试的好处和缺点:

优点

好处 说明
发现缺陷 接口测试可以发现系统中的缺陷并确定缺陷的位置。
提高软件质量 通过测试接口,可以改善软件的质量,并确保系统各个组件的可靠性。
降低测试成本 接口测试可以帮助测试人员更快速地发现和修复缺陷,从而降低测试成本。
自动化测试 使用自动化测试工具执行接口测试可以提高测试效率,更快速地执行测试,并减少测试成本。
提高用户体验 如果接口测试能够确保系统中的主要组件之间的连接和通信是正确的,最终用户将更有可能获得无故障的正常运行的系统和更好的用户体验。
提供兼容性和可扩展性 接口测试可以测试系统与其他应用程序、网络协议和硬件设备等的集成,从而确保系统兼容性和可扩展性。

需要注意的是,好处和缺点的重要性随着具体情况而变化,具体评估要根据实际测试对象的情况来确定。总而言之,接口测试是一个必不可少的测试方法,可以确保不同组件之间的连接和通信正确且可靠,提高软件的质量并减少缺陷。

缺点

缺点 说明
费时费力 对于接口测试而言,需要对系统的许多部分进行测试,可能需要投入大量的时间和资源来开发和执行测试。
难以调试 接口测试中的缺陷不易定位,因为它们可能涉及许多组件和数据传输过程,增加了测试调试的难度。
复杂性高 接口测试中需要考虑许多因素,包括不同组件之间的交互、数据格式和传输方式等,会增加测试的复杂性。
无法完全覆盖 接口测试无法覆盖系统的所有部分,因此可能会留下缺陷点。

例子

假设我们正在测试一个在线商店系统,该系统包含一个“添加商品到购物车”的功能。在此情境下,添加商品到购物车的功能是由客户端与服务器之间的接口来实现的。我们需要测试这个接口是否正确地将商品添加到购物车,以及是否返回适当的响应。

对于这个任务,我们需要编写一个脚本或使用自动化测试工具来模拟客户端与服务器之间的交互。我们可以发送模拟商品信息到服务器,然后验证服务器是否返回正确的响应代码。除此之外,我们还需要确保在不同的浏览器和操作系统上进行测试,以检查该接口是否具有足够的兼容性和可靠性。

总之,接口测试是为了检查系统中不同部分之间的通信是否正常。在上述例子中,我们需要确保服务器和客户端之间的接口能够正确地工作,从而实现添加商品到购物车的功能。