多语言/国际化测试案例¶
国际化测试不只是"翻译对不对",它涉及字符集、布局适配、日期/货币/数字格式、语言切换、翻译缺失兜底、RTL 布局等。一个中文页面看起来没问题,切换到德语可能文字溢出,切换到阿拉伯语可能整个布局错乱。
需求背景¶
系统支持中文、英文和日文三种语言。用户可在页面右上角切换语言。所有界面文本从语言包读取,支持变量插值(如"共 {count} 条")。日期和货币格式随语言切换自动变化。
测试点拆解¶
| 维度 | 测试点 |
|---|---|
| 语言切换 | 切换语言后页面刷新、URL 变化、语言偏好持久化 |
| 翻译完整性 | 所有页面文本是否都有对应翻译 |
| 翻译缺失 | 语言包缺少某个 key 时的兜底显示 |
| 字符集 | 中文、日文、特殊字符(ü、ñ、ß)是否正常显示 |
| 布局适配 | 德语长文本是否溢出、日文竖排是否正常 |
| 日期格式 | 中文"2026年6月20日"、英文"Jun 20, 2026"、日文"2026年06月20日" |
| 货币格式 | 中文"¥299.00"、英文"$299.00"、日文"¥29,900" |
| 数字格式 | 千分位分隔符:中文"1,234" vs 德语"1.234" |
| 排序规则 | 不同语言的排序规则(拼音 vs 字母 vs 假名) |
| 输入验证 | 不同语言的姓名格式(西方姓名、日文姓名) |
| URL 和 SEO | 多语言 URL 结构(/en/、/zh/、/ja/) |
| 邮件/通知 | 多语言邮件模板、短信模板 |
用例示例¶
| 编号 | 测试点 | 步骤 | 预期结果 |
|---|---|---|---|
| I18N-001 | 语言切换 | 点击右上角语言切换,选择 English | 页面刷新,所有文本切换为英文 |
| I18N-002 | 语言持久化 | 切换到英文后关闭浏览器,重新打开 | 仍显示英文,语言偏好被记住 |
| I18N-003 | 翻译缺失 | 人为删除语言包中某个 key | 显示英文兜底文本或 key 名,不显示空白 |
| I18N-004 | 长文本溢出 | 切换到德语,检查按钮和导航栏 | 文本被截断或自动换行,不破坏布局 |
| I18N-005 | 日期格式 | 中文下查看订单日期 | 显示"2026年6月20日"格式 |
| I18N-006 | 日期格式英文 | 英文下查看同一订单日期 | 显示"Jun 20, 2026"格式 |
| I18N-007 | 货币格式 | 英文下查看商品价格 | 显示"$299.00",不是"¥299.00" |
| I18N-008 | 特殊字符 | 用户名包含"ü"、"ñ"、"ö" | 正常显示,不变成乱码或问号 |
| I18N-009 | 日文假名 | 搜索栏输入日文假名"テスト" | 搜索正常执行,结果正确返回 |
| I18N-010 | URL 结构 | 访问 /en/products 和 /ja/products |
分别显示英文和日文页面,内容对应 |
接口校验¶
多语言接口至少检查:
- 接口
Accept-Language头或lang参数是否生效。 - 返回的错误提示信息是否跟随语言设置。
- 语言参数传非法值(如
lang=xx)时的默认行为。 - 语言包接口(
/api/i18n/zh.json)返回的 JSON 是否完整。 - 列表接口的排序是否跟随语言(中文按拼音,英文按字母)。
测试数据准备¶
| 数据 | 用途 |
|---|---|
| 中/英/日三语用户账号 | 验证语言偏好持久化 |
| 包含特殊字符的用户名 | 验证字符集兼容 |
| 多语言商品名称 | 验证搜索和排序 |
| 多语言邮件模板 | 验证通知内容语言一致 |
建议先确认系统支持哪些语言,再逐语言覆盖核心页面。不要一次测所有语言,先确保中英双语没问题再扩展。
执行步骤示例¶
- 保持默认中文,走一遍核心流程(注册、浏览、下单),记录所有页面文本。
- 切换到英文,逐页对比文本是否完整翻译,有无遗漏的中文。
- 检查英文下的按钮、导航栏、表单标签,是否有长文本溢出。
- 切换到日文,检查假名和汉字混合显示是否正常。
- 检查订单详情页的日期和货币格式是否随语言变化。
- 删除语言包中一个 key,刷新页面检查兜底显示。
- 在不同语言下搜索同一个关键词,检查结果是否一致。
数据校验示例¶
-- 查看用户语言偏好设置
SELECT user_id, language, updated_at
FROM user_preferences
WHERE user_id = 10001;
-- 查看多语言商品名称
SELECT product_id, lang, name
FROM product_translations
WHERE product_id = 1001;
-- 期望:每种支持的语言都有对应翻译记录
缺陷示例¶
| 字段 | 内容 |
|---|---|
| 标题 | 切换英文后"购物车"按钮显示为中文"购物车"未翻译 |
| 前置条件 | 系统支持中英文切换 |
| 复现步骤 | 右上角切换为 English,查看购物车按钮 |
| 实际结果 | 按钮文字仍显示"购物车",其他文本已切换为英文 |
| 期望结果 | 按钮显示"Cart",所有文本统一为英文 |
| 影响 | 界面语言不一致,用户体验差,国际化质量低 |
容易漏测¶
- 只测页面标题和菜单,不测弹窗、Toast 提示、错误信息。
- 不验证日期和货币格式是否随语言变化。
- 忘记测翻译缺失时的兜底显示。
- 不检查长文本语言(德语、俄语)的布局溢出。
- 不验证邮件和短信通知的语言是否跟随用户设置。
- 忽略表单校验提示的翻译("请输入用户名"是否翻译)。
- 不测 URL 中的语言前缀和 SEO meta 标签。
复盘问题¶
- 语言包缺失某个 key 时,应该显示英文兜底还是显示 key 名?为什么?
- 用户在中文下填写的表单数据,切换到英文后应该显示什么格式?
- 如何确保新增功能时不会遗漏翻译?有没有自动化检查方案?