接口测试快速入门1简介

分享
计算机软件开发 2024-10-2 21:52:35 238 0 来自 中国
简介

本章先容应用步伐编程接口(API application programming interface)和 API测试。API测试是软件测试活动的一个告急方面(在范例的基于服务的软件开发过程中)。它包罗测试应用步伐的业务组件,通常体现为API,然后再开发UI。一个微服务处置处罚单一需求的API。
什么是API测试?

API对应用层举行抽象,并提供资源供客户端使用。API是任何范例的Web应用、多层Web应用或移动应用的骨干,它隐蔽了体系的内部细节,比方如作甚斲丧者处置处罚在线付出。
API是应用步伐的中心层,它与后端打交道,通常通过ORM(对象关系映射Object-Relational Mapping)或其他工具,或直接与数据库和前端打交道。API在后端和前端之间充当署理。API根据用户的要求/哀求从后端读取数据,并将相应发送到前端。
没有前端的API提供服务,比方付出网关、气候预告等。
上图体现了范例的基于服务的软件应用结构。它在有数据库,中心层的API,以及从欣赏器或移动应用步伐发出的哀求。
微服务是处置处罚单一需求的API,该服务可以独立运作/摆设。微服务是界说范例软件应用步伐的业务逻辑的API,实现快速开发和可扩展的软件开发理念。
API测试涉及到业务工作流程。这可能被归类为黑盒测试,但从技能上讲,它更像是一种灰盒测试,测试职员简朴地了解一些内部实行的细节,但不深入。他们通过对API内部使用的代码路径或逻辑的技能方面的了解,单独测试API。
API有约定的格式,比如JSON/XM)。它继承给定格式和所需参数的哀求,并提供规定格式的正确相应。这种测试直接与应用服务器打交道。它可能涉及测试应用步伐的单个组件或组合几个组件。标准测试技能实用于测试API时,如等价类、边界值分析、大哀求、无效哀求、未授权哀求等。
API测试必要特定的工具,如httpie、curl、火狐和Chrome插件restclient、Postman和RestAssured等,它们支持哀求方法和用于检索API的协议。常用的协议是HTTP(S)。测试职员用所需的哀求方法键入URL,在API测试工具中以与API斲丧者类似的方式哀求参数,然后在应用步伐的上下文中验证相应/输出。
测试操持或用例是须要的,就像用户工作流测试一样。测试操持有输入,预期输出,和条件条件等。
上述段落中的概念将在以后的章节中更详细地先容。
API测试的须要性

API测试使用之前发现功能/性能/安全/(更多范例)错误的最快方法。
在软件开发过程中,早期测试的投资回报率较高。由于API测试具有更大的代码/功能覆盖面,与前端测试相比,测试的服从每每要高很多。在单个API层面上辨认错误的速率更快,由于与在前端层面上发现错误相比,复杂性更低,发现错误的可能性更高。
不测试API和在前端层面测试只会使测试更加复杂和乏味,而且通常必要更多的测试时间和资源。只测试前端是轻易堕落。由于前端的变革频率每每比后端/中心层高得多,失败率也每每更高。因此辨认错误是后端/API的错误照旧前端的错误是很耗时的。
有效地实行API测试可以资助淘汰测试工作,节流时间和资源。
API测试的范例

API对斲丧者/前端的哀求做出相应。相应应该是快速的。API不应答应未经授权的用户访问。当并发用户访问API时,它应该在规定的时间内相应。对API的无效哀求应恰当处置处罚,并应返回错误信息。API应该服从本地的法律。假如API是作为一种服务提供的,那么它应该保持与斲丧者的合同,参数不应改变,等等。
API最轻易出现的题目


  • 61%的可靠性
  • 22.2%的安全性
  • 16.7%的性能
以下是API测试的范例:
功能测试

办理API的功能题目,比方按照业务要求返反相应。涉及控制流和数据流等。
发送和返回都符合接口操持;正确地实现了功能,比如能创建或删除用户,数据库和缓存数据处置处罚正确等。
参数:参数的边界值和等价类划分;组合可选参数;参数为空字符串、null等特别值;参数长度;参数范例;sql注入;包罗特别符号和编码的参数。
重复与时序测试

多次重复测试返回效果正常且一样。由于API好坏常疏松的耦合,乱序、丢失、重复调用怎样应对?竞争和加锁的情况怎样处置处罚?时序与生命周期特别告急。
重复添加或删除用户,不会对数据库和缓存等造成不良影响,提示的错误码与文档同等。
性能测试

办理负载下的相应时间。当在同一时间点上对给定的API提出多个哀求时,API应该按照服务提供商和斲丧者之间商定的SLA界说,在答应的时间范围内返反相应。 必要思量多个API的组合,以及多个微服务共享服务器、DB等情况。

  • 预计API将怎样被使用?
  • 假如它突然变得盛行,会发生什么?
  • API是否有全球24/7使用的高可用性?
  • 是否有可能出现使用高峰的时间(比方比如全民做核算)?
  • 相应时间、并发、吞吐量等指标。
局域网内单次调用在50ms内完成、在1000并发的情况下最大相应时间不高出60ms、资源占用正常等。是否有峰值,过量是否会产生不良效果。资源斲丧与容量等。重点关注相应时间、吞吐量、并发数、可靠性、 cpu、io、内存、gpu、网络等资源占用。
安全测试

办理了通过获取会话、参数窜改等方式对API举行未授权访问的题目。API不应答应任何匿名/未经授权的用户通过自身得到数据的访问。

  • 蠕虫病毒和其他负载攻击。
  • 无效的认证。
  • SQL注入。
  • 加密级别不敷。通报和存储的敏感数据和日记必要加密,而且难以破解。
  • 未经授权的访问控制。 好坏名单:非授权的主机不能访问接口
  • 云题目。假如API位于云端,安全题目可能更严峻,由于通常对物理网络安全的有效控制很少。
  • 不测的误用。调用方非预期滥用、文档不佳或编程错误等造成,也可能是恶意攻击。
噪声测试

办理哀求中的无效或故障数据。API应该相应地、实时地做出相应。假如数据是无效的,API应该用恰当的错误代码/消息来回应。
弱网

双向通讯能否正常完成。尤其要思量丢包,延长、2G等差网络场景。可以使用linux的防火墙及tc下令或facebook的ATC框架模仿。
错误代码和消息测试

办理不正确的输入数据,并以恰当的错误代码和消息举行相应。通常错误的产生是由于参数通报不正确(比方,不按序次)或超出范围。
扩展测试

与根本办法有关,这是DevOps的通例工作,但API在这种情况下也会被测试。这告急是在微服务架构中,特定的API被更频仍地使用。API应该是可扩展的,由于并发访问将更加频仍,而且API应该不停可用。经常在性能测试中验证。
合规性测试

属于API被斲丧的地方管辖。比方,假如API要求提供个人信息(手机号码、出生都会等),那么这些信息应该由供应商掩护,不答应任何试图获取这些信息的活动,而且应该保持审计日记。
很多行业要求软件必须符合各种法规和标准。法规可能来自政府和准政府实体,如FDA或EPA。标准可能来自于国际构造或行业团体。比方,假如软件处置处罚名誉卡或借记卡,它必须符合PCI标准。以任何方式处置处罚康健信息的体系必须符合HIPAA标准。API可能受制于服务程度协议(SLA)或其他技能协议。假如不能满意这些协议,可能会给构造带来大量的处罚或罚款。
CDCT(斲丧者驱动的合同测试)

意味着服务提供者总是保持类似的哀求有效载荷。这对服务提供者的业务至关告急。假如有效载荷被改变,那么斲丧者哀求将开始失败,这将是业务的损失。即稳固性。
变更管理

你的API是否依赖于其他API?当这些改变时,你将怎样知道?API的数据模式是至关告急的。纵然是对模式的一个小的改变--比方,将一个整数改为实数--也可能导致缺陷和失败。
API通常是由差别的小组开发的。试图确保所有到场者的时间表是同等的,一个小组做了一些改变,然后这些改变就像海啸一样波及所有的开发小组。
失败管理

API在生产中出现故障,你将怎样知道?当(以及假如)外部构造克制使用你的API时,你是否可以或许找出缘故原由和发生的时间?
数据

API的创建、查询、更新和删除等正确。数据库事故、大量数据、数据迁移等。
组合

边界值和API组合场景等。
业务组合:比如扣费必要综合思量闲时、忙时、节假日、团体用户优惠等各种因素。留意接口的程度和垂直组合。
协议

比如SNMP协议与其他厂商的互通,私有部分的实现。又如私有协议。
可移植性题目

你的API有可能必要在差别的层面上工作。它们可能被直接调用,也可能被其他API调用,而这些API又被其他API调用,再由ESB控制。
文档

文档必须举行正确性测试。由于大量的开发者必要与你的API举行交互,文档必须为所有的开发者提供富足的信息。而文档的质量是至关告急的。文档中的数据序次、数据范例、格式、以致大写字母都是至关告急的,必须正确。
易用性

软件开发者是否能真正学习和明确怎样乐成地使用API?是否轻易调用、简便、语法同等等?
可测试性

使API的人很可能想用他们自己的API层来测试它。这可能必要特别的情况(沙箱)供他们发挥,。这些测试是否正确,而不干扰生产情况?
以致可以思量使用mock伪造返回。

  • 其他:更多必要关注的点请参考ISO/IEC 25010:2011
上风

在软件开发的早期阶段发现bug是有利益的。在实行API之前,在后端找到一个bug,可以节流开发API的时间。在中心层/API中发现错误,可以节流前端开发的时间。在产物交付的软件开发模式中,越晚测试,测试工程师在紧急的限期内找到bug就越复杂,越有挑衅性。
在业务层找到bug有利于交付高质量的产物。假如API测试得富足好,对产物开发团队有显着的利益。
以下是做API测试的几个上风。

  • 轻易实现主动化
  • 能更快地找到bug
  • 独立于GUI
  • 较大的代码路径覆盖率
API测试的挑衅


  • API测试中的告急挑衅是参数组合,参数选择和调用排序
  • 没有GUI可用于测试
  • 验证和验证差别体系中的输出对于测试职员来说很难
  • 测试职员必要了解参数选择和分类
  • 非常处置处罚功能必要测试
  • 开发技能
参考资料


  • 本文涉及的python测试开发库 谢谢点赞!
  • 本文干系海量册本下载
增补

应用步伐编程接口(API Application Programming Interface)是差别的进程、步伐和/或体系之间举行通讯的代码。API经常被用于C/S架构,一个进程向其他进程提供某种功能。它支持两个独立软件体系之间的通讯和数据互换。API劈头于长途过程调用(RPC remote procedure call)。
API实际上有两种差别的范例。本地API通常用于与利用体系、数据库和I/O或其他在本地处置处罚器上实行工作的进程举行交互。比方打开文件,分配堆内存,在数据库上启动事故,在屏幕上体现数据,大概捕捉鼠标动作,他们在编程语言中举行API调用来实行使命。通常步伐员以致不知道他们正在调用各种API,由于编程语言每每隐蔽了直接调用。
但一样寻常所说的API是对长途处置处罚的哀求的实现。API实现了指定了本地进程哀求从长途位置完成使命的方式,并界说了该使命的效果返回给本地进程的方式,是一种协议。协议中包罗指定要完成的使命的技能,数据通报给长途进程的方式,信息实际转达给长途位置的方式,效果通报返来的方式,以及表明这些效果的方式。
待汇总

API和SDK的区别
python高效web API开发库FastAPI快速入门教程1简介
python高效web API开发库FastAPI快速入门教程2路径参数和范例及吸收json数据
python笔试面试项目实战2020百练12-使用requests做HTTP接口测试
python3测试工具开发快速入门教程10接口测试简介
使用jython举行dubbo接口及ngrinder性能测试
接口测试面试题
python工具库先容-dubbo:通过telnet接口访问dubbo服务
接口协议工具thrift1快速入门
使用python3和flask构建RESTful API(接口测试服务与mockserver工具)
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2025-4-3 21:20, Processed in 0.138573 second(s), 33 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表