返回介绍

接口自动化测试最佳实践

发布于 2024-05-30 23:00:45 字数 48628 浏览 0 评论 0 收藏 0

1. 前言

本文介绍了使用阿里云云效-专有云版本的接口自动化产品如何实现软件产品的接口自动化测试。本文以一个接口为例,提供从环境准备、接口用例编写、用例执行及结果分析、到用例维护的全流程参考示例,供包括开发、测试在内的客户参考使用。


2. 最佳实践概述

互联网局势下,产品的迭代速度要求越来越高。以往接口测试都需要写测试代码,一个被测接口要写几个甚至十几个测试函数(方法),工作重复,效率不高,也易出错。被测接口修改之后需要全部修改相关的接口测试代码,维护成本高。需要更简捷、方便、高效率、能脱离代码编写、易维护的接口测试工具,提升接口测试效率。另外,开发在调试接口时,也需要有更方便的接口调试工具,以界面化的方式随时调用接口,查看接口返回,也更有利于前后端开发的沟通。云效平台的接口自动化(SAT)应运而生。

【适用场景】

  • 传统的瀑布研发模式
  • 基于微服务的敏捷研发模式
  • 远程多地协同的研发模式

方案架构

  • 设计自动化测试用例
  • 接口自动化测试环境准备
  • 编写接口自动化测试脚本
  • 执行接口自动化测试脚本
  • 分析接口自动化执行结果
  • 维护接口自动化测试脚本

sat方案优势

  • 支持应用多接口类型测试覆盖。
  • 无需安装复杂 IDE,可在线编辑、调试和维护。
  • 提供云端脚本执行,可支撑业务持续集成、业务回归等。

3. 前置条件

在执行本文操作前,请完成以下准备工作:

  • 所在公司已购买并开通云效环境管理、接口自动化和数据银行产品模块。
  • 已注册云效账号并完成认证,可以登录云效平台。
  • 完成云效产品培训并通过相关考试。
  • 加入云效的钉钉答疑群(联系本公司云效接口负责人入群)。
  • 产品需求相关方(业务方、PD、UED、PM、技术架构、开发、测试、验收等)已经通过钉钉或企业微信建立实时通信群。
  • 分析系统整体架构和数据协议,确认在云效使用哪种类型的接口做测试,一般来说均选择应用层的接口。
  • 熟悉所测系统的业务功能。接口测试的目的是,保证业务功能正确性和稳定性。因此,在进行接口测试前,一定要熟悉每个服务接口的业务逻辑,如功能、业务场景以及异常场景。只有足够了解业务功能和业务场景,才可能设计出好的接口用例,进而保证产品的质量。根据需求文档、接口时序图、成果物以及和产品、开发沟通学习,熟悉每个接口实现的功能、覆盖的业务场景。为了更深入的熟悉业务功能,可采取“各个击破”的方式,即让我们的测试人员负责不通的服务。
  • 熟悉接口文档,了解接口文档中的入参和出参所代表的业务含义以及类型、取值范围等。
  • 熟悉所测系统的数据结构和数据关联关系,熟悉每个表和表中的每个字段。在进行自动化测试时,为了保证自动化测试可以稳定、可重复,且独立地执行,很多时候我们需要准备自动化测试数据。而最有效,也是最直接的办法就是,通过 sql 语句在数据库中直接准备数据。因此,一定要熟悉数据库。

4. 工具准备

  • 本方案使用 Chrome 浏览器,需提前准备。
  • 安装钉钉或企业微信。

5. 使用流程

5.1 设计自动化测试用例

背景说明】:自动化测试的核心是测试用例,测试用例的质量决定了自动化测试的质量。因此,在编写自动化脚本前要根据业务逻辑,如功能、业务场景以及异常场景来设计测试用例。下面以欠费缴电费业务中的下单接口为例进行说明,下单接口的入参有:

  1. 缴费金额
  2. 账户红包
  3. 账户积分
  4. 缴纳方式,包括:01:按关联户交费;02:批量交费
  5. 业务类型,包括:业务类型 "交电费"、"混合汽车交费"、"混合交费"
  6. 用户编号,根据用户编号来判读不同省份的下单

根据业务功能和异常场景有如下用例,其中蓝色为异常场景。 sat

5.2 测试环境准备

背景说明】:为了保证自动化测试的稳定性,降低自动化维护成本,一个稳定的自动化测试环境是必不可少的,云效的测试环境模块可帮助您高效地管理自动化测试环境。

操作步骤】:

  1. 选择自动化测试环境,然后点击申请按钮为所要测试的应用申请环境。sat
  2. 点击部署按钮,在自动化测试环境中部署所要测试的应用。sat
  3. 为接口自动化测试设置域名。 在测试环境中选择不同的自动化测试环境,然后,配置相同的域名(根据项目的实际情况来选择自动化测试环境,示例中的自动化测试环境是开发环境测试环境)。如下图所示,开发和测试环境的 IP 地址不同,但域名均为 sat.wsgw-cs.com。在编写自动化测试脚本时,接口地址便可以直接使用这个域名而不是 IP 地址。sat

    sat

5.3 编写自动化测试脚本

背景说明】:一个好的自动化测试用例具有自动化、独立性、可重复执行的特点:

  1. 自动化:执行过程必须完全自动化,无需人工干预。
  2. 独立性:为了保证自动化测试稳定可靠且便于维护,自动化测试用例之间避免互相调用,也不依赖执行的先后次序。
  3. 可重复执行:自动化用例是可以重复执行的,不能受到外界环境的影响。为了保证测试用例可重复执行,自动化测试数据必须是独立的。我们可以在用例初始化中采用不同的方式来准备测试数据。

下面就以用例 “缴费金额小于欠费金额,输入红包数,输入积分等于实际积分” 为例,来说明如何编写接口自动化测试脚本。

操作步骤】:

  1. 打开接口自动化页面选择接口协议类型。此处,我们将要测试 HTTP 类型的接口,因此选择 HTTP。sat

  2. 新增将要测试的应用。

    1)点击 “”,选择新增应用,进入打开应用管理页面。sat

    2)点击新增按钮并在新增应用对话框中输入应用名(应用需在配置管理模块中创建),负责人点击对话框中新增按钮,应用新增成功并显示在应用管理页面。sat

    sat

  3. 选择新增的应用。点击 “”,选择应用,打开选择应用窗口。sat

    在查询应用文本框中输入应用名称,应用出现后点击应用名称前的选择框。最后,点击确定按钮,选择的应用就会显示在页面上。sat

    sat

  4. 添加目录,用目录来组织接口用例,目录可以是一个业务模块。sat

  5. 新增服务(服务对应于接口)。点击添加服务,打开服务信息页面,输入相关信息。其中,服务名称可以定义为接口名称;接口地址需使用测试环境中定义好的域名而非 IP 地址;接口入参根据接口文档书写。sat

    sat

    sat

  6. 新增接口用例。 1)点击添加用例,用例信息页面打开。sat2)系统将上一步中输入的接口请求方式、接口地址、接口入参同步到新的用例中。输入用例名称,选择执行环境,输入用例描述。sat

  7. 用例初始化。自动化用例的一个重要的特点就是可重复执行。为了使用例可重复执行,就需要为自动化测试准备独立的数据:a. 准备独立的测试账号和测试数据;b. 在用例执行之前,通过不同的方式初始化用例所需的测试数据。

    1)点击常|高按钮切换到用例高级模式,选择用例初始化,打开用例初始化页面。sat

    2)参数化。如果某个数据在用例中多次出现,便可在静态参数中重将其参数化,使用方式为:#参数名#。在本例中,欠费金额、输入的红包数和输入的积分数多次出现。因此,将这些参数进行参数化。sat3)通过 DB 操作的方式准备测试数据。本例的前提条件是:用户处于欠费状态,且账号中要有红包和积分。因此,要在 4 个 DB 操作中通过 SQL 语句在数据库中更改用户的欠费状态以及欠费金额、更改红包数大于输入的红包数、更改积分数等于输入的积分数。

    4)首先,我们在公共设置中增加不同的测试环境的数据源。sat5)然后,再在接口自动化的 “数据初始化” 页面选择 DB 操作,选择在公共设置中增加的数据源。最后,输入 SQL 语句并且保存完成数据初始化的 DB 操作。sat

  8. 编辑接口用例入参,引用在用例初始化中定义的参数。sat

  9. 编写接口用例的出参验证。没有出参验证的用例是没有任何意义的。不合理的出参验证设置会影响自动化测试的质量。因此,断言要根据业务逻辑和测试场景来设置。sat云效中的断言即出参验证,点击增加断言按钮,根据接口文档输入相关信息。sat

5.4 执行自动化测试脚本

背景说明】:接口自动化脚本编写完成后,要在不同的自动化测试环境中多次执行,以发现一些隐藏的问题进而提高自动化脚本的稳定性。云效中支持多种执行方式:单用例执行、批量执行、定时执行和自动集成测试执行。在不同场景下,我们可以选择不同的执行方式:

  • 单用例执行和批量执行:适用于用例编写或为了验证功能是否正常时使用。
  • 可通过定时执行回归测试来保证某一个发布的质量。
  • 每次代码更改时,自动化触发集成自动化执行来保证每次更改不会引起业务功能的异常。

操作步骤】:

  1. 单用例执行。

    1)打开测试用例选择执行环境,点击接口执行按钮。sat

    2)在执行日志和执行信息中查看执行信息详情。sat

    sat

  2. 批量执行。

    1)点击应用名称,打开应用的接口用例列表。在最近执行结果列,可查看到所有的执行结果。sat

    2)鼠标移动到执行菜单上,点击下拉菜单中的选项进行批量用例执行。sat

    3)点击每个用例的执行结果便可看到执行结果详情。sat

    sat

  3. 定时执行。在项目测试中导入相关自动化用例,设置定时执行。sat

  4. 在配置管理中,当代码变更进入到集成中的集成自动化时,系统机会自动拉取和该应用相关的主干接口用例进行执行。sat

5.5 分析自动化脚本执行结果

背景说明】:要对每次执行失败的用例进行原因分析。若是环境、测试数据和断言的原因,要及时更改自动化用例。若是业务的问题,要及时和开发沟通修复问题。若测试用例经过多次执行,均执行成功,就可以将这个用例归档为主干用例。

操作步骤】:点击归档 > 归档为主干,将用例变为主干用例。 sat

5.6 维护接口自动化脚本

背景说明】:当不断维护自动化用例时,总会存在用例失败或者运行不稳定的情况。而这些用例若不及时发现和维护,就会变成僵尸用例。那么,自动化用例再多也就没有意义了。我们可通过度量手段,推进测试用例的持续改进和维护。 sat

sat

5.7 场景测试

背景说明】:当遇到以下 2 种情况时,可以采用场景测试来完成。

  1. 实现业务流接口层面的测试。
  2. 当一个接口的前置条件只能通过其他接口来完成时。

下面以一个简单的注册登录业务流为例,来介绍如何通过场景测试来完成业务流接口层面的测试。

接口说明】:注册接口执行后将会返回 userid,而 userid 是登录接口的入参之一。

  • 注册接口

    sat

  • 登录接口

    sat

操作步骤】:

  1. 创建场景。首先,创建一个场景来测试我们的业务流,并配置以下信息:

    • 成员:设置哪些人员可以看到该场景。
    • 关联应用:选取业务流相关的应用。
    • 触发集成:如果选择触发集成,那么当该场景相关的应用进行集成自动化时则会执行该场景。sat
  2. 拉取用例。从个人用例或主干用例中拉取该业务所需的接口组成场景接口流。在场景接口流中可以对用例接口进行以下操作:

    • 执行设置:设置接口用例执行前后的暂停时间。
    • 移除:从参数接口流中移除接口用例。
    • 调整顺序:根据接口调用的逻辑调整接口执行顺序。sat

    场景接口流中的接口用例与原接口用例的数据同步规则:

    • 当拉取用例时场景接口流自动同步原接口用例中的用例名称、接口地址、关联应用、接口负责任人、入参以及参数值,断言中的出参以及期望值等数据。原接口用例的入参同步到场景接口流中接口用例的入参,原接口用例的断言中使用的参数同步到场景接口流中接口用例的出参。
    • 原接口用例的用例名称、接口地址、接口负责人以及参数的变更会同步到场景接口流。sat
  3. 增加参数场景。参数场景可以是一个测试场景,根据业务在不同的参数场景中设置不同的入参值测试不同的场景。示例中,我们可以测试当密码为简单的字符或包含特殊字符时用户是否可以注册并且登录成功。点击新增参数场景增加不同的参数场景。

    场景接口流和参数场景的关系

    • 场景接口流是参数场景的模版,所有的参数场景都根据场景接口流生成。
    • 场景接口流中定义了所有的参数场景的接口调用逻辑。
    • 在不同的参数场景中设置不同的入参值和出参值来测试不同的业务场景。sat

    原接口用例,场景接口流与参数场景的数据同步规则:

    • 当参数场景创建时自动同步场景接口流中的所有数据,同时参数化用例的入参和出参以便在场景中接口用例之间进行传递。
    • 场景接口流中数据的变更同步到参数场景。
    • 原接口用例的用例名称、接口地址、接口负责人以及参数的变更(除参数值的变更)同步到参数场景中的接口用例。
    • 参数场景中参数值的变更不会同步到原用例和场景接口流的接口用例,参数值只在本场景中有效。sat
  4. 创建参数。当一个参数出现在多个接口的入参或出参时,我们就可以在场景的参数页面定义该参数。比如,示例中的 username 和 passwd 在两个接口的出参中都要进行断言,因此将这两个参数定义为场景的参数,场景中直接通过参数名称来获取值。sat 点击新增参数创建参数,按照指定的使用格式来调用参数。sat

  5. 编辑接口的入参和出参

    a. 编辑接口的入参或出参,使用我们在上一步中定义的参数

    1)点击注册接口入参的编辑按钮,将入参中 username 的值设置成 {(username)},passwd 的值设置成 [(password)] 点击保存完成参数编辑。场景执行时自动获取这些参数的值。sat

    sat2)点击编辑按钮将登录接口中出参 username 的期望值设置成 [(username)],passwd 设置成 [(password)]。sat

    b. 根据接口调用逻辑,编辑接口入参值调用上一个接口的出参

    示例中登录接口的入参中 userid 就是注册接口的出参中的 userid,因此编辑登录接口的入参将 userid 的值设置为注册接口出参中 userid 所对应的参数名。sat

  6. 执行参数场景

    1)点击场景执行按钮并且选择执行环境执行场景接口流。sat 2)最近执行结果显示每一个接口的执行状态。如果某一个接口执行失败了,场景执行就会停止。日志区会显示执行日志,也可以点击查看日志查看执行详情。sat

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文