This commit is contained in:
2026-03-02 09:19:06 +08:00
parent da4649101e
commit 781e557e80
34 changed files with 3926 additions and 87 deletions

362
docs/testing-checklist.md Normal file
View File

@@ -0,0 +1,362 @@
# 键盘多语言/多布局功能测试清单
## 测试前准备
### 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.
---
## 测试完成签名
- 测试人员: _______________
- 测试日期: _______________
- 测试结果: ☐ 通过 ☐ 部分通过 ☐ 未通过