接口自动化测试概述

目录

1 接口自动化测试简介

1.1 什么是接口

1.2 什么是接口测试

1.3 为什么要做接口测试

1.4 什么是接口测试自动化

1.5 为什么要做接口测试自动化

2 接口自动化测试规范

2.1 文档准备

2.1.1 需求文档

2.1.2 接口文档

2.1.3 UI 交互图

2.1.4 数据表设计文档

2.2 明确接口自动化测试需要的功能

2.2.1 校验(断言)

2.2.2 数据隔离

2.2.3 数据传递

2.2.4 功能函数

2.2.5 可配置

2.2.6 日志

2.2.7 可视化报告

2.2.8 可持续集成

3 接口自动化测试流程

3.1 测试用例编写

3.2 准备测试数据

3.3 搭建测试环境

3.4 编写测试脚本

3.5 执行测试脚本

3.6 分析测试结果

3.7 定期执行测试

3.8 测试报告生成

3.9 维护和优化

4 接口自动化测试工具

4.1 Postman

4.2 JMeter

4.3 MeterSphere


1 接口自动化测试简介

        接口自动化测试是指通过编写脚本或使用自动化工具,对软件系统的接口进行测试的过程。接口测试是软件测试中的一种重要测试方法,主要用于验证系统组件之间的通信和数据交换是否正常。接口自动化测试可以提高测试效率和准确性,减少人工测试的工作量。通过自动化脚本执行接口测试,可以快速发现接口中的问题,并及时进行修复,确保系统的稳定性和可靠性。

1.1 什么是接口

        官方点说,是计算机系统中两个独立的部件进行信息交换的共享边界。通俗点说,就是服务端对外提供数据服务最常用的信息交换方式。提供数据服务的服务端是个可大可小的机构,做的事大多不止一件,它做了这么多事,最终的目标是给 APP 或其它调用方使用,于是服务端就派出了几个代表,比如 API 1 负责提供用户信息,API 2 负责提供设备信息,API 3 负责提供播放的音频信息等等。同时,服务端规定好跟 API 1 通讯的接头暗号是 param1,param2…,跟 API 2 通讯的接头暗号是 param3,param4…,而 params 就是接口参数,就是用来告诉服务端你要什么服务,具体的要求是什么。接口一般由三个部分组成:协议、地址及参数。

1.2 什么是接口测试

        一般讲的接口测试指的是对某个给定接口进行功能测试,输入不同的参数时,接口返回值是否正确。下图是经典的测试金字塔模型。

        在这个模型中,越往下比例会占的越高,也就是说在一个产品测试中,单元测试比例是最高的,依次是接口测试和UI自动化测试,最顶端是人工测试部分。服务端接口测试在中部,承上启下,由此可见其重要性。

1.3 为什么要做接口测试

        一般做接口测试有如下原因:

  • 接口是服务端对外提供数据服务最常用的信息交换方式,接口大部分内容都是数据,通过数据对比我们可以推测到系统的逻辑,测接口其实也就是测逻辑。

  • 接口测试相对容易实现自动化,也容易实现持续集成,且相对 UI 自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。

1.4 什么是接口测试自动化

        接口测试自动化,简单来讲就是功能测试用例脚本化,然后执行脚本,产生一份可视化测试报告。

1.5 为什么要做接口测试自动化

        不管什么样的测试方式,都是为了验证功能与发现 bug。那为什么要做接口测试自动化呢?一句话概括就是是为了节省人力成本。具体来说,包括以下几点:

  • 减轻自己工作量,把测试从枯燥的重复劳动的人工测试中解放出来;

  • 协助手工测试完成很难模拟或无法模拟的的工作;

  • 提高工作效率,比如测试环境的自动化编译、打包、部署、持续集成甚至持续交付等。

  • 协助定位问题,比如接口层发现问题了,可以通过添加的 traceID 定位到日志错误或错误代码行,

  • 尽早发现 Bug,自动通知测试人员。一旦发现问题,立即通知测试人员,快速高效

2 接口自动化测试规范

2.1 文档准备

        磨刀不误砍柴工,准备好分详细的接口相关文档能够帮助后续接口自动化测试工作的高效展开。相关文档包括但不限于以下内容:

2.1.1 需求文档

        明确定义:接口背后的业务场景,即该接口是干什么用的,用到哪里,每次调用会发生什么等;

2.1.2 接口文档

        明确定义:接口名,各个入参值,各个返回值,和其他相关信息;

2.1.3 UI 交互图

        明确定义:各单页面需展示的数据;页面之间的交互等;

2.1.4 数据表设计文档

        明确定义:表字段规则、表 N 多 N 关系(一对一、一对多、多对多)等;

务必和相关需求方确认好文档中的信息是可靠且最新的,只有依赖可靠的文档才能设计出正确详尽的接口用例,才能得到最正确的结果。

2.2 明确接口自动化测试需要的功能

2.2.1 校验(断言)

        测试断言是自动化测试中的测试通过条件,用于判断测试用例是否符合预期。所以支持对返回值校验是一个必须的功能。

2.2.2 数据隔离

        数据隔离就是指具体的请求接口、参数、校验等数据做到与代码相隔离,便于维护,一旦需要调整接口用例、新增接口用例时可很快速的找到位置。隔离的另一个好处就是可复用,框架可以推广给其他团队,使用者可以使用相同的代码,只需要根据要求填写各自用例即可测试起来。

2.2.3 数据传递

        做到数据隔离可维护后,数据传递是另外一个更重要的需求。接口测试时,首先我们会实现单接口解耦,后续按照业务场景组合多个接口。而数据传递是则是组合多个接口的必要条件,它让接口用例之间可以做到向下传参。举个例子,我们通过设备信息查询接口查询到当前天猫精灵音箱的设备信息,该接口会返回一个 UUID,接下来我们要通过用户信息查询接口去查询当前设备绑定的用户信息,此时第二个接口的请求数据是需要从第一个接口用例中的返回中提取的。

2.2.4 功能函数

        实际的业务场景测试会需要各种辅助功能的支持,比如随机生成时间戳,请求 ID,随机的手机号码或位置信息等等,此时我们就需要代码可以支持做到识别对应关键字时可以执行对应的功能函数进行填充。

2.2.5 可配置

        目前测试环境包括但不限于日常、预发一、预发二、线上等等,因此用例不单单只能在一个环境上执行,需要同一份接口用例可以在日常、预发、线上等多个环境都可以执行。所以框架需要做到可配置,便于切换,调用不同的配置文件可以在不同的环境执行。

2.2.6 日志

        日志包含执行的具体执行接口、请求方式、请求参数、返回值、校验接口、请求时间、耗时等关键信息,日志的好处一来是可以便于在新增用例有问题时快速定位出哪里填写有问题,二来是发现 bug 时方便向开发反馈提供数据,开发可以从触发时间以及参数等信息快速定位到问题所在。

2.2.7 可视化报告

        用例执行后,就是到了向团队展示结果的时候了,一个可视化的报告可以便于团队成员了解到每次自动化接口用例执行的成功数、失败数等数据。

2.2.8 可持续集成

        对于已经有测试用例并测试完成的接口,我们希望能够形成回归用例,在下一个版本迭代或上线之前,通过已有用例进行一个回归测试,确保新上线的功能不影响已有功能。因此,这就需要接口自动化测试是可持续集成的而不是一次性的。

3 接口自动化测试流程

        大多数公司的接口自动化,主要是将系统的主要业务流程转换成自动化脚本,它的主要流程如下:

3.1 测试用例编写

        根据接口的需求和功能,编写相应的测试用例。测试用例应包括正常情况下的测试、异常情况下的测试、边界情况下的测试等。

3.2 准备测试数据

        根据测试用例的要求,准备相应的测试数据。数据可以通过手动输入、数据库查询、文件导入等方式进行准备。

3.3 搭建测试环境

        搭建适合接口自动化测试的测试环境,包括测试服务器、数据库、接口调用工具等。

3.4 编写测试脚本

        使用适合的编程语言和工具,编写接口自动化测试脚本。脚本应包括发送接口请求、接收和解析接口响应、校验接口返回结果等步骤。

3.5 执行测试脚本

        执行编写好的测试脚本,发送接口请求,并对接口的响应结果进行校验。记录测试结果和日志。

3.6 分析测试结果

        根据测试脚本的执行结果和日志,分析接口的测试结果。如果有失败的测试用例,需要进行排查和修复。

3.7 定期执行测试

        根据项目需求,定期执行接口自动化测试,以保证接口的稳定性和功能的正确性。

3.8 测试报告生成

        根据测试结果,生成测试报告。报告应包括测试的概述、测试用例的执行情况、错误日志和建议等。

3.9 维护和优化

        根据接口的变更和项目需求,及时维护和优化接口自动化测试脚本,以保持测试的准确性和可靠性。

4 接口自动化测试工具

        接口自动化测试工具主要有Postman、JMeter、MeterSphere等,它们主要有以下特点:

4.1 Postman

        Postman 是一款支持http协议的接口调试与测试工具,其主要特点就是功能强大,使用简单且易用性好,主要用于接口测试。

  • 优点:

    • 用户友好的界面和易于使用,无需编程知识即可进行接口测试和调试。

    • 支持多种HTTP请求和丰富的断言机制,可以进行全面的接口验证。

    • 提供了脚本编写和执行的能力,可以进行自动化的接口测试和流程控制。

    • 支持团队协作和版本控制,方便多人协同开发和测试。

    • 可以生成详细的测试报告和自动生成API文档,便于测试结果的分析和文档化工作。

  • 缺点:

    • Postman在处理大量请求时可能性能较低,特别是在负载较高的情况下。

    • 高级功能和定制化选项相对较少,对于复杂的测试场景可能不够灵活和扩展。

    • Postman的某些高级功能和团队协作功能可能需要付费订阅才能使用。

4.2 JMeter

        JMeter是一个纯Java编写的开源软件,主要用于进行性能测试功能测试。它支持测试的应用/服务/协议包括Web (HTTP, HTTPS)、SOAP/REST Webservices、FTP、Database via JDBC等。我们最常使用的是HTTP和HTTPS协议。

  • 优点

    • 不依赖于界面,如果服务正常启动,传递参数明确就可以添加测试用例,执行测试;

    • 测试脚本不需要编程,熟悉http请求,熟悉业务流程,就可以根据页面中input对象来编写测试用例。

    • 测试脚本维护方便,可以将测试脚本复制,并且可以将某一部分单独保存。

    • 利用badboy录制测试脚本,可以快速的形成测试脚本

    • Jmeter断言可以验证代码中是否有需要得到的值

    • 使用参数化以及Jmeter提供的函数功能,可以快速完成测试数据的添加修改等

  • 缺点

    • 使用Jmeter无法验证JS程序,也无法验证页面所以需要手工去验证。

    • Jmeter的断言功能不是很强大,需要人工测试,人工确认。

    • Jmeter脚本的维护需要保存为本地文件,而每个脚本文件只能保存一个测试用例,不利于脚本的维护。

    • Jmeter的测试脚本的管理不可以纳入版本控制。

4.3 MeterSphere

        是一站式的开源持续测试平台,遵循 GPL v3 开源许可协议,涵盖测试管理、接口测试、UI 测试和性能测试、团队协作等功能

  • 优点:

    • 开源免费:MeterSphere是一个开源工具,可以免费使用,没有任何额外的费用。

    • 功能全面:MeterSphere提供了全面的测试管理功能,可以满足不同层次和类型的测试需求。

    • 分布式测试支持:MeterSphere支持分布式测试,可以通过多个节点进行并发测试,提高测试效率。

    • 插件扩展性:MeterSphere提供了丰富的插件和扩展接口,可以方便地扩展其功能,满足特定的测试需求。

  • 缺点:

    • 学习曲线较陡峭:对于没有经验的用户来说,MeterSphere的学习曲线可能较陡峭,需要花费一定的时间和精力去学习和掌握其使用方法。

    • 对于大规模测试的支持有限:MeterSphere在处理大规模测试时可能性能有限,可能需要使用其他工具或进行优化来满足需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值