接口测试(上)

简介: 接口测试(上)

==接口测试测试维度==

image-20230527153912514.png


概要



接口的概念: 
  接口就是系统或者组件之间的交互点, 通过这些交互点可实现数据的交互 

image-20230527123450247.png

分类:


  • 按照协议划分 : http 、tcp、 ip
  • 按照语言进行划分: Java、 go、 c++…
  • 按照范围划分



系统之间的接口: 多个内部系统之间的交互, 内部系统和外部系统之间的交互
程序内部的接口: 方法与方法之间, 模块与模块之间的交互


接口测试


是对系统或组件之间的接口进行测试,主要是校验数据是否正确、传递和控制管理过程,以及相互逻辑依赖关系


接口测试的原理


模拟客户端向服务器发送请求 ,服务器接受请求之后进行相应的业务处理。 并向客户端返回响应数据,检查响应数据是否符合预期。
-----
主要针对的测试目标: 服务器

image-20230527124356900.png


**接口测试的特点: **


  • 测试可以提前介入, 提早发现bug。 符合质量控制前移的理念
  • 可以发现一些页面操作发现不了的问题
  • 接口测试低成本高效益(可以实现自动化测试)
  • 不同于传统的单元测试,接口测试是从用户的角度对系统进行全面的检查


**接口测试的实现方式: **


  • 使用测试工具(jmeter 、 postman、fiddler)
  • 通过编写自动化测试代码来实现(python + Requests框架)


HTTP协议



概要:


协议 : 就是双方都要遵守的规则


**什么是HTTP协议: **


超文本传输协议, 是一个基于请求和响应模式的、应用层的协议,也是互联网应用最广泛的协议


HTTP特点:


  • 支持客户端/服务器模式
  • 简单快速
  • 灵活
  • 无连接
  • 无状态


**URL: **

定义 : 
 统一资源定位符,是互联网标准资源的地址。HTTP通常用URL来建立链接和传输数据
-------
格式: 
http://www.baidu.com

URL每部分代表的含义及其组成


image-20230527131216440.png


HTTP请求


一个HTTP请求通常由以下几部分组成:


1.请求行:包含请求方法、请求的URL和HTTP协议的版本号,例如:GET /index.html HTTP/1.1


2.请求头部:包含请求的一些元数据,例如:Host、User-Agent、Accept、Content-Type等等。请求头部是以键值对的形式进行设置的。


3.空行:请求头部和请求体之间必须有一个空行。


4.请求体:一些请求方法,如POST,PUT等需要在请求体中携带数据,例如:表单数据、JSON数据、XML数据等等。由请求头部中的content-Type决定


请求头部的各个信息:


HTTP请求头包含了客户端向服务器发送的各种元数据,这些元数据描述了请求的特征、客户端的信息以及客户端期望的响应内容。以下是一些常见的HTTP请求头部信息及其解释:


1. Accept:指定客户端能够接收的内容类型,例如:text/html、application/json、image/png等等。
2. (★★★)Accept-Encoding:指定客户端能够接收的内容编码方式,例如:gzip、deflate、br等等。
3. Accept-Language:指定客户端的语言偏好,例如:en-US、zh-CN等等。
4. Cache-Control:指定客户端的缓存策略,例如:max-age、no-cache等等。
5. Connection:指定客户端与服务器的连接类型,例如:keep-alive、close等等。
6. Content-Length:指定请求体的长度。
7. (★★★★★)Content-Type:指定请求体的类型,例如:application/x-www-form-urlencoded、multipart/form-data等等。
8. Host:指定请求的目标主机名和端口号。
9. User-Agent:指定客户端的身份标识,例如:Mozilla/5.0 (Windows NT 10.0; WinHTTP请求头包含了客户端向服务器发送的各种元数据,这些元数据描述了请求的特征、客户端的信息以及客户端期望的响应内容。以下是一些常见的HTTP请求头部信息及其解释:
10. Accept:指定客户端能够接收的内容类型,例如:text/html、application/json、image/png等等。
11. Accept-Encoding:指定客户端能够接收的内容编码方式,例如:gzip、deflate、br等等。
12. Accept-Language:指定客户端的语言偏好,例如:en-US、zh-CN等等。
13. Cache-Control:指定客户端的缓存策略,例如:max-age、no-cache等等。
14. Connection:指定客户端与服务器的连接类型,例如:keep-alive、close等等。
15. Content-Length:指定请求体的长度。
16. Content-Type:指定请求体的类型,例如:application/x-www-form-urlencoded、multipart/form-data等等。
17. Host:指定请求的目标主机名和端口号。
18. User-Agent:指定客户端的身份标识,例如:Mozilla/5.0 (Windows NT 10.0; WinHTTP请求头包含了客户端向服务器发送的各种元数据,这些元数据描述了请求的特征、客户端的信息以及客户端期望的响应内容。以下是一些常见的HTTP请求头部信息及其解释:
19. Accept:指定客户端能够接收的内容类型,例如:text/html、application/json、image/png等等。
20. Accept-Encoding:指定客户端能够接收的内容编码方式,例如:gzip、deflate、br等等。
21. Accept-Language:指定客户端的语言偏好,例如:en-US、zh-CN等等。
22. Cache-Control:指定客户端的缓存策略,例如:max-age、no-cache等等。
23. Connection:指定客户端与服务器的连接类型,例如:keep-alive、close等等。
24. Content-Length:指定请求体的长度。
25. Content-Type:指定请求体的类型,例如:application/x-www-form-urlencoded、multipart/form-data等等。
26. Host:指定请求的目标主机名和端口号。
27. User-Agent:指定客户端的身份标识,例如:Mozilla/5.0 (Windows NT 10.0; Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)


抓包验证Fiddler


打开fiddler , 然后再浏览器中输入请求地址,点击即可。

image-20230527135406327.png


传统风格的接口


image-20230527142222777.png

对于方法的划分不够明确,只是用get and post两种。


对于url不唯一,统一操作对应不同的url


状态码比较单一


RESTFul风格


image-20230527142912210.png

  • 每个url都代表一种资源
  • 客户端与服务器之间,传递这种资源的某种表现层
  • 客户端通过四个HTTP动词(get/post/update/delete),对服务器资源进行操作
  • 接口之间传递的数据最常用的格式位JSON


接口测试的流程



1. 需求评审
2. 接口文档分析
3. 设计测试用例
4. 执行测试用例
5. 接口缺陷管理与跟踪
6. 生成测试报告
7. 接口自动化持续集成


接口(API)文档的作用


通过接口文档我们才能产生接口测试用例

定义: 
  一般来说是由开发人员所编写的,用来描述系统所提供接口信息的文档。开发人员也是根据接口文档来进行开发, 并需要一直遵守维护


**接口文档的作用: **


1. 能够让开发人员更好的配合, 提高工作效率
2. 项目迭代或者项目人员迭代时, 方便后期人员查看和维护
3. 方便测试人员进行测试


接口文档的结构:


  1. 基本信息【资源路径、请求方法、接口描述】
  2. 请求参数【请求头、请求体】
  3. 返回数据【状态码、 错误码、 错误信息】


写测试用例的好处:


  1. 防止测试点漏测,条理清晰
  2. 方便配置测试工具


功能测试


单接口功能


比如登录接口、注册接口等等...
直接进行单个接口测试

业务场景功能


按照实际的用户使用场景,梳理接口业务场景
组织业务场景时, 一般只需要做正向测试即可, 因为在此之前我们已经完成了单接口测试, 此时只需要按照实际的业务场景进行功能连调测试。
- 一般建议用最少的用例测试最多的例子

image-20230527155016676.png

后期还会有功能性能测试 and 安全测试
本节不作为重点去写


SQL注入的漏洞

image-20230527160126091.png


测试用例:

为了测试Web应用程序是否受到SQL注入攻击的威胁,您可以使用以下测试用例:


1. 基本SQL注入测试用例:
尝试在输入参数中注入简单的SQL语句,例如:
输入参数:' or 1=1 --
这个输入参数可以将SQL注入到SQL语句中,将查询条件修改为1=1,从而绕过身份验证和访问控制等机制。
2. 注入SELECT语句测试用例:
尝试在输入参数中注入SELECT语句,例如:
    输入参数:1; SELECT * FROM users --
这个输入参数可以将两条SQL语句注入到SQL查询中,第一条SQL语句会查询id=1的用户,第二条SQL语句会查询所有用户的信息,从而泄露数据库中所有用户的信息。
3. 注入UPDATE语句测试用例:
尝试在输入参数中注入UPDATE语句,例如:
输入参数:1; UPDATE users SET password='123456' WHERE id=1 --
这个输入参数可以将两条SQL语句注入到SQL查询中,第一条SQL语句会查询id=1的用户,第二条SQL语句会将该用户的密码修改为'123456',从而修改了数据库中的数据。
4. 注入DELETE语句测试用例:
尝试在输入参数中注入DELETE语句,例如:
输入参数:1; DELETE FROM users WHERE id=1 --
这个输入参数可以将两条SQL语句注入到SQL查询中,第一条SQL语句会查询id=1的用户,第二条SQL语句会将该用户从数据库中删除,从而删除了数据库中的数据。
5. 注入UNION语句测试用例:
尝试在输入参数中注入UNION语句,例如:
输入参数:1; UNION SELECT * FROM users --
这个输入参数可以将两条SQL语句注入到SQL查询中,第一条SQL语句会查询id=1的用户,第二条SQL语句会查询所有用户的信息,并将两条查询结果合并到一起,从而泄露数据库中所有用户的信息。
6. 注入子查询语句测试用例:
尝试在输入参数中注入子查询语句,例如:
输入参数:1; SELECT * FROM users WHERE id=(SELECT id FROM users WHERE name='admin') --
这个输入参数可以将两条SQL语句注入到SQL查询中,第一条SQL语句会查询id=1的用户,第二条SQL语句会在users表中查询name为'admin'的用户的id,从而绕过身份验证和访问控制等机制,并获取管理员账户的访问权限。


与手工测试不同之处


1. 接口测试主要是测参数对应的参数值是否正确
非1: 手工测试主要是测输入到数据框的数据是否正确
2. 接口测试还可以对参数本身进行测试
 #2: 只对数据进行测试


image-20230527161623454.png

与手工相同之处


测试用例的八大要素 and 测试文档的要素

image-20230527162051985.png


image.png



目录
相关文章
|
25天前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
46 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
2月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
212 7
Jmeter实现WebSocket协议的接口测试方法
|
2月前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
223 3
快速上手|HTTP 接口功能自动化测试
|
1月前
|
JavaScript 前端开发 API
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
38 0
|
2月前
|
JavaScript 前端开发 测试技术
ChatGPT与接口测试
ChatGPT与接口测试,测试通过
43 5
|
3月前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
|
4月前
|
存储
Postman 接口测试配置 Pre-request Script
Postman 接口测试配置 Pre-request Script
196 5
Postman 接口测试配置 Pre-request Script
|
3月前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
|
3月前
|
SQL Java 测试技术
SpringBoot单元测试快速写法问题之PorkService 接口中的 getPork 方法的作用如何解决
SpringBoot单元测试快速写法问题之PorkService 接口中的 getPork 方法的作用如何解决
|
3月前
|
XML Web App开发 数据挖掘
Postman接口测试工具全解析:功能、脚本编写及优缺点探讨
文章详细分析了Postman接口测试工具的功能、脚本编写、使用场景以及优缺点,强调了其在接口自动化测试中的强大能力,同时指出了其在性能分析方面的不足,并建议根据项目需求和个人偏好选择合适的接口测试工具。
104 1