前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Apipost自动化测试:零代码!3步搞定!

Apipost自动化测试:零代码!3步搞定!

原创
作者头像
多吃核桃
发布于 2025-04-18 06:26:30
发布于 2025-04-18 06:26:30
2020
举报

Apipost自动化测试:零代码!3步搞定!

“测试1小时,改Bug一整天”, 传统手动测试不仅耗时费力,还容易遗漏关键场景,导致线上事故频发。目前,全球Top 10的科技公司中,90%的团队早已抛弃手动测试,转向更智能的解决方案——自动化测试

不过,许多人对自动化测试的认知仍停留在“高门槛”“复杂代码”的误区中。

自从上手Apipost,发现并非如此: 无需写一行代码,三步操作即可实现全流程自动化测试,小白也能10分钟上手。

快速上手

1. 新建测试用例

打开Apipost,点击“新建测试用例”,给你的测试任务起个名字,比如“用户登录接口测试”。

img_v3_02kv_6677f145-0a00-4ffd-8c59-eba19c28f42g.jpg
img_v3_02kv_6677f145-0a00-4ffd-8c59-eba19c28f42g.jpg
2. 编排测试用例

在测试用例中,你可以像搭积木一样,把接口拖拽进来。比如,先添加“用户登录接口”,再添加“获取用户信息接口”。

img_v3_02kv_db54b31f-8cfe-446e-aa52-9cc6a80a26eg.jpg
img_v3_02kv_db54b31f-8cfe-446e-aa52-9cc6a80a26eg.jpg
3. 设置测试条件
  • 测试环境:从下拉菜单中选择你的测试环境(比如开发环境、预发布环境)。
  • 执行轮次:设置跑多少次测试,比如跑5次验证稳定性。
  • 间隔时长:每次测试之间隔多久,比如设置为3秒。undefined
    img_v3_02kv_bb639aa2-75ce-4e88-a673-5cc6a0281cag.jpg
    img_v3_02kv_bb639aa2-75ce-4e88-a673-5cc6a0281cag.jpg
  1. 生成测试报告undefined 点击“保存并执行”,Apipost会自动生成一份详细的测试报告,包括接口响应时间、断言结果、失败原因等。undefined
    img_v3_02kv_ea660a32-4032-43a8-921b-43a6b98455ag.jpg
    img_v3_02kv_ea660a32-4032-43a8-921b-43a6b98455ag.jpg

使用测试数据

1. 测试数据的创建:从零到一的蜕变

1.1 上传测试数据文件

  • 打开 Apipost,进入测试用例编辑页面,点击左侧的“测试数据”。
  • 点击“新建测试数据”,选择“上传文件”,支持 CSV 和 TXT 格式。
  • 示例:准备一个 CSV 文件,包含用户登录所需的 usernamepassword 字段。
代码语言:java
AI代码解释
复制
  username,password
  test01@apipost.cn,123456
  test02@apipost.cn,789012
  • 上传后,Apipost 会自动解析文件内容,你可以在右侧预览数据。
    img_v3_02kv_5154a458-2885-4cc6-8913-38b25a8e582g.jpg
    img_v3_02kv_5154a458-2885-4cc6-8913-38b25a8e582g.jpg

1.2 环境隔离:不同环境不同数据

  • 在 Apipost 中,支持为每个环境单独配置测试数据。例如:
    • 开发环境使用 local_users.csv
    • 生产环境使用 prod_users.csv
  • 切换环境时,系统会自动识别对应环境的测试数据。
    image.png
    image.png
2. 测试数据的使用:让数据“活”起来

2.1 参数化接口请求

  • 编辑接口时,将请求参数设置为变量,例如 {{username}}{{password}}
    img_v3_02kv_3a93f026-fe3b-4a88-80b3-e1be2325649g.jpg
    img_v3_02kv_3a93f026-fe3b-4a88-80b3-e1be2325649g.jpg
  • 在测试条件中选择刚创建的测试数据,Apipost 会自动将数据填充到接口中。
    img_v3_02kv_6aec69a5-d988-463b-9ed4-3a1d8bcd782g.jpg
    img_v3_02kv_6aec69a5-d988-463b-9ed4-3a1d8bcd782g.jpg

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

  • 添加“循环控制器”,选择“完成所有测试数据的迭代”模式。
  • 设置循环间隔为 1 秒,确保每次请求之间有足够的时间。
  • 在循环体内调用接口,使用 {{username}}{{password}} 引用数据。
    img_v3_02kv_c4733a12-b222-4b71-8540-de843c80ffeg.jpg
    img_v3_02kv_c4733a12-b222-4b71-8540-de843c80ffeg.jpg

2.3 动态数据提取与再利用

  • 如果接口返回的数据是数组格式(如用户列表),可以通过 JSONPath 表达式提取数据。
代码语言:java
AI代码解释
复制
{
  "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"
    }
  ]
  }
img_v3_02kv_da9d9e50-d8c8-48cd-9911-5215c083adeg.jpg
img_v3_02kv_da9d9e50-d8c8-48cd-9911-5215c083adeg.jpg
  • 使用 $.data 提取数组。
    image.png
    image.png
  • 然后在后续接口中通过使用 {{username}}{{password}} 引用数据。
    image.png
    image.png

性能测试实战

性能问题是接口测试的“隐形杀手”。Apipost的性能测试功能,能帮你快速定位瓶颈!

1. 固定模式压测
  • 设置并发数为100,模拟100个用户同时登录。
  • 查看压测报告中的“平均响应时间”和“失败率”,判断接口是否能扛住高并发。undefined
    img_v3_02kv_758742a6-4830-4cf8-b3ac-fb6bb69e53fg.jpg
    img_v3_02kv_758742a6-4830-4cf8-b3ac-fb6bb69e53fg.jpg
2. 爬坡模式压测
  • 从10个并发开始,逐步增加到100个并发,观察接口性能的变化趋势。
  • 如果响应时间突然飙升,说明接口在某个并发点出现了性能问题。undefined
    img_v3_02kv_823484c7-d34c-4736-8b09-e1296866286g.jpg
    img_v3_02kv_823484c7-d34c-4736-8b09-e1296866286g.jpg

CICD实战指南,从安装到集成

1. Apipost CLI工具:自动化测试的“发动机”

1.1 安装 CLI 工具

  • 打开终端,运行以下命令安装 Apipost CLI:
代码语言:java
AI代码解释
复制
 npm install -g apipost-cli-pro
  • 如果你之前安装过旧版本的 apipost-cli,请先卸载:
代码语言:java
AI代码解释
复制
  npm uninstall -g apipost-cli

1.2 生成 CICD 命令

  • 进入你的测试用例页面。
  • 点击“持续集成”,新建--Apipost Cli,系统会自动生成一个唯一的运行链接和 Token。
  • 复制生成的命令,例如:
代码语言:java
AI代码解释
复制
 apipost run "https://open.apipost.net/open/ci/automated_testing?ci_id=xxx&token=xxx" -r html
image.png
image.png
2. 集成到 CI/CD 流程:让测试成为流水线的一部分

2.1 Jenkins 集成

  • 在 Jenkins 项目配置中,添加一个新的“执行 shell”步骤。
  • 粘贴刚才生成的 CICD 命令,确保在代码提交后自动触发测试。
  • 示例配置:
代码语言:java
AI代码解释
复制
pipeline {
      agent any
      tools {nodejs "node16.14"} //替换替换服务器支持的node版本。node版本>16
      stages {
        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'
          }
        }
      }
    }
img_v3_02kv_4db49360-59a1-43f8-988d-bcbc3d5b4c1g.jpg
img_v3_02kv_4db49360-59a1-43f8-988d-bcbc3d5b4c1g.jpg

2.2 GitHub Actions 集成

  • 在项目根目录下创建 .github/workflows/test.yml 文件。
  • 添加以下内容:
代码语言:java
AI代码解释
复制
  name: Automated API Tests

  on: [push, pull_request]

  jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3

    - name: Setup Node.js environment
      uses: actions/setup-node@v2
      with:
        node-version: '14'

    - name: Install Apipost CLI
      run: npm install -g apipost-cli

    - name: Running Test Scenario
      run: apipost run "https://open.apipost.net/open/ci/automated_testing?ci_id=xxx&token=xxx" -r html
img_v3_02kv_a6948a91-bb67-405c-9fd3-807a4e4869bg.jpg
img_v3_02kv_a6948a91-bb67-405c-9fd3-807a4e4869bg.jpg

实战场景:用户充值查询系统

场景描述

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

  1. 用户注册接口:允许新用户注册。
  2. 用户登录接口:验证用户凭据并返回认证token。
  3. 用户充值接口:允许用户为账户充值。
  4. 查询账户信息接口:查询用户的账户余额和充值历史。

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

自动化测试流程设计

1. 创建测试用例

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

img_v3_02l0_4cb353dc-63fe-4a4e-9262-70efd2a442eg.jpg
img_v3_02l0_4cb353dc-63fe-4a4e-9262-70efd2a442eg.jpg
2. 添加接口并编排顺序

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

  1. 用户注册接口
  2. 用户登录接口
  3. 用户充值接口
  4. 查询账户信息接口
    img_v3_02l0_30d0209e-41e9-4c69-89e2-b8185d619a4g.jpg
    img_v3_02l0_30d0209e-41e9-4c69-89e2-b8185d619a4g.jpg
3. 设置请求参数和动态数据提取
  • 用户注册接口
    • 请求参数
代码语言:json
AI代码解释
复制
 {
      "username": "test_user",
      "email": "test_user_@example.com",
      "password": "Test@123"
    }
img_v3_02l0_9ebaff1b-ce42-4414-8d3b-3af17965012g.jpg
img_v3_02l0_9ebaff1b-ce42-4414-8d3b-3af17965012g.jpg
  • 断言
    • 响应状态码为200。
    • 响应体中包含"status": "success"
    • 提取userId并存储为全局变量。
      image.png
      image.png
  • 用户登录接口
    • 请求参数
代码语言:json
AI代码解释
复制
{
      "username": "test_user",
      "password": "Test@123"
    }
  • 断言
    • 响应状态码为200。
    • 响应体中包含"token"字段。
    • 提取token并存储为全局变量。
      image.png
      image.png
  • 用户充值接口
    • 请求头
代码语言:java
AI代码解释
复制
http
    Authorization: Bearer {{token}}
img_v3_02l0_40e613c5-3c3b-4b09-853c-06ac14d084ag.jpg
img_v3_02l0_40e613c5-3c3b-4b09-853c-06ac14d084ag.jpg
  • 请求参数
代码语言:json
AI代码解释
复制
 {
      "userId": "{{userId}}",
      "amount": 100.00,
      "currency": "CNY"
    }
  • 断言
    • 响应状态码为200。
    • 响应体中包含"transactionId"字段。
      img_v3_02l0_5c61b880-5a13-4ff8-b9dc-91757853167g.jpg
      img_v3_02l0_5c61b880-5a13-4ff8-b9dc-91757853167g.jpg
  • 查询账户信息接口
    • 请求头
代码语言:java
AI代码解释
复制
http
    Authorization: Bearer {{token}}
  • 查询参数
代码语言:java
AI代码解释
复制
http
    userId={{userId}}
  • 断言
    • 响应状态码为200。
    • 充值金额是否为100。
      img_v3_02l0_0fb8e8a4-264e-4c64-8f72-588bd9f155ag.jpg
      img_v3_02l0_0fb8e8a4-264e-4c64-8f72-588bd9f155ag.jpg
4. 设置测试条件
  • 测试环境:选择你的测试环境(如开发环境)。
  • 执行轮次:设置为1次(完整流程测试)。
  • 间隔时长:设置为2秒(确保接口响应稳定)。
    img_v3_02l0_83abe2ea-4450-41e3-88ea-784dfbd5775g.jpg
    img_v3_02l0_83abe2ea-4450-41e3-88ea-784dfbd5775g.jpg
5. 生成测试报告

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

img_v3_02l0_08c92193-ce1a-4318-b9d5-bf42c48f28eg.jpg
img_v3_02l0_08c92193-ce1a-4318-b9d5-bf42c48f28eg.jpg

动态数据提取与再利用

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

性能测试

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

  1. 固定模式压测:设置并发数为100,模拟100个用户同时登录。
  2. 爬坡模式压测:从10个并发开始,逐步增加到100个并发,观察接口性能的变化趋势。
    img_v3_02l0_bb72746d-ef9c-467c-8f07-5aff373bfd9g.jpg
    img_v3_02l0_bb72746d-ef9c-467c-8f07-5aff373bfd9g.jpg

CI/CD集成

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

  1. Jenkins集成:在Jenkins项目配置中,添加执行shell步骤,粘贴Apipost生成的CICD命令。
  2. GitHub Actions集成:在项目根目录下创建.github/workflows/test.yml文件,添加安装Apipost CLI和运行测试命令的步骤。
    img_v3_02l0_44d883c4-5216-49e6-ae27-cae273927afg.jpg
    img_v3_02l0_44d883c4-5216-49e6-ae27-cae273927afg.jpg

Apipost自动化测试的核心优势

  • 零代码:拖拽式编排,小白友好;
  • 全场景覆盖:接口测试、性能压测、数据驱动一网打尽;
  • CI/CD集成:一键生成CLI命令,无缝对接Jenkins、GitLab!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【玩转腾讯云】用eclipse跑通腾讯云JavaSDK
https://www.oracle.com/java/technologies/javase-jdk13-downloads.html
大大大黑白格子
2020/03/27
16.8K0
【玩转腾讯云】用eclipse跑通腾讯云JavaSDK
在Mac电脑上用VMware Fusion安装Windows7虚拟机
链接: https://pan.baidu.com/s/1Ov033tnnYl-LoQcJrpU8DA
Action
2021/03/26
3.9K0
在Mac电脑上用VMware Fusion安装Windows7虚拟机
Windows下安装Mycat
已管理员身份启动cmd,进入D:\mycat\bin目录,执行mycat install
Action
2021/09/18
2.1K0
【玩转腾讯云】我在腾讯云从域名申请到网站备案的操作攻略
最近因为工作需要开发一款微信小程序,在小程序中要发起http请求的话必要在微信小程序管理后台配置可信域名,微信对域名有2点核心的要求:带https的域名和已经ICP备案的域名。公司资源有限给不到啥支持,想起来我在腾讯云上有个域名一直闲置,于是打算拿这个域名下手。
HOHO
2021/04/23
30.4K4
【玩转腾讯云】我在腾讯云从域名申请到网站备案的操作攻略
若依前后台框架,下载运行,若依系统生成代码
1、前置工具安装 jdk 1.8 redis (缓存数据库) mysql idea (后端开发工具) nodejs (js前端开发平台,本文主要用到包管理工具 npm) vscode (前端开发工具) git (版本管理工具) 下载 [https://gitee.com/y\_project/RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue) 2、运作方式 [image.png] 3、后台导入,设置 [image.png] [image.png] [image
用户7957495
2021/08/09
1.6K0
若依前后台框架,下载运行,若依系统生成代码
【5分钟玩转Lighthouse】搭建bitwardenrs一个好玩的密码网站
可参考这篇文章:轻量应用服务器 使用远程登录软件登录 Linux 实例-操作指南-文档中心-腾讯云-腾讯云 (tencent.com)
用户9673240
2022/05/05
1.2K0
【5分钟玩转Lighthouse】搭建bitwardenrs一个好玩的密码网站
Android模仿微博的LazyFragment懒加载
本文会从头开始一步一步带你去写一个LazyFragment,根据写的过程中一步一步记录,你也可以自己试一试,跟着一起写写。最后也根据遇到的问题去完善了,网上搜的都是不完善的,还是自己写一个吧!
分你一些日落
2021/12/08
4890
Android模仿微博的LazyFragment懒加载
protobuf编译、安装和简单使用C++(Windows+VS平台)
将刚才编译后的libprotobufd.lib和protoc.exe拷贝到自己创建的项目下,按住shift+右键,选择打开CMD,输入protoc --cpp_out=./ Account.proto,发现目录中多了两个文件,一个.h头文件一个.cc源文件
WindSun
2020/03/21
9.1K2
Windows下安装MongoDB
下一步安装 "install mongoDB compass" 不勾选(当然你也可以选择安装它,可能需要更久的安装时间),MongoDB Compass 是一个图形界面管理工具,我们可以在后面自己到官网下载安装,下载地址:https://www.mongodb.com/download-center/compass。
Action
2021/09/14
1K0
PHPStudy + VSCode 进行 PHP 断点调试
文件->首选项->设置->扩展->php->validate:executable path
Action
2021/08/12
2.2K0
PHPStudy + VSCode 进行 PHP 断点调试
重磅!腾讯云轻量应用服务器免费升配又双叒来了!
首先前往轻量应用服务器控制台查看机型https://console.cloud.tencent.com/lighthouse/instance/
小宇-xiaoyu
2022/03/04
3.4K0
Ichunqiu云境 - Delegation Writeup
0x1 Info图片0x2 ReconTarget external IP39.98.34.149Nmap results图片关注80端口的http服务,目录爆破(省略)找到 /admin 图片使用弱口令登录进入后台,去到模板页面,编辑header.html,添加php一句话`用户名: admin, 密码:123456![f71dd2cf6322f6235561582fe3698a6.png](https://ask8088-private-1251520898.cn-south.myqcloud.com/
Gcow安全团队
2022/12/10
4930
【玩转Lighthouse】搭建PhotoPrism开源智能相册——支持人脸识别和主题分类
PhotoPrism是一个基于Go编写的开源智能相册程序,凭借Go语言本身性能高效的特点,在实际使用中速度与稳定性远超同配置下使用PHP编写的老牌相册管理软件Piwigo。且PhotoPrism内嵌Google TensorFlow机器学习引擎,实现了类似Google Photo和群晖Moments之类的人脸识别和主题分类的功能。PhotoPrism支持多维度的照片管理,如基于地图位置、时间、自动识别的标签、人脸等,同时支持webdav服务端,方便各种移动app同步备份。
LittlePri
2022/04/15
7.6K0
竞技世界面试官:说一下公平锁和非公平锁的区别?
上次我们提到了乐观锁和悲观锁,那我们知道锁的类型还有很多种,我们今天简单聊一下,公平锁和非公平锁两口子,以及他们在我们代码中的实践。
Java程序猿
2021/07/18
3960
excel 的条件格式(二)
使用条件格式中的数据条可以非常方便地对一定区域内的单元格的数值进行可视化。照着以下步骤执行,便可以添加数据条。
mr.songw
2021/02/04
1.5K0
excel 的条件格式(二)
MySQL 索引(中)
聚簇索引是按照每张表的主键构造的一棵 B+ 树,叶子节点中存放的即为整张表的行记录数据,聚簇索引的叶子节点也称为数据页。非聚簇索引叶子节点并不包含行记录的全部数据。叶子节点除了包含键值以外,每个叶子节点中的索引行中还包含一个书签。该书签用来告诉 InnoDB 存储引擎哪里可以找到与索引相对应的行数据。由于 InnoDB 存储引擎表是索引组织表,因此 InnoDB 存储引擎的非聚簇索引的书签就是相应的行数据的聚簇索引键。那么基于聚簇索引和非聚簇索引的查询的区别在哪里呢?先通过一个例子来直观感受下:查询 emp_no 为 401060 的记录,通过字段 emp_no 来查询,sql 如下。
mr.songw
2021/01/15
1.6K0
MySQL 索引(中)
2021年度Leetcode算法类型高频题总结&(附答案解析)
昨晚逛了逛GitHub,无意中看到一位P8大佬的算法刷题笔记,感觉发现了宝藏!有些小伙伴可能已经发现了,但咱这里还是忍不住安利一波,怕有些小伙伴没有看到。
Java程序猿
2021/12/24
9640
2021年度Leetcode算法类型高频题总结&(附答案解析)
基于声网的音视频SDK和FreeSWITCH开发WebRTC2SIP Gateway 报文设计 (二)
上一篇我们提到,常用的SIP 信令有:1注册、2振铃、3呼叫、4接听、5挂断、6取消
qzlink.com
2020/07/01
1.1K0
k8s的持续集成(jenkins+gitlab+k8s)
root@k8s-master1 docker.yml# kubectl get node
不凡
2021/08/19
3.9K1
【玩转Lighthouse】关于Docker部署分布式Minio的探索
根据官方文档所说,Minio分布式部署需要最低四块硬盘,也就是说利用Docker进行分布式部署的最低要求是两节点两硬盘,此次部署的计划便是如此。
SakuraRain
2022/04/22
2.5K0
推荐阅读
相关推荐
【玩转腾讯云】用eclipse跑通腾讯云JavaSDK
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档