|
|
пре 2 месеци | |
|---|---|---|
| .. | ||
| issue-tracking | пре 2 месеци | |
| screenshots | пре 4 месеци | |
| test-assets | пре 4 месеци | |
| test-records | пре 2 месеци | |
| test-reports | пре 2 месеци | |
| .test-sync.json | пре 2 месеци | |
| README.md | пре 4 месеци | |
| backend-e2e-publish-test-2026-06-28.md | пре 2 месеци | |
| backend-test-report-2026-06-27.md | пре 2 месеци | |
| package-lock.json | пре 3 месеци | |
| package.json | пре 3 месеци | |
| run-agent-tests.js | пре 4 месеци | |
| run-mcp-tests.js | пре 4 месеци | |
| run-tests.js | пре 4 месеци | |
| test-cases.js | пре 3 месеци | |
| test-inventory.md | пре 3 месеци | |
| test-report-growth-assessment.md | пре 2 месеци | |
| test-report-guide.md | пре 4 месеци | |
| test-report.md | пре 3 месеци | |
本测试套件基于 Chrome DevTools MCP 服务,实现心知益家小程序的自动化测试,确保 100% 的需求覆盖度。
系统测试/
├── test-cases.js # 测试用例定义(100% 需求覆盖)
├── run-tests.js # 测试运行器
├── package.json # 项目配置
├── test-reports/ # 测试报告输出目录
│ ├── test-report-{timestamp}.html
│ └── test-report-{timestamp}.json
├── screenshots/ # 测试截图目录
└── .test-sync.json # 需求同步状态文件
cd 系统测试
npm install
# 运行所有测试
npm test
# 仅运行 P0 级测试
npm run test:p0
# 仅运行 P1 级测试
npm run test:p1
# 仅运行 P2 级测试
npm run test:p2
# 仅同步需求,不运行测试
npm run sync
# 仅生成报告
npm run report
测试完成后,在 test-reports/ 目录查看 HTML 报告:
# 打开最新报告
open test-reports/test-report-*.html
| 需求ID | 功能描述 | 测试状态 |
|---|---|---|
| TASK-001 | 家长可创建任务,设置任务名称 | ✅ |
| TASK-002 | 设置任务积分值(1-10分,默认2分) | ✅ |
| TASK-003 | 设置任务截止时间(精确到分钟) | ✅ |
| TASK-005 | 设置任务分类(学习类/生活类/运动类/游戏类/其他) | ✅ |
| TASK-008 | 孩子可查看今日任务列表 | ✅ |
| TASK-009 | 孩子点击"完成"按钮提交任务 | ✅ |
| TASK-012A | 打卡支持照片上传 | ✅ |
| TASK-012B | 打卡支持视频上传 | ✅ |
| TASK-012C | 打卡支持录音上传 | ✅ |
| TASK-012D | 打卡支持文字描述 | ✅ |
| TASK-012E | 打卡支持倒计时功能 | ✅ |
| TASK-012F | 倒计时结束时语音提醒 | ✅ |
| POINT-001 | 完成任务获得基础积分 | ✅ |
| POINT-002 | 超额完成获得额外积分(提前或超质完成,家长制定规则) | ✅ |
| POINT-006 | 超时10分钟以内不算迟到 | ✅ |
| POINT-007 | 每天最多扣5分 | ✅ |
| POINT-008 | 扣分功能按年龄配置 | ✅ |
| POINT-009 | 积分不清零,可设置积分有效期 | ✅ |
| REWARD-001 | 孩子可添加想要的奖励到心愿单 | ✅ |
| REWARD-001A | 家长填写所需积分后心愿进入奖励库 | ✅ |
| REWARD-002A | 家庭奖励库(多个家长都可调整) | ✅ |
| REWARD-002B | 多孩子心愿单隔离 | ✅ |
| REWARD-005 | 家长审批奖励兑换 | ✅ |
| MODE-001 | 家长模式:发布任务、审批奖励 | ✅ |
| MODE-002 | 孩子模式:查看任务、完成任务 | ✅ |
| MODE-003 | 密码切换模式(4位数字密码) | ✅ |
| MODE-006 | 角色权限区分 | ✅ |
| MODE-007 | 孩子信息管理(支持多孩) | ✅ |
| MODE-008 | 孩子账号停用功能 | ✅ |
| MODE-009 | 停用的孩子不可登录 | ✅ |
| STREAK-001 | 首页显示连续完成任务天数 | ✅ |
| STREAK-002 | 火苗图标+天数组合显示 | ✅ |
| STREAK-003 | 连续打卡中断自动重置 | ✅ |
| GUIDE-001 | 首次登录角色选择 | ✅ |
| GUIDE-002 | 成长规划师信息录入(身份证、性别、照片、证书号) | ✅ |
| GUIDE-003 | 成长规划师查看关联家庭列表 | ✅ |
| GUIDE-004 | 成长规划师审核家庭任务 | ✅ |
| GUIDE-006 | 分享码绑定家庭 | ✅ |
| GUIDE-009 | 成长规划师调整家庭成员任务 | ✅ |
当需求文档更新时,测试套件会自动检测变更:
同步日志保存在 .test-sync.json 文件中。
class BaseTestCase {
// 初始化测试
async setup()
// 截图
async screenshot(name)
// 等待元素
async waitForElement(selector, timeout)
// 点击元素
async click(uid)
// 填充输入框
async fill(uid, value)
// 获取页面快照
async getSnapshot()
// 记录测试结果
logResult(passed, error)
}
class TASK_001_TestCase extends BaseTestCase {
constructor() {
super('TASK-001', '家长可创建任务,设置任务名称', 'P0');
}
async run() {
try {
await this.setup();
// 1. 登录家长账号
const snapshot = await this.getSnapshot();
const createTaskBtn = snapshot.find(item => item.text.includes('创建任务'));
// 2. 点击创建任务
await this.click(createTaskBtn.uid);
await this.screenshot('create_task_page');
// 3. 输入任务名称
const nameInput = await this.waitForElement('任务名称');
await this.fill(nameInput.uid, '测试任务');
// 4. 验证任务创建成功
const result = await this.getSnapshot();
const taskExists = result.some(item => item.text.includes('测试任务'));
this.logResult(taskExists);
} catch (error) {
this.logResult(false, error);
}
}
}
本测试套件使用以下 Chrome DevTools MCP 工具:
chrome-devtools_new_page - 打开新页面chrome-devtools_navigate_page - 导航到 URLchrome-devtools_take_snapshot - 获取页面快照chrome-devtools_click - 点击元素chrome-devtools_fill - 填充输入框chrome-devtools_take_screenshot - 截图chrome-devtools_wait_for - 等待元素chrome-devtools_upload_file - 上传文件编辑 test-cases.js 中的 TEST_CONFIG 对象:
const TEST_CONFIG = {
baseUrl: 'http://localhost:8080',
miniprogramUrl: 'http://localhost:8080/weapp',
webAdminUrl: 'http://localhost:8080/admin',
adminAccount: { phone: '13800000001', code: '123456' },
parentAccount: { phone: '13800000002', code: '123456' },
childAccount: { phone: '13800000003', code: '123456' },
timeout: 30000,
screenshotPath: './screenshots'
};
将测试套件集成到 CI/CD 流程:
# .gitlab-ci.yml 或 GitHub Actions
test:
script:
- cd 系统测试
- npm install
- npm run test:p0 # 至少运行 P0 测试
artifacts:
paths:
- 系统测试/test-reports/
expire_in: 30 days
test-cases.js 中创建新的测试类BaseTestCaserun() 方法当需求变更时:
npm run sync 检测变更无法连接到浏览器
元素定位失败
waitForElement 增加等待时间测试超时
TEST_CONFIG.timeout 值MIT License