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