6.2 KiB
6.2 KiB
链接状态接口测试文档
接口概览
新增了三个接口用于前端获取链接状态信息:
- 获取链接状态 -
GET /api/link/{codeNo}/status - 检查链接是否存在 -
GET /api/link/{codeNo}/exists - 检查链接是否有效 -
GET /api/link/{codeNo}/valid
测试步骤
1. 准备工作
首先需要生成一个链接用于测试:
# 1. 登录获取JWT令牌
curl -X POST http://localhost:18080/api/auth/login \
-H "Content-Type: application/json" \
-d '{
"username": "your_username",
"password": "your_password"
}'
从响应中获取JWT令牌,后续请求都需要在Header中带上:
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...
2. 生成测试链接
# 2. 生成链接
curl -X POST http://localhost:18080/api/link/generate \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"times": 5,
"linkCount": 2
}'
响应示例:
{
"batchId": 123,
"deductPoints": 250,
"expireAt": "2024-01-15T16:30:00",
"codeNos": ["ABC12345", "DEF67890"]
}
记录其中一个 codeNo,比如 ABC12345,用于后续测试。
3. 测试获取链接状态接口
# 3. 获取链接状态
curl -X GET http://localhost:18080/api/link/ABC12345/status \
-H "Accept: application/json"
预期响应:
{
"codeNo": "ABC12345",
"batchId": 123,
"status": "NEW",
"statusDesc": "新建",
"expireAt": "2024-01-15T16:30:00",
"isExpired": false,
"remainingSeconds": 7200,
"quantity": 50,
"times": 5,
"totalPoints": 250,
"region": null,
"machineId": null,
"loginAt": null,
"createdAt": "2024-01-15T12:00:00",
"updatedAt": "2024-01-15T12:00:00"
}
4. 测试检查链接是否存在接口
# 4. 检查链接是否存在
curl -X GET http://localhost:18080/api/link/ABC12345/exists \
-H "Accept: application/json"
预期响应: true
5. 测试检查链接是否有效接口
# 5. 检查链接是否有效
curl -X GET http://localhost:18080/api/link/ABC12345/valid \
-H "Accept: application/json"
预期响应: true
6. 测试错误情况
6.1 测试不存在的链接
# 测试不存在的链接
curl -X GET http://localhost:18080/api/link/INVALID123/status \
-H "Accept: application/json"
预期响应:
{
"timestamp": "2024-01-15T12:00:00.000+00:00",
"status": 400,
"error": "Bad Request",
"message": "链接不存在: INVALID123",
"path": "/api/link/INVALID123/status"
}
6.2 测试空链接编号
# 测试空链接编号
curl -X GET http://localhost:18080/api/link//status \
-H "Accept: application/json"
预期响应: 404 Not Found
状态值说明
链接状态 (status)
NEW- 新建,未开始使用USING- 使用中,正在执行任务LOGGED_IN- 已登录,任务完成REFUNDED- 已退款EXPIRED- 已过期
区域 (region)
Q- Q区V- V区null- 未分配区域
测试数据验证
1. 数值计算验证
totalPoints=quantity×timesremainingSeconds应该大于0(如果未过期)isExpired应该与当前时间和expireAt一致
2. 状态一致性验证
- 如果
status是EXPIRED,那么isExpired应该是true - 如果
status是LOGGED_IN,那么loginAt不应该为null
3. 时间验证
createdAt≤updatedAtexpireAt>createdAt- 如果
loginAt不为空,那么loginAt≥createdAt
性能测试
1. 响应时间测试
# 使用time命令测试响应时间
time curl -X GET http://localhost:18080/api/link/ABC12345/status
2. 并发测试
# 使用ab工具进行并发测试
ab -n 100 -c 10 http://localhost:18080/api/link/ABC12345/status
错误处理测试
1. 数据库连接异常
模拟数据库连接失败的情况,验证错误处理。
2. 网络超时
模拟网络延迟,验证超时处理。
3. 内存不足
模拟内存不足情况,验证系统稳定性。
安全测试
1. 权限验证
# 不带JWT令牌访问(应该被拦截)
curl -X GET http://localhost:18080/api/link/ABC12345/status
2. SQL注入防护
# 测试SQL注入
curl -X GET "http://localhost:18080/api/link/ABC12345'; DROP TABLE link_task; --/status"
3. XSS防护
# 测试XSS攻击
curl -X GET "http://localhost:18080/api/link/<script>alert('xss')</script>/status"
测试报告模板
测试结果记录
| 测试项目 | 测试结果 | 响应时间 | 备注 |
|---|---|---|---|
| 获取链接状态 | ✅ 通过 | 45ms | 正常 |
| 检查链接存在 | ✅ 通过 | 23ms | 正常 |
| 检查链接有效 | ✅ 通过 | 28ms | 正常 |
| 错误处理 | ✅ 通过 | 15ms | 正常 |
| 性能测试 | ✅ 通过 | 平均35ms | 满足要求 |
问题记录
| 问题描述 | 严重程度 | 状态 | 备注 |
|---|---|---|---|
| 无 | - | - | - |
建议改进
- 可以考虑添加缓存机制,减少数据库查询
- 可以添加链接访问统计功能
- 可以考虑添加链接状态变更通知功能
自动化测试
使用Postman Collection
可以创建Postman Collection来自动化测试这些接口:
- 创建环境变量存储JWT令牌和链接编号
- 设置测试脚本验证响应数据
- 使用Postman Runner批量执行测试
使用JUnit测试
@SpringBootTest
@AutoConfigureTestDatabase
class LinkStatusControllerTest {
@Test
void testGetLinkStatus() {
// 测试获取链接状态
}
@Test
void testLinkNotExists() {
// 测试链接不存在的情况
}
}
总结
这些接口为前端提供了完整的链接状态查询功能,支持:
- 完整的状态信息 - 包括任务详情、过期时间、奖励点数等
- 实时状态计算 - 自动计算是否过期、剩余时间等
- 友好的错误处理 - 提供清晰的错误信息和状态码
- 高性能查询 - 使用响应式编程,支持高并发访问
前端可以根据这些接口实现丰富的用户界面,提供良好的用户体验。