# 键盘多语言/多布局功能测试清单 ## 测试前准备 ### 1. 在 Xcode 中添加新文件 按照 `xcode-file-addition-guide.md` 的指引,将以下文件添加到工程: - [ ] `Shared/Resource/kb_input_profiles.json` - [ ] `Shared/KBInputProfileManager.h` - [ ] `Shared/KBInputProfileManager.m` - [ ] `CustomKeyboard/Manager/KBKeyboardLayoutResolver.h` - [ ] `CustomKeyboard/Manager/KBKeyboardLayoutResolver.m` ### 2. 编译验证 - [ ] 主 App 编译通过(无错误) - [ ] 扩展编译通过(无错误) --- ## 功能测试 ### 测试 1: 主 App 语言选择界面 #### 1.1 进入语言选择页 - [ ] 打开主 App - [ ] 进入"个人资料"页面 - [ ] 看到 "Input Language" 行 - [ ] 点击进入语言选择页 #### 1.2 单布局语言测试(英语、葡萄牙语、印尼语) **测试步骤**: 1. 选择"English" 2. 检查底部是否显示 `Confirm` 按钮 3. 点击语言行,确认不会立即触发切换 4. 点击 `Confirm` 按钮 **预期结果**: - [ ] 底部显示 `Confirm` 按钮 - [ ] 点击语言行仅更新选中态(显示 ✓) - [ ] 点击 `Confirm` 后才触发切换 - [ ] 显示切换成功提示 - [ ] 返回个人资料页,"Input Language" 显示 "English" **重复测试**: - [ ] 葡萄牙语(Português) - [ ] 印尼语(Bahasa Indonesia) #### 1.3 多布局语言测试(西班牙语) **测试步骤**: 1. 选择"Español" 2. 检查底部 `Confirm` 按钮是否隐藏 3. 确认自动进入 "Choose Layout" 页面 4. 看到三个布局选项:QWERTY / AZERTY / QWERTZ 5. 选择 "AZERTY" 6. 点击 `Confirm` 按钮 **预期结果**: - [ ] 语言页底部 `Confirm` 按钮隐藏 - [ ] 自动进入布局选择页 - [ ] 布局页显示三个选项 - [ ] 布局页底部显示 `Confirm` 按钮 - [ ] 点击布局行仅更新选中态 - [ ] 点击 `Confirm` 后才触发切换 - [ ] 返回个人资料页,显示 "Español · AZERTY" **重复测试其他布局**: - [ ] QWERTY - [ ] QWERTZ #### 1.4 繁体中文多布局测试 **测试步骤**: 1. 选择"繁體中文(台灣)" 2. 进入布局选择页 3. 看到三个布局选项: - 拼音(繁體) - 注音全鍵盤 - 注音標準 4. 分别测试每个布局 **预期结果**: - [ ] 拼音(繁體)选择成功 - [ ] 注音全鍵盤选择成功 - [ ] 注音標準选择成功 - [ ] 每次切换后返回个人资料页显示正确 --- ### 测试 2: App Group 数据写入验证 使用以下代码在主 App 中验证数据写入: ```objc NSUserDefaults *appGroup = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.loveKey.nyx"]; NSString *profileId = [appGroup stringForKey:@"AppGroup_SelectedKeyboardProfileId"]; NSString *languageCode = [appGroup stringForKey:@"AppGroup_SelectedKeyboardLanguageCode"]; NSString *layoutVariant = [appGroup stringForKey:@"AppGroup_SelectedKeyboardLayoutVariant"]; NSLog(@"ProfileId: %@", profileId); NSLog(@"LanguageCode: %@", languageCode); NSLog(@"LayoutVariant: %@", layoutVariant); ``` **验证项**: - [ ] 切换到英语后,profileId = "en_US_qwerty" - [ ] 切换到西班牙语 AZERTY 后,profileId = "es_ES_azerty" - [ ] 切换到繁体拼音后,profileId = "zh_Hant_TW_pinyin" - [ ] 切换到注音全键盘后,profileId = "zh_Hant_TW_bopomofo_full" - [ ] languageCode 和 layoutVariant 也正确写入 --- ### 测试 3: 扩展侧布局切换 #### 3.1 英语 QWERTY 布局 **测试步骤**: 1. 在主 App 中切换到"English" 2. 打开任意应用(如备忘录) 3. 调出键盘 **预期结果**: - [ ] 键盘第一行显示: `q w e r t y u i o p` - [ ] 键盘第二行显示: `a s d f g h j k l` - [ ] 键盘第三行显示: `z x c v b n m` #### 3.2 西班牙语 AZERTY 布局 **测试步骤**: 1. 在主 App 中切换到"Español · AZERTY" 2. 打开任意应用 3. 调出键盘 **预期结果**: - [ ] 键盘第一行显示: `a z e r t y u i o p` - [ ] 键盘第二行显示: `q s d f g h j k l m` - [ ] 键盘第三行显示: `w x c v b n` #### 3.3 西班牙语 QWERTZ 布局 **测试步骤**: 1. 在主 App 中切换到"Español · QWERTZ" 2. 打开任意应用 3. 调出键盘 **预期结果**: - [ ] 键盘第一行显示: `q w e r t z u i o p` - [ ] 键盘第二行显示: `a s d f g h j k l` - [ ] 键盘第三行显示: `y x c v b n m` #### 3.4 繁体拼音布局 **测试步骤**: 1. 在主 App 中切换到"繁體中文(台灣)· 拼音(繁體)" 2. 打开任意应用 3. 调出键盘 **预期结果**: - [ ] 键盘布局为 QWERTY(与英语相同) - [ ] 输入字母时显示联想栏 - [ ] 联想词为繁体中文(如:你好、謝謝) #### 3.5 繁体注音全键盘布局 **测试步骤**: 1. 在主 App 中切换到"繁體中文(台灣)· 注音全鍵盤" 2. 打开任意应用 3. 调出键盘 **预期结果**: - [ ] 键盘显示注音符号 - [ ] 第一行包含: ㄅ ㄉ ˇ ˋ ㄓ ˊ ˙ ㄚ ㄞ ㄢ - [ ] 第二行包含: ㄆ ㄊ ㄍ ㄐ ㄔ ㄗ ㄧ ㄛ ㄟ ㄣ - [ ] 第三行包含: ㄇ ㄋ ㄎ ㄑ ㄕ ㄘ ㄨ - [ ] 输入注音时显示联想栏 - [ ] 联想词为繁体中文 #### 3.6 繁体注音标准布局 **测试步骤**: 1. 在主 App 中切换到"繁體中文(台灣)· 注音標準" 2. 打开任意应用 3. 调出键盘 **预期结果**: - [ ] 键盘显示注音符号(标准排列) - [ ] 第一行包含: ㄅ ㄆ ㄇ ㄈ ㄉ ㄊ ㄋ ㄌ ㄍ ㄎ - [ ] 第二行包含: ㄏ ㄐ ㄑ ㄒ ㄓ ㄔ ㄕ ㄖ ㄗ - [ ] 第三行包含: ㄘ ㄙ ㄧ ㄨ ㄩ ㄚ ㄛ - [ ] 输入注音时显示联想栏 - [ ] 联想词为繁体中文 --- ### 测试 4: 联想引擎切换 #### 4.1 拉丁字母联想(英语、西班牙语、葡萄牙语、印尼语) **测试步骤**: 1. 切换到英语 2. 在键盘上输入 "app" **预期结果**: - [ ] 联想栏显示英文单词(如:app, apple, apply, application) - [ ] 选择联想词后正确插入 #### 4.2 繁体拼音联想 **测试步骤**: 1. 切换到"繁體中文(台灣)· 拼音(繁體)" 2. 在键盘上输入拼音 **预期结果**: - [ ] 联想栏显示繁体中文词汇 - [ ] 选择联想词后正确插入繁体字 #### 4.3 注音联想 **测试步骤**: 1. 切换到"繁體中文(台灣)· 注音全鍵盤" 2. 在键盘上输入注音符号 **预期结果**: - [ ] 联想栏显示繁体中文词汇 - [ ] 选择联想词后正确插入繁体字 --- ### 测试 5: 皮肤下发 #### 5.1 繁体中文皮肤 **测试步骤**: 1. 切换到"繁體中文(台灣)" 2. 检查键盘皮肤 **预期结果**: - [ ] 皮肤请求已发布(检查日志) - [ ] 使用 `normal_hei_them.zip` 皮肤 #### 5.2 其他语言皮肤 **测试步骤**: 1. 切换到英语/西班牙语/葡萄牙语/印尼语 2. 检查键盘皮肤 **预期结果**: - [ ] 皮肤请求已发布 - [ ] 使用 `normal_them.zip` 皮肤 --- ### 测试 6: 异常情况处理 #### 6.1 空 profileId **测试步骤**: 1. 清空 App Group 中的 profileId 2. 打开键盘 **预期结果**: - [ ] 键盘不崩溃 - [ ] 回退到默认布局(英语 QWERTY) #### 6.2 无效 profileId **测试步骤**: 1. 在 App Group 中写入无效的 profileId(如 "invalid_profile") 2. 打开键盘 **预期结果**: - [ ] 键盘不崩溃 - [ ] 回退到默认布局(英语 QWERTY) #### 6.3 布局 JSON 缺失 **测试步骤**: 1. 在配置中引用一个不存在的 layoutJsonId 2. 打开键盘 **预期结果**: - [ ] 键盘不崩溃 - [ ] 回退到默认布局(letters) --- ### 测试 7: 切换流畅性 #### 7.1 快速切换语言 **测试步骤**: 1. 快速连续切换多个语言 2. 每次切换后立即打开键盘 **预期结果**: - [ ] 每次切换都能正确应用 - [ ] 键盘布局正确 - [ ] 无崩溃或卡顿 #### 7.2 跨应用切换 **测试步骤**: 1. 在主 App 中切换语言 2. 打开备忘录,调出键盘 3. 返回主 App,再次切换语言 4. 返回备忘录,调出键盘 **预期结果**: - [ ] 键盘布局正确更新 - [ ] 联想引擎正确切换 --- ## 性能测试 ### 1. 启动性能 - [ ] 键盘首次加载时间 < 1 秒 - [ ] 切换布局时无明显延迟 ### 2. 内存占用 - [ ] 键盘内存占用正常(< 50MB) - [ ] 切换布局后无内存泄漏 ### 3. 日志检查 查看控制台日志,确认: - [ ] 布局切换日志正确输出 - [ ] 联想引擎切换日志正确输出 - [ ] 无异常错误日志 --- ## 回归测试 ### 1. 原有功能不受影响 - [ ] 数字面板正常工作 - [ ] 符号面板正常工作 - [ ] Emoji 面板正常工作 - [ ] 聊天功能正常工作 - [ ] 设置页面正常工作 ### 2. 原有语言功能 - [ ] 简体中文输入正常 - [ ] 英语输入正常 --- ## 测试结果汇总 ### 通过的测试 - [ ] 主 App 语言选择界面 - [ ] App Group 数据写入 - [ ] 扩展侧布局切换 - [ ] 联想引擎切换 - [ ] 皮肤下发 - [ ] 异常情况处理 - [ ] 切换流畅性 - [ ] 性能测试 - [ ] 回归测试 ### 发现的问题 记录测试过程中发现的问题: 1. 2. 3. ### 待优化项 记录需要优化的地方: 1. 2. 3. --- ## 测试完成签名 - 测试人员: _______________ - 测试日期: _______________ - 测试结果: ☐ 通过 ☐ 部分通过 ☐ 未通过