写点什么

利用 Apipost 轻松实现用户充值系统的 API 自动化测试

作者:数据追梦人
  • 2025-04-17
    广东
  • 本文字数:3859 字

    阅读完需:约 13 分钟

在现代软件开发中,API(应用程序编程接口)作为连接不同系统和模块的关键组件,其重要性日益凸显。随着软件应用的互联性不断增强,API 的数量和复杂度也在不断增加。传统的 API 测试方法面临着诸多挑战:


1.手动测试效率低下:手动测试 API 接口耗时耗力,难以覆盖所有可能的测试场景,容易遗漏潜在的缺陷。


2.数据一致性问题:研发和测试人员使用不同的数据源进行操作,容易导致数据不一致,影响测试结果的准确性。


3.测试覆盖率不足:手动测试难以实现对大量 API 的全面测试,导致测试覆盖率不足,无法充分验证 API 的稳定性和可靠性。


4.难以融入自动化工作流:传统的测试工具难以与持续集成/持续部署(CI/CD)自动化工作流无缝对接,无法实现自动化的回归测试。


一、Apipost 自动化测试概况使用 Apipost 可视化的 API 自动化测试功能,研发人员在「API 管理」里设计、调试、维护接口文档;测试人员无需编写代码,在「自动化测试」创建自动化测试脚本时可以直接导入接口,与研发人员基于同一数据源进行自动化测试,且能生成功能全面清晰的测试报告。


导入后可以在接口编辑页面选择双向同步或手动同步数据。


勾选双向同步后无论在自动化测试还是 API 管理中修改接口另一方都会自动同步修改内容;如不勾选,在 API 管理中修改后需要手动获取最新数据。


1、控制器


Apipost 提供了多种控制器用以覆盖多种测试场景:


条件控制器:可以配置条件决定是否调用接口;


事务控制器:适用于需要使用测试数据的某个接口;


次数控制器:适用于场景中需要多次调用的接口;


forEach 控制器:适用于循环获取某个接口中的变量值的场景;


while 循环控制器:循环调用某个接口直至达到设置的条件;


等待控制器:为步骤之间添加睡眠时间。


2、核心优势


零代码:拖拽式编排,对新手友好;


全场景覆盖:接口测试、性能压测、数据驱动一应俱全;


CI/CD 集成:一键生成 CLI 命令,无缝对接 Jenkins、GitLab!


二、快速上手 1、新建测试用例


打开 Apipost,点击「新建」,给测试任务起个名字,如「用户登录接口测试」。


2、编排测试用例


在测试用例中,可以直接把接口拖拽进来,比如:先添加「用户登录接口」,再添加「获取用户信息接口」。


3、设置测试条件


测试环境:从下拉菜单中选择你的测试环境(比如开发环境、预发布环境)。


执行轮次:设置跑多少次测试,比如:跑 5 次验证稳定性。


间隔时长:每次测试之间隔多久,比如:设置为 3 秒。


4、生成测试报告


点击「保存并执行」,Apipost 会自动生成一份详细的测试报告,包括接口响应时间、断言结果、失败原因等。


三、使用测试数据(一)、测试数据的创建


1、上传测试数据文件


打开 Apipost,进入测试用例编辑页面,点击左侧的「测试数据」。


点击「新建测试数据」,选择「上传文件」,支持 CSV 和 TXT 格式。


示例:准备一个 CSV 文件,包含用户登录所需的usernamepassword字段。


username,passwordtest01@apipost.cn,123456test02@apipost.cn,789012


上传后,Apipost 会自动解析文件内容,可以在右侧预览数据。


2、环境隔离:不同环境不同数据


在 Apipost 中,支持为每个环境单独配置测试数据。例如:


开发环境使用 local_users.csv


生产环境使用 prod_users.csv


切换环境时,系统会自动识别对应环境的测试数据。


(二)、测试数据的使用


1、参数化接口请求


编辑接口时,将请求参数设置为变量,例如{{username}}{{password}}


在测试条件中选择刚创建的测试数据,Apipost 会自动将数据填充到接口中。


2、循环控制器与测试数据的结合


添加「循环控制器」,选择「完成所有测试数据的迭代」模式。


设置循环间隔为 1 秒,确保每次请求之间有足够的时间。


在循环体内调用接口,使用{{username}}{{password}}引用数据。


3、动态数据提取与再利用


如果接口返回的数据是数组格式(如用户列表),可以通过 JSONPath


{"code":200,"success":true,"msg":"Data generated successfully","timestamp":"2023-09-20T14:30:00Z","data":[{"id":"e3f5a7b1-9c2d-4f8a-b6c0-1d8e9f2a7b3c","username":"alice_m2023","password":"Tp9@xQvL!","created_at":"2023-09-20T14:00:00Z"},{"id":"a2b4c6d8-e0f1-4a3b-9c5d-7e9f1a2b3c4d","username":"maxwell_7","password":"8nG#r2sKd","created_at":"2023-09-20T14:05:00Z"},{"id":"5d7f9a1b-3c8e-4a2d-9b0f-6e1a3b5c7d9e","username":"zara.frost","password":"qW6$bY9pA","created_at":"2023-09-20T14:10:00Z"},{"id":"8e1a3b5c-7d9e-4f2a-b6c0-9d8e7f1a2b3c","username":"t_robot92","password":"Lm3^cF8zN","created_at":"2023-09-20T14:15:00Z"},{"id":"1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d","username":"kira_nexus","password":"R@4vP7hXy","created_at":"2023-09-20T14:20:00Z"}]}


使用$.data提取数组。


然后在后续接口中通过使用{{username}} {{password}}引用数据。


四、性能测试 Apipost 的性能测试功能能帮我们快速定位。


(一)、固定模式压测


设置并发数为 100,模拟 100 个用户同时登录。


查看压测报告中的「平均响应时间」和「失败率」,判断接口是否能扛住高并发。


(二)、爬坡模式压测


从 10 个并发开始,逐步增加到 100 个并发,观察接口性能的变化趋势。


如果响应时间突然飙升,说明接口在某个并发点出现了性能问题。


五.CI/CD:从安装到集成(一)、Apipost CLI 工具


1、安装 CLI 工具


打开终端,运行以下命令安装 Apipost CLI:


npm install -g apipost-cli-pro


如果你之前安装过旧版本的 Apipost-cli,请先卸载:


npm uninstall -g apipost-cli


2、生成 CICD 命令


进入测试用例页面。


点击「持续集成」,新建--Apipost Cli,系统会自动生成一个唯一的运行链接和 Token。


复制生成的命令,例如:


apipost run"https://open.apipost.net/open/ci/automated_testing?ci_id=xxx&token=xxx"-r html


(二)、集成到 CI/CD 流程


1、Jenkins 集成


在 Jenkins 项目配置中,添加一个新的「执行 shell」步骤。


粘贴刚才生成的 CI/CD 命令,确保在代码提交后自动触发测试。


示例配置:


pipeline {agent anytools {nodejs "node16.14"} //替换替换服务器支持的 node 版本。node 版本>16stages {stage('Install Apipost CLI') {steps {sh 'npm install -g apipost-cli'}}stage('Running Test Scenario') {steps {sh 'apipost run "https://open.apipost.net/open/ci/automated_testing?ci_id=xxx&token=xxx" -r html'}}}}


2、GitHub Actions 集成


在项目根目录下创建.github/workflows/test.yml文件。


添加以下内容:


name: Automated API Testson: [push, pull_request]jobs:build: runs-on: ubuntu-lateststeps:


  • uses: actions/checkout@v3

  • name: Setup Node.js environmentuses: actions/setup-node@v2with: node-version: '14'

  • name: Install Apipost CLIrun: npm install -g apipost-cli

  • name: Running Test Scenariorun: apipost run "https://open.apipost.net/open/ci/automated_testing?ci_id=xxx&token=xxx" -r html


六.实战:用户充值系统查询的 API 自动化测试场景描述


假设我们有一个用户管理系统,包含以下四个接口:


  1. 用户注册接口:允许新用户注册。

  2. 用户登录接口:验证用户凭据并返回认证 token。

  3. 用户充值接口:允许用户为账户充值。

  4. 查询账户信息接口:查询用户的账户余额和充值历史。


我们将使用 Apipost 对这些接口进行自动化测试,确保系统的稳定性和可靠性。


自动化测试流程设计


(一)、创建测试用例


打开 Apipost,点击「新建测试用例」,给测试任务起个名字,比如「用户完整流程测试」。


(二)、添加接口并编排顺序


按照以下顺序将接口拖拽到测试用例中:


  1. 用户注册接口;

  2. 用户登录接口;

  3. 用户充值接口;

  4. 查询账户信息接口。


(三)、设置请求参数和动态数据提取


1、用户注册接口:


请求参数:


{"username": "test_user","email": "test_user_@example.com","password": "Test@123"}


断言:


响应状态码为 200。


响应体中包含"status": "success"。


提取 userId 并存储为全局变量.


2、用户登录接口


请求参数:


{"username": "test_user","password": "Test@123"}


断言:


响应状态码为 200。


响应体中包含"token"字段。


提取 token 并存储为全局变量。


3、用户充值接口:


请求头:


Authorization: Bearer {{token}}


请求参数:


{"userId": "{{userId}}","amount": 100.00,"currency": "CNY"}


断言:


响应状态码为 200。


响应体中包含"transactionId"字段。


4、查询账户信息接口:


请求头:


Authorization: Bearer {{token}}


查询参数


userId={{userId}}


断言:


响应状态码为 200。


充值金额是否为 100。


4、设置测试条件


测试环境:选择你的测试环境(如开发环境)。


执行轮次:设置为 1 次(完整流程测试)。


间隔时长:设置为 2 秒(确保接口响应稳定)。


5、生成测试报告


点击「保存并执行」,Apipost 会自动生成一份详细的测试报告,包括接口响应时间、断言结果、失败原因等。


动态数据提取与再利用


在测试过程中,我们使用了动态数据提取功能,将注册接口返回的userId和登录接口返回的token存储为全局变量,并在后续接口中引用这些变量。这种方式不仅减少了重复输入数据的工作量,还确保了测试数据的一致性和准确性。


性能测试


为了验证接口在高并发场景下的性能,我们可以在登录接口上进行性能测试:


  1. 固定模式压测:设置并发数为 100,模拟 100 个用户同时登录。

  2. 爬坡模式压测:从 10 个并发开始,逐步增加到 100 个并发,观察接口性能的变化趋势。


CI/CD 集成


将测试用例集成到 CI/CD 流程中,确保每次代码提交后自动触发测试:


  1. Jenkins 集成:在 Jenkins 项目配置中,添加执行 shell 步骤,粘贴 Apipost 生成的 CI/CD 命令。

  2. GitHub Actions 集成:在项目根目录下创建.github/workflows/test.yml 文件,添加安装 Apipost CLI 和运行测试命令的步骤。

发布于: 刚刚阅读数: 6
用户头像

还未添加个人签名 2025-03-26 加入

还未添加个人简介

评论

发布
暂无评论
利用Apipost轻松实现用户充值系统的API自动化测试_数据追梦人_InfoQ写作社区