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

 什么是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操作,您需要按创建,更新和删除顺序编写测试用例。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/687144.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2.17C语言学习

P1678 烦恼的高考志愿 写完后发现题解里面用的是优先队列或者二分什么的,其实这个题可以贪心,我们把学校的分数线和学生的成绩分别进行排序,然后从前往后遍历,每次比较当前学校的分数与学生成绩的差距和下一个学校的分数与学生成…

111 C++ typename

介绍typename之前&#xff0c;应先了解几个概念&#xff1a; 1. 限定名与非限定名 限定名&#xff0c;顾名思义&#xff0c;是限定了命名空间的名称。 #include <iostream>int main() {std::cout << "Hello world!" << std::endl; } std::限定…

re-captioning技术是什么

参考https://zhuanlan.zhihu.com/p/664192860 模型对图片进行caption操作时&#xff0c;输出的标题一般描述图片中的主体&#xff0c;而忽视了背景、常识关系等更为细节的描述。 图片比较重要的细节的描述应当包括&#xff1a; 物体存在的场景。如&#xff1a;在厨房的水槽&am…

ValueError check_hostname requires server_hostname 报错

一、报错再现 我准备了一个工具环境&#xff0c;这里面有一些工具包需要安装&#xff0c;当我运行一下代码&#xff1a; pip install -r requirements-cpu.txt回车过后&#xff0c;发生了如下报错&#xff1a; ERROR: Exception: Traceback (most recent call last):File &q…

Qt之条件变量QWaitCondition详解(从使用到原理分析全)

QWaitCondition内部实现结构图&#xff1a; 相关系列文章 C之Pimpl惯用法 目录 1.简介 2.示例 2.1.全局配置 2.2.生产者Producer 2.3.消费者Consumer 2.4.测试例子 3.原理分析 3.1.辅助函数CreateEvent 3.2.辅助函数WaitForSingleObject 3.3.QWaitConditionEvent …

阿里云服务器服务费怎么计算的?详细报价解析

2024年最新阿里云服务器租用费用优惠价格表&#xff0c;轻量2核2G3M带宽轻量服务器一年61元&#xff0c;折合5元1个月&#xff0c;新老用户同享99元一年服务器&#xff0c;2核4G5M服务器ECS优惠价199元一年&#xff0c;2核4G4M轻量服务器165元一年&#xff0c;2核4G服务器30元3…

算法学习(六)前缀和

前缀和 1. 概念 前缀和算法是一种用于高效计算数组前缀和的算法。前缀和是指从数组的起始位置到某一位置的所有元素的和。下面是前缀和算法的基本步骤&#xff1a; 创建一个与原始数组相同长度的前缀和数组。初始时&#xff0c;前缀和数组的第一个元素与原始数组的第一个元素…

001 - Hugo, 创建一个网站

001 - Hugo, 创建一个网站安装hugoWindows系统Macos Hugo博客搭建初始化博客主题安装配置博客各个页面开始创作创建 GitHub Page 仓库本地调试和预览发布内容 教程及鸣谢文字教程视频教程 001 - Hugo, 创建一个网站 这篇文章假设你已经&#xff1a; 了解基本的终端命令行知识&…

LaTeX中的计数器counter

诸神缄默不语-个人CSDN博文目录 计数器在LaTeX文档中扮演着重要的角色&#xff0c;用于自动化管理章节编号、页码、图表编号等。 计数器可以理解为LaTeX中的一个变量&#xff0c;用于存储一个整数&#xff0c;LaTeX通过这些计数器来控制文档的各种编号。 文章目录 创建计数器设…

黑马鸿蒙教程学习1:Helloworld

今年打算粗略学习下鸿蒙开发&#xff0c;当作兴趣爱好&#xff0c;通过下华为那个鸿蒙开发认证&#xff0c; 发现黑马的课程不错&#xff0c;有视频和完整的代码和课件下载&#xff0c;装个devstudio就行了&#xff0c;建议32G内存。 今年的确是鸿蒙大爆发的一年呀&#xff0c;…

Win32汇编数组学习2

之前学习过win32汇编数组&#xff1b;还不熟悉&#xff1b;继续熟悉&#xff1b; 先做几个基本的对话框&#xff0c;有一个静态文本框&#xff1b; 定义数组之后&#xff0c;用 wsprintf 函数格式化&#xff0c;然后调用 SetDlgItemText 赋值给静态文本框&#xff1b; arr1 …

【力扣hot100】刷题笔记Day5

前言 回学校了&#xff0c;荒废了半天之后打算奋发图强猛猛刷题&#xff0c;找实习&#xff01;赚钱&#xff01;&#xff01; 560. 和为 K 的子数组 - 力扣&#xff08;LeetCode&#xff09; 前缀法 哈希表 这个题解解释比官方清晰&#xff0c;截个图方便看&#xff0c;另一…

OpenCV-42 直方图均匀化

目录 一、直方图均匀化原理 二、直方图均匀化在OpenCV中的运用 一、直方图均匀化原理 直方图均匀化是通过拉伸像素强度的分布范围&#xff0c;使得在0~255灰阶上的分布更加均匀&#xff0c;提高图像的对比度。达到改善图像主管视觉效果的目的。对比度较低的图像适合使用直方…

由于找不到MSVCP140.dll无法运行软件游戏,多种解决方法分享

电脑系统在运行过程中&#xff0c;当出现“由于找不到MSVCP140.dll”这一提示时&#xff0c;可能会引发一系列潜在的问题与影响。当电脑无法找到这个特定的dll文件时&#xff0c;意味着相关应用可能无法顺利加载并执行必要的组件&#xff0c;进而导致程序无法启动或运行过程中频…

【PCB】Allegro PCB 的模块复用操作

【PCB】Allegro PCB 的模块复用操作

openJudge | 循环移动 C语言

总时间限制: 1000ms 内存限制: 65536kB 描述 给定一组整数&#xff0c;要求利用数组把这组数保存起来&#xff0c;再利用指针实现对数组中的数循环移动。假定共有n个整数&#xff0c;则要使前面各数顺序向后移m个位置&#xff0c;并使最后m各数变为最前面的m各数。 注意&…

51_蓝桥杯_led流水灯

一 原理图分析 二 三八译码器工作原理 三八译码器&#xff1a;3个输入控制8路互斥的低电平有效输出。 C B A 输出 0 0 0 Y0 0 0 1 Y1 0 1 0 Y2 0 1 1 Y3 1 0 0 Y4 1 0 1 Y5 1 1 0 Y6 1 1 1 Y7 三 锁存器工作原理 锁存器&#xff1a;当使…

Open CASCADE学习|布尔运算

目录 1、加法&#xff1a;BRepAlgoAPI_Fuse 2、减法&#xff1a;BRepAlgoAPI_Cut 3、交集&#xff1a;BRepAlgoAPI_Common 4、交线&#xff1a;BRepAlgoAPI_Section 1、加法&#xff1a;BRepAlgoAPI_Fuse #include <gp_Pnt.hxx>#include <BRepPrimAPI_MakeBox.hxx…

“我觉得我今年可能要随便找个人嫁了,下半辈子应该都不会再快乐了”

2月15日&#xff0c;“张颂文情商”的话题登上热搜&#xff0c;引发网友热议。 许多人对张颂文老师的情商表达了高度的赞扬和敬意&#xff0c;纷纷感叹&#xff1a;“张颂文老师真的是一个非常会安慰人的人&#xff01;” 在2月13日的一条微博中&#xff0c;张颂文分享了家里三…

【JavaEE】_HTTP请求首行

目录 1. URL 2. 方法 2.1 GET方法 2.2 POST方法 2.3 GET与POST的区别 2.4 低频使用方法 1. URL 在mysql JDBC中已经提到过URL的相关概念&#xff1a; 如需查看有关JDBC更多内容&#xff0c;原文链接如下&#xff1a; 【MySQL】_JDBC编程-CSDN博客 URL用于描述某个资源…