目录内容
即使对于初学者,“ API”一词也会闪烁。 要么是REST API,要么是SOAP API,然后是一个API。 这是什么样的动物? 让我们弄清楚!
“为什么我需要这个?” 我实际上正在测试网络! 现在,如果我要进行自动化,那么是的...嗯,我听说他们也在企业中对其进行测试...
不! 对于任何测试人员来说,了解API都是一件好事。 因为在它上面系统相互交互。 即使在最简单,最肮脏的网站上,您也每天都能看到这种互动。
任何付款都通过付款系统API进行。 买了电影票? 在线商店中的T恤? 一本书? 一旦您单击“付款”,该站点就会将您连接到付款系统。
但是,即使您没有与其他系统集成,您仍然可以使用API! 因为内部系统本身也通过api进行通信。 并且,当前端开发人员大量使用GUI(图形界面)时,您可以:
当然,我是第二选择! 因此,让我们了解一下API是什么。 您可以在
youtube上观看视频,也可以作为文章阅读。
什么是API?
API(应用程序编程接口)是程序提供的合同。 “可以通过这种方式与我联系,并承诺这样做。”
如果翻译成俄文,它将是“合同”一词。 双方之间的协议,作为购买汽车的协议:
您可以翻译,是的。 但是,没有人做到\ \ _(ツ)_ /¯
每个人都使用“合同”一词。 如此接受。 此外,该单词包含在开发样式的名称中:
- 首先编写代码-首先我们编写代码,然后在其上生成合同
- 首先签约-首先我们创建一个签约,然后在其上编写或生成代码(在本文中,我将讨论这种样式)
我们不是说“汽车买卖合同”吗? 因此开发人员不会说“合同”。 默契。
API-功能集
购买汽车时,您要草拟一份合同,在其中规定所有对您重要的要点。 同样,应在计划之间制定合同。 它们指示如何访问一个或另一个程序。
因此,API回答了“如何联系我的系统?”这一问题,并且包括:
- 我们可以执行的操作本身
- 输入数据
- 输出数据(数据内容或错误消息)。

在这里你可以告诉我:
-等等 操作,输入数据,输出数据-某种程度上,所有这些都非常类似于功能描述!
如果您曾经经历过开发或刚刚学习了编程语言,那么您可能知道什么是函数。 实际上,我们有输入数据,有输出数据,还有一些魔术可以将一种转化为另一种。是的! 定义相似是正确的。 怎么了 是的,因为API是一组功能。 这可能是一个功能,也可能很多。

功能集如何编译
是的,无论如何。 根据开发人员的需要,它将分组。 例如,您可以按功能对API进行分组。 那就是:
- 用于进入系统的单独API,将在其中进行注册和授权;
- 用于报告的单独API-报告1,报告2,报告3 ...报告N。对于不同的报告,我们有不同的公式=不同的功能。 我们都将它们收集在一组api中以进行报告。
- 单独的付款系统API-每个银行都有一个功能。
- ...

您根本无法分组,但可以创建一个通用的API。
可以制作一个通用的API,其余的可以按订单制作。 如果您有盒装产品,那么它通常包括一组标准功能。 以及所有“愿望清单”客户都是分开制作的。

事实证明,在我们的系统中,有几种不同的API,对于每种API,我们都有一份书面合同。 每个合同都明确规定了可以执行的操作,将要执行的功能

当然,功能可以重用。 也就是说,相同的函数可以包含在不同的API中的不同集合中。 没有人禁止这样做。

事实证明,开发人员想出了他将拥有哪种API。 它要么执行常规操作,要么根据功能或它自己的某些标准进行分发,并将所需的功能集添加到每个api。
“接口”一词是什么
-等一下,奥莉亚! 您自己在上面写道,API是一个应用程序编程接口。 尽管有接口一词,您为什么还要谈论合同呢?
是的,因为在编程中合同是接口。 在OOP(面向对象编程)的经典描述中,有3条鲸鱼:
- 封装形式
- 传承
- 多态性
封装是我们隐藏实现的时候。 对于用户而言,一切都很简单明了。 我点击了按钮-我收到了报告。 以及它是如何从内部工作的-他不在乎。 哪个数据库隐藏在后台? 甲骨文? MySQL的? 程序用什么编程语言编写? 代码的组织方式如何? 不是重点。 该程序提供了一个接口,并使用了它。
程序并不总是提供图形界面。 它可以是SOAP,REST接口或其他API。 要使用此界面,您必须了解:
用户使用
GUI图形用户界面 。 程序使用
API-应用程序编程接口 。 他们不需要图形,仅需要合同。
API的调用方式
您可以直接或间接调用api。
直接:
- 系统调用自身内部的函数。
- 系统调用另一个系统的方法
- 人称方法
- 自动测试拉取方法
间接地:
- 用户使用GUI
直接调用API
1.系统调用自身内部的函数
程序的不同部分以某种方式相互通信。 他们在程序级别(即API级别)执行此操作!
这是最简单的使用方法,因为被调用的API的作者是开发人员。 他是他的消费者! 因此,无关的文档没有问题=)
开个玩笑,文档总是有问题。 在这种情况下,作为文档,代码中将包含注释。 但是,,,它们也无关紧要。 要么开发人员是不同的,要么是一个,但是我已经忘记了我是如何完成原始api以及应该如何工作的……
2.系统调用另一个系统的方法
但这是测试人员在集成商中进行测试的典型案例。 或者是测试他们的系统与他人集成的测试人员。
一个系统通过api提取另一个系统的某种方法。 她可能会尝试从另一个系统获取数据。 反之亦然,将数据发送到该系统。
假设我决定将提示从Dadata连接到我的在线商店,以便用户轻松输入送货地址。
我正在连接API提示。 现在,当用户开始在我的网站上输入地址时,他会看到Dadata的提示。 结果如何:
- 他在我的网站上输入了一封信
- 我的网站在API Dadat提示中发送了一个请求
- Dadata返回答案
- 我的网站对其进行处理并将结果显示给用户。
有这么多步骤! 因此,对于每个输入的字符。 用户看不到这种交互,但是可以看到。
而且,当然,在开发API方法时不要忘记这种情况。 只能通过SOAP调用,在接口中找不到它。 客户订购的东西,我们做到了\ \(ツ)_ /¯
可以在“用户”中找到一个示例。 MagicSearch方法基于真实事件。 尽管我必须承认,但在原始逻辑中甚至更复杂,我将其调整到了我的站点。
但是这里的窍门是,在系统本身的用户界面中,只有常规搜索,只有输入行。 好吧,也许有几个过滤器。 但是集成需要一堆附加功能,这些附加功能是通过SOAP方法完成的。
超级搜索功能仅可通过API使用,界面中的用户感觉不到。
在这种情况下,您通常拥有TK,根据API方法可以使用TK。 您的任务是检查它。 测试人员的一项典型任务是,只需将标准测试设计添加到标准的测试设计中即可测试API测试的功能,而这全都涉及到了帽子!
(究竟需要在API中进行什么测试-我稍后会在另一篇文章中讲述)3.人称方法
原因不同:
- 加快工作
- 使错误本地化(问题出在哪里?在服务器还是客户端上?)
- 测试没有边沿自旋的逻辑
如果系统提供API,通常比通过图形界面进行操作更容易。 此外,API调用可以保存在工具中。 保存后-即使每天清洗10次,您也可以在任何基础上使用。
例如,我们再次转到Users 。 如果要创建用户,则需要填写很多字段!

当然,这可以使用诸如Form Filler之类的特殊插件来完成。 但是,如果您需要足够的系统测试数据怎么办? 还有俄语?
手动填写字段令人难过和沮丧! 而且,如果您需要每周或每天在干净的测试基础上重复进行此操作(通常是一场噩梦)。 这是立即执行常规操作的第一要务。
在这种情况下,自动化的角色将发挥作用。 可以通过CreateUser REST请求创建用户。 一旦注册了正常的“真实”数据,我们便每次使用它。 赢利!
无需手动填写表格(1分钟就用“ lprulpk”值填写字段,而是1分钟),然后按“发送”按钮。 在这种情况下,这些值将更加合适。
在邮递员中,您可以创建一个单独的文件夹来准备测试库,在其中塞满十几个请求。 现在,在几秒钟内,无论在任何地方,您获得的数据量都将与您手动驱动数小时的数据一样多!
如果您发现错误,并且不知道将该错误挂在谁身上-前端或后端开发人员,请删除所有不必要的内容。 在没有图形界面的情况下调用该方法。 您可以测试程序逻辑,直到接口准备就绪或断开。
4.自动测试拉取方法
有一个典型的自动化金字塔:
- GUI测试是一个诚实的测试,“用户将如何做”。
- API测试-我们下降到下面的水平,排除了多余的东西。
- 单元测试-单个功能的测试

API一词暗示了测试中将使用什么what
假设我们有:
- 操作 :报告下载;
- 在输入处 :来自手动或自动调整或来自其他地方的数据;
- 输出 :根据某些规则构建的报告
报告构建规则:

GUI测试是一个诚实的测试,机器人会执行用户会做的所有事情。 它会打开浏览器,按一下按钮...但是,如果有东西掉落,您将在很长一段时间内弄清楚确切的位置。
API测试是相同的,只是没有浏览器。 我们只需将数据提交到输入并检查输出中的数据即可。 例如,您可以在Excel中输入最终答案,然后让机器人进行协调,是否正确填写了数据? 查找问题变得更加容易。
单元测试是当我们分别测试每个功能时。 我们分别查看单元格1的计算,分别查看单元格2的计算,依此类推。 此类测试最快速地被追查,并且易于在其上定位错误。
间接API调用
实际上,当用户使用GUI时,他也使用API。 他只是不知道,他根本不需要。
也就是说,当用户打开系统并尝试下载报告时,系统的工作方式与内部的魔力无关紧要。 他具有单击“下载报告”的按钮。 用户通过GUI(图形用户界面)进行工作。

但实际上,该图形用户界面下有一个API。 当用户单击该按钮时,该按钮将调用报表构建功能。

必要时,报表构建功能可以调用10个其他功能。
现在,用户可以在他面前看到一份现成的报告。 他甚至不知道就调用了复杂的API!
API测试是什么意思?
首先,我们的意思是测试VIA API。 他们确实这么说,“ API测试”是一个常用术语,但从技术上讲,该术语是不正确的。 我们不测试API,也不测试GUI(图形界面)。 我们正在通过图形或软件界面测试某种功能。
但这是一个确定的表达。 您可以使用它并说“ API测试”。 当我们谈论它时,是指:
集成-当一个系统通过某种数据传输协议与另一个系统进行通信时。 这称为远程API,即通过网络,某种协议(HTTP,JMS等)进行的通信。 与此相反,还有本地API(也称为“共享内存API”)-这是程序与之通信或与同一虚拟内存中的另一个程序进行通信的API。

当我们谈论测试API时,通常是指测试远程API。 当我们有两个位于不同计算机上的系统以某种方式相互通信时。
而且,如果您在空缺中看到“ API测试”,则最有可能暗示了调用SOAP或REST服务并对其进行测试的能力。 虽然总是值得澄清的!
总结
API(应用程序编程接口)是程序提供的合同。 “可以通过这种方式与我联系,并承诺这样做。”
合同包括:
- 我们可以执行的操作本身
- 输入数据
- 输出数据(数据内容或错误消息)。 ”。