# 员工问卷组件测试指南 ## 一、组件概述 **员工问卷组件**(ProfileSurveyComponent)是一个完整的员工能力调研问卷系统,包含以下特性: ### 核心功能 - ✅ **企业微信身份认证**:自动识别登录员工身份 - ✅ **三状态设计**:欢迎页 → 答题页 → 结果页 - ✅ **17道调研题目**:覆盖技术能力、项目经验、承接偏好、协作习惯等6大模块 - ✅ **多种题型支持**:单选、多选、文本、数字、多行文本 - ✅ **自动保存进度**:每答一题自动保存,支持中途退出恢复 - ✅ **能力画像生成**:自动生成员工能力摘要卡片 - ✅ **蓝色/橙色主题**:区别于客户问卷的紫色主题 ### 技术实现 - **文件路径**: - `src/modules/profile/pages/profile-survey/profile-survey.component.ts` - `src/modules/profile/pages/profile-survey/profile-survey.component.html` - `src/modules/profile/pages/profile-survey/profile-survey.component.scss` - **路由地址**:`/wxwork/:cid/survey/profile` - **数据存储**:SurveyLog 表,type='survey-profile' --- ## 二、访问测试 ### 方式1:直接URL访问(推荐测试方式) ``` http://localhost:4200/wxwork/{公司ID}/survey/profile ``` **示例**: ``` http://localhost:4200/wxwork/abc123/survey/profile ``` > **注意**:需要先在企业微信中完成员工身份认证,或在测试环境中模拟员工登录。 ### 方式2:从企业微信端访问 1. 在企微工作台增加"员工问卷"入口 2. 点击后跳转到问卷页面 3. 自动识别当前员工身份 --- ## 三、测试用例 ### 3.1 基本流程测试 #### 测试用例1:首次填写问卷 **步骤**: 1. 访问问卷URL 2. 查看欢迎页是否正确显示员工头像和姓名 3. 点击"开始填写"按钮 4. 依次回答17道题目 5. 查看最后一题是否显示"提交"按钮 6. 点击"提交" 7. 查看是否跳转到结果页并显示能力画像 **预期结果**: - ✓ 欢迎页显示员工信息 - ✓ 进度条正确显示进度 - ✓ 题目按顺序展示 - ✓ 提交成功,显示结果页 - ✓ 能力画像正确生成 #### 测试用例2:中途退出恢复进度 **步骤**: 1. 开始填写问卷 2. 回答前5道题 3. 关闭页面或刷新 4. 重新访问问卷URL 5. 查看是否恢复到第6题 **预期结果**: - ✓ 自动恢复进度 - ✓ 前5题答案已保存 - ✓ 从第6题继续 #### 测试用例3:重新填写问卷 **步骤**: 1. 完成问卷提交后 2. 重新访问问卷URL 3. 查看欢迎页是否有"已填写过问卷"提示 4. 点击"开始填写" 5. 查看是否可以修改答案 **预期结果**: - ✓ 显示已填写提示 - ✓ 可以重新填写 - ✓ 提交后更新数据 --- ### 3.2 题型交互测试 #### 测试用例4:单选题 **测试题目**:第5题、第8题、第10题等 **步骤**: 1. 点击某个选项 2. 查看是否自动跳转到下一题 3. 点击"上一题"返回 4. 查看之前的选择是否保留 **预期结果**: - ✓ 选中后自动跳转 - ✓ 单选按钮状态正确 - ✓ 选择被正确保存 #### 测试用例5:多选题(有选择上限) **测试题目**:第1题(最多选3项)、第3题(最多选2项) **步骤**: 1. 依次选择4个选项 2. 查看是否弹出"最多只能选择X项"提示 3. 取消一个选项 4. 再选择另一个选项 5. 查看选择进度是否正确显示(如"已选 3/3 项") **预期结果**: - ✓ 达到上限时提示 - ✓ 复选框状态正确 - ✓ 选择进度显示正确 #### 测试用例6:多选题(无上限) **测试题目**:第2题、第9题、第11题等 **步骤**: 1. 选择多个选项 2. 点击"下一题" 3. 查看是否保存所有选择 **预期结果**: - ✓ 可选择任意数量 - ✓ 所有选择被保存 #### 测试用例7:"其他"选项 **测试题目**:第1题、第6题 **步骤**: 1. 点击"其他"选项 2. 查看是否显示输入框 3. 输入自定义内容 4. 点击"下一题" 5. 返回查看是否保存 **预期结果**: - ✓ 显示输入框 - ✓ 自定义内容被保存 #### 测试用例8:文本输入 **测试题目**:第4题、第6题 **步骤**: 1. 在输入框中输入文本 2. 按Enter键或点击"下一题" 3. 返回查看是否保存 **预期结果**: - ✓ 文本正确保存 - ✓ Enter键触发下一题 #### 测试用例9:多行文本输入 **测试题目**:第5题、第7题、第16题、第17题 **步骤**: 1. 输入多行文本(包含换行) 2. 点击"下一题" 3. 返回查看是否保存 **预期结果**: - ✓ 多行文本正确保存 - ✓ 换行符保留 #### 测试用例10:数字输入 **测试题目**:第8题紧急订单上限 **步骤**: 1. 输入数字 2. 输入非数字字符 3. 查看输入限制 **预期结果**: - ✓ 只能输入数字 - ✓ 数字正确保存 --- ### 3.3 必填验证测试 #### 测试用例11:必填题验证 **步骤**: 1. 来到必填题(带*号) 2. 不填写,直接点击"下一题" 3. 查看是否弹出提示 **预期结果**: - ✓ 弹出"请完成当前题目"提示 - ✓ 不允许跳过 #### 测试用例12:选填题跳过 **步骤**: 1. 来到选填题(第6题、第7题等) 2. 不填写,直接点击"下一题" 3. 查看是否可以跳过 **预期结果**: - ✓ 可以直接跳过 - ✓ 不影响后续答题 --- ### 3.4 导航测试 #### 测试用例13:上一题/下一题 **步骤**: 1. 答到第5题 2. 点击"上一题" 3. 查看是否回到第4题 4. 在第1题点击"上一题" 5. 查看按钮是否禁用 **预期结果**: - ✓ 导航正确 - ✓ 第1题的"上一题"按钮禁用 #### 测试用例14:进度条 **步骤**: 1. 观察进度条 2. 每答一题查看进度是否增加 **预期结果**: - ✓ 进度条正确显示 - ✓ 数字显示"当前题号/总题数" --- ### 3.5 结果页测试 #### 测试用例15:能力画像显示 **步骤**: 1. 完成全部问卷 2. 查看结果页的能力画像摘要 3. 对比填写的答案是否正确显示 **预期结果**: - ✓ 擅长风格正确显示 - ✓ 技术优势正确显示 - ✓ 周承接量正确显示 - ✓ 其他信息完整 #### 测试用例16:重新填写 **步骤**: 1. 在结果页点击"重新填写" 2. 查看是否跳转到答题页第1题 **预期结果**: - ✓ 正确跳转 - ✓ 可以修改答案 #### 测试用例17:返回首页 **步骤**: 1. 在结果页点击"返回首页" 2. 查看是否跳转到工作台 **预期结果**: - ✓ 正确跳转 --- ## 四、数据验证 ### 4.1 数据库检查 **查询SurveyLog表**: ```javascript // 在浏览器控制台执行 const Parse = window.Parse; const query = new Parse.Query('SurveyLog'); query.equalTo('type', 'survey-profile'); query.include('profile'); query.descending('createdAt'); const results = await query.find(); console.log('员工问卷记录:', results.map(r => ({ id: r.id, profile: r.get('profile')?.get('name'), isCompleted: r.get('isCompleted'), completedAt: r.get('completedAt'), data: r.get('data') }))); ``` **预期结果**: - ✓ type = 'survey-profile' - ✓ profile 指向员工Profile对象 - ✓ data 包含所有答案 - ✓ isCompleted = true(已完成) - ✓ completedAt 有完成时间 --- ## 五、样式检查 ### 5.1 主题色检查 - ✓ 主色调为蓝色(#3B82F6) - ✓ 强调色为橙色(#F59E0B) - ✓ 与客户问卷的紫色主题有明显区分 ### 5.2 响应式检查 **测试步骤**: 1. 在手机端打开问卷 2. 在平板端打开问卷 3. 在桌面端打开问卷 **预期结果**: - ✓ 移动端优先设计 - ✓ 各尺寸下布局正常 - ✓ 按钮和输入框易于点击 ### 5.3 动画效果 - ✓ 页面切换有淡入动画 - ✓ 题目卡片有滑入动画 - ✓ 成功图标有缩放动画 - ✓ 按钮点击有反馈效果 --- ## 六、常见问题排查 ### 问题1:无法识别员工身份 **症状**:显示"无法识别您的身份"错误 **排查步骤**: 1. 检查是否通过企业微信登录 2. 检查localStorage中是否有company信息 3. 检查WxworkAuth是否正常工作 **解决方案**: - 确保通过企微端访问或模拟登录 ### 问题2:问卷无法保存 **症状**:答题后刷新,进度未保存 **排查步骤**: 1. 打开浏览器控制台查看报错 2. 检查Parse数据库连接 3. 检查SurveyLog表权限 **解决方案**: - 确认数据库连接正常 - 检查表的读写权限 ### 问题3:样式显示异常 **症状**:布局错乱或样式缺失 **排查步骤**: 1. 检查SCSS文件是否正确加载 2. 清除浏览器缓存 3. 检查CSS变量是否正确 **解决方案**: - 重新编译项目 - 清除缓存后刷新 --- ## 七、下一步集成 ### 7.1 后台员工详情弹窗集成 参考PRD文档第四章,在员工详情弹窗中增加"能力问卷"Tab: ```typescript // 在 employee-detail-modal.component.ts 中 async loadEmployeeSurvey() { const query = new Parse.Query('SurveyLog'); query.equalTo('profile', this.employee.toPointer()); query.equalTo('type', 'survey-profile'); query.equalTo('isCompleted', true); const surveyLog = await query.first(); if (surveyLog) { this.surveyData = surveyLog.get('data'); } } ``` ### 7.2 员工列表状态显示 在员工列表中增加问卷状态标识: ```html