API代表A pplication P AGC软件我覆盖整个院落。 通常,API用于通过使用任何通信方式来促进两个不同应用程序之间的交互。 在网络上使用API时,我们将其称为“ Web服务”。 最近,API已成为编程的Struts。 与在应用程序中一样,编写API以与数据库或与其他模块进行通信现在已成为一种常见的做法,这就是为什么作为测试人员,我们必须测试API以最大程度地覆盖测试范围。
作为集成测试的一部分,API自动化可以帮助加速测试并提高效率。 由于大多数公司在业务层使用RESTful微服务/ API,因此API测试已成为任何版本测试计划的关键组成部分。
用最简单的术语来说,API是一项服务,可以帮助两个不同的应用程序相互通信。 通常,API用于抽象业务逻辑并直接对任何应用程序进行数据库访问。
从逻辑上讲,我们可以将整个系统分为三层-
- 表示层–这是向最终用户开放的用户界面(GUI)。 质量检查人员在此层执行功能测试。
- 业务层-这是编写逻辑的应用程序用户界面。 用技术术语来说,这就是代码/算法所在的地方。 API在这一层中得到体现。
- 数据库层-存在应用程序数据的位置。
换句话说,API是我们互联世界的大脑。 这套工具,协议,标准和代码将我们的数字世界粘合在一起。 由于它们提供的动态特性和功能,API使公司变得更加敏捷,事物可以移动并且一切都以简化的集成方式一起工作。因此,API测试是在服务级别和集成级别对API进行测试。水平。
API的测试策略-
在测试API时,测试人员应集中精力使用软件进行API调用,以便在观察和记录系统响应之前接收输出。 最重要的是,在各种条件下测试API返回正确的响应或输出。 此输出通常是以下三个之一:
- 通过或失败状态
- 数据或信息
- 调用另一个API
但是,也可能根本没有输出,或者发生了完全无法预测的事情。 这使测试人员的角色对于应用程序开发过程至关重要。由于API是许多应用程序的数据中心,因此API的数据驱动测试可以帮助提高测试覆盖率和准确性。
在直接测试API时,指定通过/失败方案更具挑战性。 但是,在比较响应中的API数据或比较另一个API中的API调用后的行为时,将帮助您设置确定的验证方案。
API测试是整个软件测试和QA测试链中最具挑战性的部分之一,因为它可以确保我们的数字生活以越来越无缝和高效的方式运行。 尽管开发人员倾向于只测试他们正在使用的功能,但是测试人员负责测试单个功能和一系列功能或一系列功能,以发现端到端的工作方式。
API测试类型-
首先确定您需要对API执行哪种类型的测试。 就像测试人员对其产品功能进行不同类型的测试一样,API也是如此。 API的常见测试包括-
单元测试 –测试单个操作的功能。 例如-Google提供了地理编码API,以获取任何位置的经度和纬度。 这通常以地址作为输入并返回lat long。 现在,对于此API的单元测试,测试人员可以通过其他位置并验证结果。
功能测试-这种测试类型主要集中在API的功能上。 这将包括测试用例,以验证HTTP响应代码,响应的验证,万一API返回任何错误的错误代码等。
负载测试-在API处理大量数据并同时有一定数量的用户使用应用程序的情况下,这种类型的测试是必需的。 这会同时增加API命中率,并且可能会崩溃并且无法承担该负载。
安全测试-安全测试尤其重要,因为使用API在两个不同的应用程序之间创建链接。 使用API的核心目的是使应用程序的数据库抽象或隐藏。 这可能包括测试用例,例如授权检查,会话管理等。
互操作性测试-这是为了测试应用程序应该可以访问的API。 这适用于SOAP API。
WS合规性测试-已对API进行测试,以确保正确实施和利用WS-Addressing,WS-Discovery,WS-Federation,WS-Policy,WS-Security和WS-Trust等标准
渗透测试-这是从外部资源中查找API的漏洞。
Web服务/ API协议-
如果我们谈论网络服务,则主要有两种类型的服务,或者我们可以说协议:
REST - REST代表RE表象小号大老贸易交接相比,SOAP这意味着它要克服一切与SOAP的问题,这是块新的。 REST是一种轻量级协议,它使用URL来获取所有必需的信息。 它使用四种HTTP方法来执行任务-
- 获取-获取信息。 例如,在使用位置映射API的情况下获取经度和纬度。
- 后-在资源中插入一些数据。
- 放置-更新资源。
- 删除-从资源中删除。
REST由于其简单轻巧的体系结构,如今已越来越多地使用。
SOAP API-支架使用S impleØbject 一个 CCESS P rotocol。 它使用XML进行消息交换。 执行此任务所需的所有信息均以其WSDL(Web服务描述语言)给出。 SOAP由于其广泛使用的标准和XML而非常笨重。 相对于Rest,SOAP的主要优点是它内置了错误处理功能,并且可以与其他协议(例如SMTP)一起使用。
API测试和自动化工具
有几种工具可以测试API。 当测试人员测试API时,他们必须索要其文档,无论是REST还是SOAP API还是其非基于Web的API,都应该始终有一个文档,其中应写有详细信息。 进行API测试-
- 索取文件
- 首先编写功能或服务级别案例
- 编写集成测试
- 当API足够稳定并通过上述大多数测试时,请执行安全性,性能和负载测试。
- 典型的API文档具有与该API相关的所有信息,例如其请求格式,响应,错误代码,资源,强制性参数,可选参数,标头等。该文档可以通过各种工具(例如,开源,Dapperdox, ReDoc等
- 之后,尝试为API编写服务级别案例。 例如,如果一个API接受n个参数来获取响应,其中m是强制性参数,其他是可选参数,那么一个测试用例应该是尝试不同的参数组合并验证响应。 另一个测试用例可能会验证标头,并尝试在不通过身份验证的情况下运行API并验证错误代码。
- 接下来是集成测试步骤,您需要在其中测试API及其所有相关的API或功能。 这还包括测试API响应,应返回给另一个API或方法的数据以及该API失败时会发生什么。
- 一旦API稳定并且功能测试即将完成,测试人员就可以执行负载,安全性和性能测试。
API自动化
我们经常需要自动化重复执行的测试用例。 对于例如-回归案例。 同样,在进行API测试的情况下,在某些情况下我们可能需要在每个版本之前执行,并且这些情况可以自动化。
有许多用于API自动化的工具,它们非常流行-
- 汤UI
- 卡塔隆工作室
- 邮差
- 捷米特
- 放心
- CloudQA TruAPI
SOUP UI-这是非常流行的API测试工具。您可以使用SoapUI对API进行功能,负载,安全性和合规性测试。
Katalon Studio-建立在Selenium和Appium的顶部,Katalon Studio是一个免费且功能强大的自动化测试工具,用于Web测试,API测试和移动测试。
Postman-邮差是免费的,可以帮助您更有效使用API时。 它具有开发和测试API的所有功能。
Jmeter-尽管Jmeter主要用于性能和负载测试,但在很大程度上也可以用于API功能测试。
RestAssured- Rest-Assured是一个基于Java的库,用于测试RESTful Web服务。该库可以包含在现有框架中,并直接调用其方法以json格式获取响应,然后执行所需的操作。
我以一个示例来说明基本API功能测试所遵循的步骤,这里我使用的是CloudQA提供的TruAPI工具,该工具是新的并且越来越受欢迎-
步骤1-要运行API请求,您需要首先选择“方法类型”并粘贴API的URL。 按发送按钮将请求发送到API或按添加API测试按钮保存请求-
试试这个示例方法类型和API URL
- 方法类型: GET
- APIURL:https://um5fdww2pj.execute-api.us-east-1.amazonaws.com/dev/todos
Step2-API请求信息:
- 大多数API都需要其他输入来执行请求,例如参数,标头,Body(JSON)等。
- 要添加请求的参数,您可以选择相应的“ 参数”选项卡,然后按“ 添加参数”按钮以添加所需的信息。
第3步:通过身份验证发送API请求:
- 如果您的托管API需要身份验证,则可以转到“授权”选项卡,然后从下拉列表中选择“ BasicAuth ”(默认设置为“ Noauth”),然后输入用户名和密码。 现在,您可以发送经过身份验证的请求了。
- 每个API响应均包含不同的值,例如状态码,正文,标头和完成API请求的时间。 下图显示了如何描述收到的API响应。
添加断言:
- 在自动化过程中,使用断言验证输出非常重要。 要在API运行程序中添加断言,请转到“断言”选项卡。 您可以在此处添加一个或多个断言。
- 请按照以下步骤添加断言:
- 选择回应类型
- 完成添加断言
变量:
- “变量”选项卡对于存储作为已发送的API请求的响应而接收的值很有用。 若要保存响应,请转到“变量”选项卡,然后执行以下步骤:
- 添加变量
查看或执行已保存的API请求:
- 当您进入API Runner页面时,请使用“查看保存的测试”按钮查看保存的测试
- 选择一个或多个保存的API测试并默认运行选定的测试,这些测试将显示上一次执行的运行状态信息
- 结果将显示API执行历史记录
这是一个单一的API执行和自动化。 对于现实场景,我们经常需要创建包含所有回归测试用例的API套件,并将其作为回归测试的一部分来运行。 在敏捷中,准备好一套西装以使其能够与CI和CD集成至关重要。
CloudQA附带了有关该工具的非常丰富的文档,CloudQA提供的所有工具都与“无代码自动化”的思想保持一致,并且非常易于手动测试人员使用。
文档链接-https://doc.cloudqa.io/TruAPI.html
翻译自: https://www.javacodegeeks.com/2019/01/api-testing-automation-essential-guide.html