一、接口测试概述
接口测试是确保API功能正常、性能合适和安全可靠的重要过程。以登录接口为例,我们可以使用Postman进行详细的测试。
二、准备工作
- 确认API文档:确保你有API的文档,包括请求方法、URL、请求参数和返回数据格式等。
- 安装Postman:前往Postman官网下载并安装。
三、登录接口测试步骤
1. 创建新请求
- 打开Postman,点击左上角的“+”按钮创建新的请求。
2. 设置请求类型和URL
- 在请求类型下拉框中选择
POST
。 - 在URL输入框中输入登录接口的URL,例如:
https://api.example.com/login
。
3. 添加请求头
- 点击“Headers”标签,添加必要的请求头,比如:
Content-Type
:application/json
- 其他如
Authorization
等,视API要求而定。
4. 编写请求体
- 点击“Body”标签,选择
raw
并设置格式为JSON
。 - 在请求体中输入登录所需的参数,例如:
{ "username": "testuser", "password": "testpassword" }
- 1
- 2
- 3
- 4
5. 发送请求
- 点击“Send”按钮,Postman将向API发送请求。
6. 检查响应
- 查看下方的响应部分,关注以下内容:
- 状态码:应为200(成功)、401(未授权)或其他,根据情况而定。
- 响应时间:确保在可接受的时间范围内。
- 响应体:查看返回的JSON数据,确保包含预期的字段,如token、用户信息等。
7. 断言测试结果
- Postman允许你编写测试脚本,点击“Tests”标签,添加以下代码进行简单的断言:
pm.test("状态码为200", function () { pm.response.to.have.status(200); }); pm.test("响应体包含token", function () { pm.expect(pm.response.json()).to.have.property('token'); });
- 1
- 2
- 3
- 4
- 5
- 6
- 7
四、主要关注点
- 请求有效性:确保请求参数的有效性,包括正确的username和password。
- 异常处理:测试无效的登录信息(如错误密码、未注册用户等),确保返回适当的错误信息和状态码。
- 安全性:测试是否有暴力破解或其他安全漏洞,比如尝试发送大量请求。
- 性能:在负载情况下测试响应时间。
- 数据完整性:确保响应数据的完整性和正确性。
五、测试场景汇总
功能性测试场景
-
有效的用户名和密码
- 请求体:
{ "username": "validUser", "password": "validPassword" }
- 1
- 2
- 3
- 4
- 预期结果:状态码200,返回用户token。
- 请求体:
-
无效的用户名
- 请求体:
{ "username": "invalidUser", "password": "validPassword" }
- 1
- 2
- 3
- 4
- 预期结果:状态码401,返回错误信息。
- 请求体:
-
无效的密码
- 请求体:
{ "username": "validUser", "password": "invalidPassword" }
- 1
- 2
- 3
- 4
- 预期结果:状态码401,返回错误信息。
- 请求体:
-
空用户名和密码
- 请求体:
{ "username": "", "password": "" }
- 1
- 2
- 3
- 4
- 预期结果:状态码400,提示必填项。
- 请求体:
-
空用户名,正确密码
- 请求体:
{ "username": "", "password": "validPassword" }
- 1
- 2
- 3
- 4
- 预期结果:状态码400,提示必填项。
- 请求体:
-
正确用户名,空密码
- 请求体:
{ "username": "validUser", "password": "" }
- 1
- 2
- 3
- 4
- 预期结果:状态码400,提示必填项。
- 请求体:
-
SQL注入
- 请求体:
{ "username": "' OR '1'='1", "password": "' OR '1'='1" }
- 1
- 2
- 3
- 4
- 预期结果:状态码401,确保系统防范SQL注入。
- 请求体:
-
XSS攻击
- 请求体:
{ "username": "", "password": "validPassword" }
- 1
- 2
- 3
- 4
- 预期结果:状态码401,确保输入被正确处理。
- 请求体:
安全性测试场景
-
密码强度
- 请求体:
{ "username": "validUser", "password": "1234" }
- 1
- 2
- 3
- 4
- 预期结果:状态码400,提示密码强度不足。
- 请求体:
-
暴力破解
- 请求体(示例为第三次失败):
{ "username": "validUser", "password": "wrongPassword" }
- 1
- 2
- 3
- 4
- 预期结果:状态码403,提示账户锁定。
- 请求体(示例为第三次失败):
-
会话管理
- 请求体(使用旧token):
{ "username": "validUser", "password": "validPassword" }
- 1
- 2
- 3
- 4
- 预期结果:状态码401,返回未授权。
- 请求体(使用旧token):
性能测试场景
- 高并发登录
- 请求体(模拟多个用户):
{ "username": "user{{n}}", "password": "password{{n}}" }
- 1
- 2
- 3
- 4
- 预期结果:观察系统响应时间和稳定性。
- 请求体(模拟多个用户):
边界测试场景
-
最大用户名长度
- 请求体:
{ "username": "u".repeat(255), "password": "validPassword" }
- 1
- 2
- 3
- 4
- 预期结果:状态码200或400(取决于实现)。
- 请求体:
-
最大密码长度
- 请求体:
{ "username": "validUser", "password": "p".repeat(255) }
- 1
- 2
- 3
- 4
- 预期结果:状态码200或400(取决于实现)。
- 请求体:
-
特殊字符测试
- 请求体:
{ "username": "user!@#$%", "password": "pass!@#$%" }
- 1
- 2
- 3
- 4
- 预期结果:状态码200或400,确保系统能够处理特殊字符。
- 请求体:
其他场景
-
网络异常处理
- 请求体(可使用Postman的模拟功能):
{ "username": "validUser", "password": "validPassword" }
- 1
- 2
- 3
- 4
- 预期结果:系统应正确处理异常。
- 请求体(可使用Postman的模拟功能):
-
重复登录
- 请求体:
{ "username": "validUser", "password": "validPassword" }
- 1
- 2
- 3
- 4
- 预期结果:状态码200,检查是否保持会话。
- 请求体:
-
多设备登录
- 请求体(在不同设备上同时登录):
{ "username": "validUser", "password": "validPassword" }
- 1
- 2
- 3
- 4
- 预期结果:确保多个会话管理正常。
- 请求体(在不同设备上同时登录):
以上均为本人自我总结,需要帮助请私信我,及欢迎各位前来探讨~
各位大佬海涵,这里将插播一条预告:
- 十一月初,赣南脐橙迎来丰收季,果实金黄、汁甜饱满,清爽的酸甜口感令人陶醉。它不仅是冬季美味的水果选择,也是馈赠亲友的最佳礼品,带来温暖与自然的馈赠。
- 作为一个实打实的江西赣州老表,怎么能不宣传一下自家的脐橙呢~~~
以上有任何问题疑问,请私信我,欢迎一起探讨~
评论记录:
回复评论: