# 武术比赛报名系统 - 测试方案指南 ## 📋 目录 1. [API接口测试](#api接口测试) 2. [自动化测试脚本](#自动化测试脚本) 3. [压力测试](#压力测试) 4. [数据验证测试](#数据验证测试) --- ## 1. API接口测试 ### 方式A:使用Apifox/Postman(推荐) **优点**: - 图形化界面,操作简单 - 支持环境变量、前置脚本、断言 - 可以导入导出测试集合 - 支持Mock Server - 团队协作方便 **步骤**: 1. **安装工具** - Apifox: https://www.apifox.cn/ - Postman: https://www.postman.com/ 2. **导入测试集合** ``` 导入文件: test/api-test-collection.json ``` 3. **配置环境变量** ``` baseUrl: http://your-api-domain.com username: your_username password: your_password ``` 4. **运行测试** - 单个接口测试:点击"发送"按钮 - 批量测试:使用"测试套件"功能 - 定时测试:设置定时任务自动运行 5. **查看测试报告** - Apifox自动生成测试报告 - 包含通过率、响应时间、错误详情 ### 方式B:使用curl命令(简单快速) ```bash # 1. 登录获取token curl -X POST http://your-api-domain.com/martial/auth/login \ -H "Content-Type: application/json" \ -d '{"username":"test_user","password":"test_password"}' # 2. 获取赛事列表(替换YOUR_TOKEN) curl -X GET "http://your-api-domain.com/martial/competition/list?current=1&size=20" \ -H "Blade-Auth: Bearer YOUR_TOKEN" # 3. 获取选手列表 curl -X GET "http://your-api-domain.com/martial/athlete/list?current=1&size=100" \ -H "Blade-Auth: Bearer YOUR_TOKEN" # 4. 新增选手 curl -X POST http://your-api-domain.com/martial/athlete/submit \ -H "Content-Type: application/json" \ -H "Blade-Auth: Bearer YOUR_TOKEN" \ -d '{"name":"测试选手","idCard":"110101199001011234","team":"测试队伍"}' ``` --- ## 2. 自动化测试脚本 ### 使用Node.js测试脚本 **优点**: - 完全自动化,无需手动操作 - 可集成到CI/CD流程 - 详细的测试报告 - 自动清理测试数据 **安装依赖**: ```bash cd test npm init -y npm install axios ``` **配置测试**: 编辑 `test/api-test.js` 文件,修改以下配置: ```javascript const config = { baseURL: 'http://your-api-domain.com', // 修改为实际API地址 timeout: 10000, testUser: { username: 'test_user', // 修改为测试账号 password: 'test_password' // 修改为测试密码 } }; ``` **运行测试**: ```bash node test/api-test.js ``` **测试输出示例**: ``` ============================================================ 武术比赛报名系统 - API自动化测试 ============================================================ 测试开始时间: 2025-12-11 10:30:00 API地址: http://your-api-domain.com 【测试1】用户登录 ✓ 登录请求HTTP状态码 ✓ 登录业务状态码 ✓ 返回Token Token: eyJhbGciOiJIUzI1NiI... 【测试2】获取轮播图列表 ✓ 轮播图请求HTTP状态码 ✓ 轮播图业务状态码 ✓ 返回数据格式 轮播图数量: 3 ...(省略其他测试) ============================================================ 测试结果汇总 ============================================================ 总测试数: 42 通过: 40 ✓ 失败: 2 ✗ 成功率: 95.24% 耗时: 3.52秒 测试结束时间: 2025-12-11 10:30:04 ============================================================ ``` --- ## 3. 压力测试 ### 使用Apache Bench (ab) **测试并发性能**: ```bash # 安装ab工具(Windows用户可以安装Apache) # Ubuntu: sudo apt-get install apache2-utils # Mac: brew install ab # 测试赛事列表接口(100个请求,10个并发) ab -n 100 -c 10 \ -H "Blade-Auth: Bearer YOUR_TOKEN" \ http://your-api-domain.com/martial/competition/list?current=1&size=20 # 测试选手列表接口(1000个请求,50个并发) ab -n 1000 -c 50 \ -H "Blade-Auth: Bearer YOUR_TOKEN" \ http://your-api-domain.com/martial/athlete/list?current=1&size=100 ``` ### 使用wrk(更强大的压力测试工具) ```bash # 安装wrk # Ubuntu: sudo apt-get install wrk # Mac: brew install wrk # 基础压力测试(持续30秒,12个线程,400个并发连接) wrk -t12 -c400 -d30s \ -H "Blade-Auth: Bearer YOUR_TOKEN" \ http://your-api-domain.com/martial/competition/list # POST请求压力测试 wrk -t12 -c400 -d30s -s post.lua \ -H "Content-Type: application/json" \ -H "Blade-Auth: Bearer YOUR_TOKEN" \ http://your-api-domain.com/martial/athlete/submit ``` --- ## 4. 数据验证测试 ### 验证数据完整性 创建数据验证脚本 `test/data-validation.js`: ```javascript // 验证所有必填字段 async function validateCompetitionData() { const res = await api.get('/martial/competition/list'); const competitions = res.data.data.records || res.data.data; const issues = []; competitions.forEach((item, index) => { if (!item.id) issues.push(`赛事${index}: 缺少id字段`); if (!item.name && !item.title) issues.push(`赛事${index}: 缺少name/title字段`); if (!item.location && !item.address) issues.push(`赛事${index}: 缺少location/address字段`); }); return issues; } ``` --- ## 5. 测试最佳实践 ### 5.1 测试环境隔离 ``` 开发环境: http://dev-api.example.com 测试环境: http://test-api.example.com 生产环境: http://api.example.com ``` ### 5.2 测试数据管理 - 使用专门的测试账号 - 测试后自动清理数据 - 使用可识别的测试数据前缀(如"测试_") ### 5.3 定期自动化测试 使用cron定时执行测试: ```bash # 每天凌晨2点执行API测试 0 2 * * * cd /path/to/project && node test/api-test.js >> test.log 2>&1 ``` ### 5.4 CI/CD集成 在 `.gitlab-ci.yml` 或 `.github/workflows/test.yml` 中: ```yaml test: stage: test script: - cd test - npm install - node api-test.js only: - main - develop ``` --- ## 6. 快速开始检查清单 - [ ] 修改 `test/api-test.js` 中的 baseURL 和测试账号 - [ ] 安装 axios: `npm install axios` - [ ] 运行测试: `node test/api-test.js` - [ ] 检查测试报告 - [ ] 如有失败,查看错误详情 - [ ] 修复问题后重新测试 --- ## 7. 常见问题 ### Q1: 如何获取测试账号? A: 联系后端开发人员创建测试账号,或使用已有的开发账号。 ### Q2: 测试失败怎么办? A: 1. 检查API地址是否正确 2. 检查网络连接 3. 检查Token是否过期 4. 查看具体错误信息 5. 联系后端开发人员 ### Q3: 如何测试特定功能模块? A: 修改 `api-test.js`,注释掉不需要测试的部分。 ### Q4: 能否测试小程序端? A: 本测试方案主要测试后端API,前端页面需要使用UniApp开发工具或真机测试。 --- ## 8. 联系与支持 - 技术文档: 参考 `API对接方案.md` - 问题反馈: 提交到项目Issue - 紧急联系: 联系项目负责人 --- **最后更新**: 2025-12-11