接口测试快速入门1简介

Posted pythontesting

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口测试快速入门1简介相关的知识,希望对你有一定的参考价值。

简介

本章介绍应用程序编程接口(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可用于测试
  • 验证和验证不同系统中的输出对于测试人员来说很难
  • 测试人员需要了解参数选择和分类
  • 异常处理功能需要测试
  • 开发技能

参考资料

补充

应用程序编程接口(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工具)

JMeter接口压力测试课程入门到高级实战(目录)

章节一压力测试课程介绍
1、2018年亿级流量压测系列之Jmeter4.0课程介绍和效果演示
简介:
讲解课程安排,使用的Jmeter版本
2、常用压力测试工具对比
简介:目前用的常用测试工具对比
章节二 JMeter4.x基础知识讲解和压测实操
3、Jmeter基本介绍和使用场景
4、本地快速安装Jmeter4.x
简介:GUI图形界面的安装
1、需要安装JDK8。或者JDK9,JDK10
2、快速下载
5、Jmeter目录文件讲解
简介:讲解jmeter解压文件里面的各个目录,文件等
6、Jmeter语言版本中英文切换
简介:
讲解怎么改变jmeter的GUI界面语言版本
7、使用SpringBoot 2.0快速编写API测试接口
简介
使用java的框架springBoot快速编写几个API接口测试
8、创建Jmeter测试计划,快速压测一个接口
简介:
通过带着why来学习,快速创建一个测试计划
章节三 Jmeter核心组件讲解和实操
9、Jmeter基础功能组件介绍线程组和Sampler
简介:讲解Jmeter里面GUI菜单栏主要组件
10、Jmeter的断言基本使用
简介:介绍什么是断言及基本使用
11、Jmeter实战之压测结果聚合报告分析
简介:讲解压测结果的聚合报告
12、Jmeter压测脚本JMX讲解
简介:压测脚本JMX讲解
1、打开方式subline,或者xml编辑器
2、运行日志和压测时间查看(基础按钮)
章节四 自定义变量和CSV可变参数实操

13、Jmeter用户自定义变量实战
简介:什么是用户自定义变量,怎样使用
为什么使用:很多变量在全局中都有使用,或者测试数据更改,可以在一处定义,四处使用
14、Jmeter实战之CSV可变参数压测
简介:
实战操作jmeter读取CSV和Txt文本文件里面的参数进行压测
1、线程组->add -> Config Element(配置原件)-> CSV data set config (CSV数据文件设置)
15、CSV文件多参数使用
简介:在读取的配置文件里面,同时使用多个自定义参数
章节五 Mysql数据库压测实操
16、Jmeter压测实战之JDBC request压测Mysql讲解
简介:讲解jdbc压测mysql相关准备工作,jar包添加,配置讲解
17、Jmeter压测实战之JDBC request压测Mysql, select语句
简介:使用jmeter压测mysql,select,insert语句
章节六 高级篇之分布式压测基础知识
18、分布式压测介绍
简介:讲解什么是分布式压测
19、Jmeter分布式压测原理
简介:讲解Jmeter分布式压测原理
章节七 高级篇之阿里云Linux服务器压测接口实战
20、SpringBoot 接口打包,并用jar包方式部署
简介:用jar包方式在控制台进行启动
打包 mvn package && java -jar target/gs-spring-boot-0.1.0.jar
21、阿里云服务器介绍和ECS服务器使用
简介:
阿里云服务器介绍和购买ECS服务器等
推荐购买2G内存以上的进行开发学习
22、阿里云Linux服务器下安装启动JDK8并配置环境变量
简介:在阿里云环境下安装JDK8并配置环境变量
23、部署java项目到阿里云服务器和守护进程讲解
简介:
部署项目到阿里云,并启动,公网可以访问
24、阿里云Linux服务器安装Jmeter 4.0
简介:在阿里云环境下安装Jmeter
25、Jmeter非GUI界面 参数讲解
讲解:非GUI界面,压测参数讲解
26、项目实战之阿里云Linux服务器下非GUI执行jmeter压测
简介:
在阿里云服务器上以非GUI界面去执行JMX压测脚本
章节八 高级篇之阿里云压测 html可视化压测报告细讲
27、阿里云Linux服务器 Jmeter压测实战之jtl文件生成和查看
简介:
利用软件从阿里云Centos服务器下载压测报告,讲解Jtl文件,并怎么查看文件
可以通过打开jmeter,新建线程组->summary report->浏览文件 进行查看
28、Jmeter压测接口的性能优化
简介:讲解Jmeter压测减少资源使用的一些建议,即压测结果更准确
29、项目实战之Jmeter压测生成多维度图形化HTML测试报告
简介:
把Jmtere压测结果转换为Html
30、Jmeter图形化HTML压测报告dashboard讲解
简介:
讲解压测报告 html里面Dashboard的核心指标
31、Jmeter图形化HTML压测报告Charts报表讲解
简介:
讲解压测报告 html里面Charts的核心指标
章节九 高级篇之多节点JMeter分布式压测实战
32、Jmeter4.0分布式压测准备工作
简介:讲解Linux服务器上jmeter进行分布式压测的相关准备工作
33、阿里云jmeter压测常见问题处理
简介:讲解阿里云上安装jmeter常见问题的处理,安装遇到的问题等等
34、Jmeter4.0分布式压测实战
简介:Jmeter分布式压测实战,压测接口
章节十 高级篇之Jmeter压测课程总结和架构浅析
35、课程总结和关于系统架构,推荐学习资料
简介:讲解测试人员的基础技能,系统架构知识,相关推荐书籍,课程总结等

更多详情可以参考更多学习资料可参考:

可参考博文:[JMeter接口压力测试详解](http://blog.51cto.com/13672582/2171476)

https://xdclass.net/html/course_catalogue.html?video_id=3
http://edu.51cto.com/course/13251.html

以上是关于接口测试快速入门1简介的主要内容,如果未能解决你的问题,请参考以下文章

JMeter 接口测试快速入门

JMeter 接口测试快速入门

Jmeter接口压测快速入门

Spring AOP快速入门详解

Spring AOP快速入门详解

jmeter 接口测试快速入门