你了解API测试吗?如何充分的测试一个API?

2023-11-08

什么是API?

API代表应用程序接口。API是软件系统中的中间层,负责数据源与用户看到的图形用户界面(GUI)之间的数据通信。换句话说,API是软件的业务层,它在表示层和数据层之间创建连接。
在这里插入图片描述

API测试侧重于所谓的应用程序业务层,这意味着与标准GUI测试相比,测试方法将完全不同。因此,在API测试中,我们可能需要使用一些其他测试模式,使用一些测试工具或我们自己的代码来检查这些测试中的API,而不是使用键盘敲击和鼠标单击作为标准输入。您需要验证来自这些API的响应(输出),以验证它们是否正常工作。要知道要查找的内容,您需要了解API生成的响应。

API响应将是:

状态消息/布尔值(例如,成功/错误或真/假等),它将显示API调用的状态。它还将充当标志(真/假),然后将更新表示层或数据库层。
要传递到后续API或GUI或数据库的一组数据。

在API中测试什么?

功能:您可以根据提供的输入查找API响应。检查实际响应是否与预期响应匹配。
性能:在这里,您需要了解API的响应时间。有时,从API获取响应需要很长时间。这可能是由于与API设计相关的性能问题。
安全性:检查传递到API的任何敏感数据是否已加密,是此测试的一部分。例如,您可能想要检查负责在主页上生成仪表板报告的API。为了访问仪表板API,您可能需要一个令牌,该令牌可以作为先前运行的登录API的响应生成。此令牌应采用加密格式。您还可以检查是否有任何HTTPS加密。
可靠性:您可以检查API是否在每次测试不同配置时为您提供快速响应(例如,不同的环境,各种用户登录等)您可以检查输出是否返回任何异常处理错误,超时错误等等。为了API的可靠性。可靠性测试的一部分,您还可以检查响应数据是否正确结构化。通常,API响应将以JSON或XML格式构建。
否定测试:这里的目的是向API提供无效的输入数据并检查输出数据的行为方式。API应该正确处理错误。它应该为每个负输入条件提供有效,有意义的错误消息。如果空输入数据用于某些参数,您还可以测试API的行为。您还可以查找任何未使用的标志,不同输入数据的丢失/重复输出值。

API测试用例是什么样的?

以下组件应包含在API测试用例文档中。

测试步骤

API网址

这是用于调用特定API的HTTP请求。例如,使用用于登录功能的API。如果其URL结构为Mobile / User / Login且您的域URL为http://domain.com,那么从浏览器/工具调用API的API URL将为http://domain.com/Mobile/User/Login

HTTP方法

对于RESTful API,它们使用HTTP方法根据对服务器的调用类型对API进行分类。例如,POST,GET等.POP方法将数据发送到服务器,而GET方法从服务器获取数据。

有效载荷

这定义了要提供给API的结构或输入数据的模型。例如,如果我们采用上述Login API,我们可以使用以下数据结构:

{
username:string
password:string
device_id:string
object_id:string
device_token:string
mobile_os:string
app_language:string
}

请求样本数据

Request Sample包含实际输入数据,该数据作为有效负载传递给API。根据此示例数据,您可以根据需要拥有尽可能多的测试用例。对于上面的登录方案,示例数据可能如下所示:

{
“device_id”:“F3649737-B25D-43BA-A212-71192”,
“object_id”:“”,
“device_token”:“f4icqBpC04k:APA91bFFYp8MKaetZKiAJ,
”mobile_os“:”iOS“,
”App_language“:”en“
}

预期结果

响应代码

这表示API请求的响应代码。200 OK应该是成功API请求的响应代码。还有其他响应代码,例如400 Bad request,401 Unauthorized,403 Forbidden,404 Not found,500 Internal Server Error等。如果您可以从API测试的输出控制台记下API的响应代码将会很有用。工具。

响应结果消息

对于每个输入,可能存在不同的API输出成功消息。您需要确定相应的响应消息并在测试用例中记录它们。Login API的一些常见消息将是:SUCCESS,INACTIVE_ACCOUNT,INVALID_PASSWORD,USER_NOT_FOUND,INVALID_DEVICE_ID,ERROR

响应结果示例

这是每个输入数据组合的输出数据。您需要此数据才能根据API结果的实际输出进行验证。下面给出了成功登录操作的示例:

{
“result”:“SUCCESS”,
“data”:{
“id”:7093,
“company_id”:0,
“customer_id”:“181055033”,
“user_type”:0,
“username”:“user@company.com “,
”first_name“:”Test“,
”last_name“:”User“,
”app_language“:”en“,
”mobile_os“:”iOS“,
”email“:”user@company.com“,
”phone“: “917837322”,
“secondary_phone”:“0”,
“address”:“”,
“created_at”:“2018-10-01”,
“updated_at”:“2018-10-01”,
“last_login”:“2018- 10-01“,
}}

API测试技巧

了解应用程序中每个API的用途。如果不了解特定API的使用,就很难为其记录足够的测试用例。
在为不同的输入条件编写测试用例时,请使用边界值分析和等价类分区等测试技术。
正确记录每个测试用例的输入参数和API响应,以便可以以结构化方式执行测试。以一种跟随另一种方式的方式订购测试用例也很重要。例如,要测试CRUD操作,您需要按创建,更新和删除顺序编写测试用例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

你了解API测试吗?如何充分的测试一个API? 的相关文章

  • 软件测试|教你使用Python下载图片

    前言 我一直觉得Windows系统默认的桌面背景不好看 但是自己又没有好的资源可以进行替换 突然我一个朋友提醒了我 网络上的图片这么多 你甚至可以每天换很多个好看的背景 但是如果让我手动去设置的话 我觉得太麻烦了 我不如使用技术手段将图片下
  • 掌握 C# 变量:在代码中声明、初始化和使用不同类型的综合指南

    C 变量 变量是用于存储数据值的容器 在 C 中 有不同类型的变量 用不同的关键字定义 例如 int 存储整数 没有小数点的整数 如 123 或 123 double 存储浮点数 有小数点 如 19 99 或 19 99 char 存储单个
  • 盲猜你不懂H5架构和原生架构的区别

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 测开和测试平台是否有存在的必要?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • Jmeter 性能-阶梯式性能指标监听

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • Oracle EBS AP发票导入 API Rejection List 第二部分

    Oracle EBS AP发票导入 API Rejection List 第二部分 The report lists the reason the invoice could not be imported and prints a bri
  • 新手也能看懂的【前端自动化测试入门】!

    前言 最近在网上搜索前端自动化测试相关的文档 但是发现网上的文章都是偏使用 没有把一些基础概念说清楚 导致后续一口气遇到一些 karma Jasmine jest Mocha Chai BDD 等词汇的时候很容易一头雾水 这次一方面整理一下
  • Python常用的自动化小脚本!

    一 list转json string转json 可以使用Python内置的 json 模块将列表 List 和字符串 String 转换成JSON格式 List转JSON假设我们有一个列表 List my list apple banana
  • 探索自动化测试断言:提升测试效率与质量的关键!

    前言 断言在自动化测试中起着关键的作用 它是验证测试结果是否符合预期的重要手段 如果在自动化测试过程中忽视了断言 那么这个测试就失去了其本质的意义 因为我们无法得知测试结果是否达到了预期的效果 因此 断言在自动化测试中的重要性不言而喻 那么
  • 做测试不会 SQL?超详细的 SQL 查询语法教程来啦!

    前言 作为一名测试工程师 工作中在对测试结果进行数据比对的时候 或多或少要和数据库打交道的 要和数据库打交道 那么一些常用的sql查询语法必须要掌握 最近有部分做测试小伙伴表示sql查询不太会 问我有没有sql查询语法这一块的文档可以学习
  • 数据库 | 面试官:一次到底插入多少条数据合适啊?.....面试连环炮

    数据库 面试官 一次到底插入多少条数据合适啊 面试连环炮 数据库插入操作的基础知识 插入数据是数据库操作中的基础 但是 我们程序员将面临随之而来的问题 如何快速有效地插入数据 并保持数据库 性能 当你向数据库中插入数据时 这些数据直接存储到
  • Mysql中设置只允许指定ip能连接访问(可视化工具的方式)

    场景 Mysql中怎样设置指定ip远程访问连接 Mysql中怎样设置指定ip远程访问连接 navicat for mysql 设置只有某个ip可以远程链接 CSDN博客 前面设置root账户指定ip能连接访问是通过命令行的方式 如果通过可视
  • MongoDB - 库、集合、文档(操作 + 演示 + 注意事项)

    目录 一 MongoDB 1 1 简介 a MongoDB 是什么 为什么要使用 MongoDB b 应用场景 c MongoDB 这么强大 是不是可以直接代替 MySQL d MongoDB 中的一些概念 e Docker 下载 1 2
  • 软件测试/测试开发/全日制/测试管理丨Android WebView 技术原理

    Android WebView是一个内置的组件 允许在Android应用中嵌套显示Web内容 Android WebView的技术原理涉及到使用WebKit引擎来渲染Web内容 并提供一系列API和回调函数 使得开发人员可以控制和定制Web
  • 一文让你了解UI自动化测试

    测试都起什么作用 是项目的保险 但不是项目的救命草 测试无实际产出 但作用远大于实际产出 测试是从项目维度保证质量 而不是测试阶段 UI自动化 下面简称自动化 基于UI进行自动功能测试 以Web端作为例子 一般的UI功能自动化都是基于HTM
  • 外包干了2个月,技术倒退2年。。。

    先说一下自己的情况 本科生 20年通过校招进入深圳某软件公司 干了接近4年的 功能测试 今年国庆 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了3年的女朋
  • Web自动化测试 —— cookie复用

    一 cookie简介 cookie是一些数据 存储于用户电脑的文本文件中 当web服务器想浏览器发送web页面时 在链接关闭后 服务端不会记录用户信息 二 为什么要使用Cookie自动化登录 复用浏览器仍然在每次用例开始都需要人为介入 若用
  • UI自动化测试之Jenkins配置

    背景 团队下半年的目标之一是实现自动化测试 这里要吐槽一下 之前开发的测试平台了 最初的目的是用来做接口自动化测试和性能测试 但由于各种原因 接口自动化测试那部分功能整个废弃掉了 其中和易用性有很大关系 另外 也和我们公司的接口业务也有关
  • 外包干了3个月,技术退步明显。。。。。

    先说一下自己的情况 本科生 20年通过校招进入广州某软件公司 干了接近3年的 功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了3年的功能测试 已经让我变得不思进取 谈了2年的女朋
  • 软件测试面试:还没有自动化测试项目经验,3个项目帮你走入软测职场!

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自

随机推荐

  • 关于vue使用recorder.js录音功能

    关于vue使用recorder js录音功能 1 引入外部js文件 import HZRecorder from utils HZRecorder js js文件内容 export function HZRecorder stream co
  • 资源变现小程序开通微信官方小商店教程

    前提条件非个人注册的小程序 登录小程序的微信公众后台 点击左侧菜单设置 gt 基本信息下面的 gt 服务类目 点击服务类目详情 点击添加类目 商家自营 gt 家用电器 添加好后 刷新浏览器 这个时候左侧菜单会看到交易组件 点击交易组件会看到
  • idea-代码格式化快捷键设置

    idea默认格式化快捷键是 Ctrl Alt L 有时会因其它软件快捷键的冲突导致失灵 设置方法如下 1 File gt Settings 2 Keymap gt Code 3 Code gt Reformat Code 4 右击Refor
  • openGL之API学习(七十四)opengl版本的历史沿革

    OpenGL源于SGI公司为其图形工作站开发的IRIS GL 在跨平台移植过程中发展成为OpenGL SGI在1992年7月发布1 0版 后成为工业标准 由成立于1992年的独立财团OpenGL Architecture Review Bo
  • rust换源

    在 HOME cargo 目录下建一个config文件 windows默认是C Users user name cargo config文件输入 source crates io registry https github com rust
  • 算法(二)

    目录 0 前言 1 海明码的使用 2 理解海明码需要明白的知识 a 奇偶校检法 b 异或运算 3 海明码的原理 a 海明码原理的概述 b 多个校检位的设计 c 校检位个数的计算 d 海明码的总结 4 举例 a 计算校检码的个数 b 计算每一
  • Unity编辑器 - 使用GL绘制控件

    Unity编辑器 使用GL绘制控件 控件较为复杂时 可能造成界面卡顿 在EditorGUI中也可以灵活使用GL绘制来提升性能 以绘制线段为例 using UnityEngine using UnityEditor public class
  • 【数据结构】树的基础知识及三种存储结构

    个人主页 阿然成长日记 点击可跳转 个人专栏 数据结构与算法 C语言进阶 不能则学 不知则问 耻于问人 决无长进 文章目录 一 树的概念与定义 二 树的有关名词 三 树的存储结构 1 双亲表示法 2 孩子表示法 3 孩子兄弟表示法 又叫二叉
  • c语言6种内部排序,数据结构6种内部排序算法的比较

    1 需求分析 1 输入数据的形式为 伪随机数产生程序产生 且每次输入数不少于100个 至少要用5组不同的输入数据 2 输出的形式为 输出关键字参加的比较次数和关键字的移动次数 关键字交换计为3次移动 的数据 3 程序能达到的功能 对起泡排序
  • docker 简单安装 redis

    1 redis的简单安装 1 1 docker 寻找 redis镜像 docker search redis 1 2 docker 拉取 redis镜像 docker pull redis 1 3 运行创建Redis 1 4 进入容器 1
  • SQL留存率问题

    什么是留存率 留存率 retention rate 通常用来衡量用户或客户的忠诚度和粘性 留存率指的是在特定时间段内 有多少人保持了对某个产品 服务 平台或应用程序的使用并继续付费或进行其他有价值的操作 通常情况下 留存率会作为一个百分比表
  • redis 连接数据库_如何连接到Redis数据库

    redis 连接数据库 介绍 Introduction Redis is an open source in memory key value data store Whether you ve installed Redis locall
  • Adblock Plus 下载

    作用 下载人数 全球超过5000万人都在使用adblock plus 这个chrome插件完全免费 能够屏蔽整个互联网广告的插件你见过吗 那就是Adblock Plus Adblock Plus牛在哪里 在谷歌开发者商店里面有4000万以上
  • 【SLAM】卡尔曼滤波(Kalman Filter)

    卡尔曼滤波 Kalman filter 一种利用线性系统状态方程 通过系统输入输出观测数据 对系统状态进行最优估计的算法 由于观测数据中包括系统中的噪声和干扰的影响 所以最优估计也可看作是滤波过程 卡尔曼滤波器的原理解释如下 首先 我们先要
  • 团队管理中的代码评审

    代码评审在软件项目管理中是经常组织的活动 通过代码评审的工作也确实给我们的团队带来很多的益处 简单谈谈代码评审的感受 你们的团队是否也在进行代码评审 Code Review 的相关工作呢 1 为什么要组织代码评审 组织代码评审其主要目的是保
  • uni-app跨端开发微信小程序之nodejs与后端通信并动态打包项目以适应多环境开发

    摘要 这篇文章主要的目的是分享一个可与后端接口通信的自动化脚本插件 实现不同环境下可打包成不同配置的微信小程序源码 全程靠命令行自动发起请求 修改配置文件 自动编译 解放双手不是梦 看官在阅读文章前可以思考这样一个场景 有一份代码需要支持本
  • Java与设计模式(3):抽象工厂模式

    一 定义 抽象工厂模式是一种创建型设计模式 它提供了一种将相关对象组合在一起创建的方式 而无需指定它们的具体类 在抽象工厂模式中 有一个抽象工厂接口 该接口定义了一组创建相关对象的方法 每个具体的工厂类都实现了这个接口 并负责创建一组相关的
  • Xshell 使用密钥连接服务器,每次都提示:SSH服务器拒绝了密码。请再试一次

    查了很多 原来问题出在这里 1 在用户身份验证 连接方法设置为public key 2 浏览 导入你服务端下载的密钥 确定 输入密钥密码 问题解决
  • 手写js物理引擎

    先来看效果 包括混沌小球碰撞 上抛 自由落体 滚动 想要手写游戏 这些都是最基础的内容 也是一些游戏库的底层原理 开始之前 先回忆一些物理和数学知识 1 自由落体 重力相关 2 非弹性碰撞 角度 速度 3 向量 标量 4 动量守恒 动能守恒
  • 你了解API测试吗?如何充分的测试一个API?

    什么是API API代表应用程序接口 API是软件系统中的中间层 负责数据源与用户看到的图形用户界面 GUI 之间的数据通信 换句话说 API是软件的业务层 它在表示层和数据层之间创建连接 API测试侧重于所谓的应用程序业务层 这意味着与标