localization testing

本地化测试是验证软件产品在特定目标区域设置(locale)中正常运行的过程,它不仅涵盖翻译,还涵盖语言、地区格式、布局以及特定地理区域的内容。本指南比较了 QA 团队实际运行本地化测试的方式:手动审查、自动检查,以及从目标国家测试真实用户所见的内容这一额外步骤。

本文将提供清晰的定义、本地化测试检查内容的细分、带有命名框架的可重复工作流程、地理验证方法的比较,以及诚实的局限性说明。重点在于面向 QA 与软件工程师的实用决策,而非营销宣传。

DataImpulse 是一家合乎道德的代理提供商,在 195 个国家提供超过 9000 万个住宅、移动和数据中心 IP 地址。它采用按量付费模式,每 GB 起价 1 美元,流量不过期,被可用于网页抓取、广告验证、价格监控、市场调研和多账户管理。

关键事实

  • 本地化测试:验证产品在每个目标 locale 下的语言、格式、布局和特定地区内容是否正确完整,而不仅仅是完成翻译。
  • 最佳代理类型:轮换住宅代理,使用不易被识别为代理的真实消费者 IP。
  • 价格:每 GB 起价 1 美元,按量付费,流量不过期,无需订阅。
  • 覆盖范围:195 个国家超过 9000 万个合乎道德来源的 IP。
  • 可靠性:成功率 99.51%,在 G2 上获得 4.8 分(满分 5 分)。
  • 协议与定向:HTTP、HTTPS 和 SOCKS5,含国家定向。
本地化测试工作流程,逐步说明

软件测试中的本地化测试是什么?

本地化测试是一项质量保证活动,用于确认某个本地化构建对单一目标 locale 是正确、完整且自然的。它超越了检查字符串是否已翻译,而是追问整个体验是否契合用户的语言、地区和文化。

locale 不仅仅指一种语言,它还包括国家或地区,以及一套关于日期、数字、货币、排序和文字方向的约定。美国英语和英国英语共享词汇,但在拼写、日期顺序、货币和某些法律声明上有所不同。本地化测试能捕捉纯翻译遗留下来的不匹配。

它不同于国际化(i18n)测试,后者验证代码是否具备从根本上支持多个 locale 的能力,例如通过外部化字符串和处理 Unicode。国际化是工程基础;本地化测试则是位于其上的逐 locale 验证。两者都很重要,即使产品通过了国际化测试,仍可能在某个市场的本地化测试中不合格。

本地化测试检查什么?

本地化测试检查所有会因 locale 而影响正确输出的方面:语言、格式、布局、方向和特定地区内容。下面的列表是大多数 QA 团队都会采用的实用检查清单。

  • 语言与翻译质量:准确且符合上下文的字符串,没有未翻译的片段、损坏的占位符,或翻译后不通顺的拼接句子。
  • 货币与定价:符合该 locale 的正确货币符号、代码、位置和小数分隔符,以及在需要时显示税费或增值税(VAT)。
  • 日期、时间与数字格式:正确的顺序(日-月-年还是月-日-年)、12 小时制还是 24 小时制、千位与小数分隔符,以及一周的第一天。
  • 文字方向与 RTL:阿拉伯语和希伯来语等从右到左的语言需要镜像布局、对齐的图标和正确的双向文本处理。
  • 布局与截断:德语或芬兰语字符串可能比英语长得多,因此按钮、标签和菜单必须能够扩展或换行,而不发生裁切或重叠。
  • 法律与特定地理内容:特定地区的条款、同意横幅、税务通知、免责声明和必需的监管文本。
  • 支付方式与可用性:本地预期的支付选项,以及仅在某些国家提供的产品、配送或功能。
  • 文化契合度:让人读来觉得恰当而非令人困惑或冒犯的图标、颜色、图像、名称和示例。

最后三项是测试变难的地方,因为正确答案取决于请求看起来来自哪个国家。这正是标准测试环境难以妥善处理的部分。

自动与手动本地化测试:你该用哪种?

客观且可重复的检查适合自动化,语言与文化判断则应由人工完成。两者不能相互替代,成熟的团队会以分层的方式同时运行两者。

手动本地化测试依赖人工审查人员,最好由母语者担任,他们在上下文中阅读界面,判断流畅度、语气、文化契合度,以及法律文本是否读起来正确。人类能捕捉到生硬的翻译、别扭的习语或文化上错误的图像,而这些问题无法通过任何自动断言发现。代价是手动检查缓慢、难以完全一致地重复,并且在每次发布时对每个 locale 运行成本高昂。

自动本地化测试尤其擅长机械性检查:检测未翻译的字符串、缺失的键、损坏的占位符、格式违规,以及通过视觉比较发现的布局截断。伪本地化(pseudo-localization)在正式翻译完成前,通过加长字符串并添加重音符号,是一种廉价的自动化技术,能够及早暴露硬编码字符串和布局破损。自动化在 CI 中运行迅速,可扩展到数十个 locale,但它无法判断一个看起来正确的翻译是否真正读起来通顺。

如何自动化本地化测试这一问题的实用答案是:自动化那些只有单一客观正确答案的检查,涉及语义的判断则交给人工审查者。当你的自动检查大规模抓取实时本地化页面时,相关模式请参见我们关于如何在不被封锁的情况下抓取的说明。

如何逐步执行本地化测试?

应将本地化测试纳入可重复执行的工作流程:准备、设置 locale、在每个表面执行检查、验证地理内容、带上 locale 上下文记录缺陷,然后重新测试。为了确保各 locale 的覆盖范围真实可靠,团队可以使用一个简单的命名模型。

我们称之为 LARGE 模型,涵盖 locale 中最容易出问题的五个方面的框架:

  • L – Language(语言):翻译完整、上下文准确,并且没有未翻译或被截断的字符串。
  • A – Appearance(外观):布局、截断、RTL 镜像、字体和编码。
  • R – Regional format(地区格式):日期、数字、货币、时间、排序和地址格式。
  • G – Geo-content(地理内容):按地区限制的价格、产品、法律通知、支付方式和地理封锁的功能。
  • E – Experience(体验):图像、语气、示例和端到端流程的文化契合度。

使用 LARGE 模型的具体工作流程如下。第一,准备测试数据、术语表或风格指南,以及每个 locale 的预期结果。第二,通过设置操作系统或浏览器的语言、地区和时区,为目标 locale 配置环境。第三,走查每个界面并运行 L、A、R 和 E 检查。第四,通过一个确实位于目标国家的 IP 执行 G 检查,具体方法将在下一节说明。第五,为每个缺陷记录截图、确切的 locale 和环境,使其可复现。第六,重新测试修复项,并在你已经签核的 locale 上运行一次回归,因为一处共享字符串的改动可能一次性导致多个 locale 出现回归问题。

如何从另一个国家测试特定地理内容?

要验证特定地理内容,你必须通过确实位于目标国家的 IP 地址发送请求,因为许多网站会根据访问者的 IP 提供本地化的价格、货币、产品、法律通知和地理封锁的功能。模拟器或浏览器的 locale 切换只能改变你声明的语言和地区偏好;它不会改变服务器认为你在哪里。

这是 LARGE 模型的地理内容(G)要素,也是普通预发布(staging)环境无法覆盖的一项。如果你的构建提供德国价格、仅限巴西的支付方式,或特定国家的同意横幅,那么准确看到本地用户所见内容的唯一可靠方法,就是让请求从那个国家发起。带国家定向的住宅代理会通过所选国家中真实设备的 IP 路由你的流量,从而让目标网站把你识别为真实的本地访问者。DataImpulse 在 195 个国家提供超过 9000 万个 IP,基础价格中已包含国家定向功能,可覆盖大多数本地化测试矩阵。

下面是一个最小的 Playwright 示例:通过定向德国的代理打开本地化定价页面、同时也设置浏览器 locale 的最小 Playwright 检查如下所示:

const { chromium } = require('playwright');

const browser = await chromium.launch({
  proxy: {
    server: 'http://gw.dataimpulse.com:823',
    username: 'YOUR_USER__cr.de',
    password: 'YOUR_PASS'
  }
});
const page = await browser.newPage({ locale: 'de-DE' });
await page.goto('https://shop.example.com/pricing');
console.log(await page.locator('.price').first().innerText());
await browser.close();

同样的方法也适用于命令行,将国家定向的代理与 Accept-Language 头配对,使 IP 和语言提示都与被测的 locale 相匹配:

curl -x http://gw.dataimpulse.com:823 \
  -U "YOUR_USER__cr.jp:YOUR_PASS" \
  -H "Accept-Language: ja-JP" \
  https://shop.example.com/pricing

更改 username 中的国家标签,即可将出口 IP 移到另一个市场,然后将本地化输出与你对该 locale 的预期结果进行 diff 比较。如果你在调试期间不确定某个 IP 解析到哪个国家,一次IP 地址查询可在你信任结果之前确认出口位置。在需要规模化测试时,住宅代理比数据中心代理更重要,因为许多本地化网站会把数据中心 IP 段视为可疑,并可能提供一种回退体验。

你应该选择哪种地理测试方法?

对语言和格式检查选择模拟器或 locale 切换,偶尔进行人工抽查时选择 VPN,对准确、可扩展的地理内容验证选择国家定向的住宅代理。下表从 QA 团队关心的维度比较这三种方法。

方法 地理位置准确性 规模 / 自动化 典型成本
locale 模拟 / 浏览器 locale 切换 低:仅改变语言和格式信号,不改变服务器所见的位置 高:在 CI 中编写脚本很简单 免费
消费级 VPN 中:真实的目标国家出口,但位置有限,且通常是容易被网站标记的数据中心 IP 低:手动,并发出口少,难以自动化 固定月费
国家定向的住宅代理 高:国家内真实的住宅 IP,网站将其视为本地用户 高:可针对多个国家和会话并行编写脚本 按用量计费,使用 DataImpulse 每 GB 起价 1 美元

决策矩阵。当你测试翻译、布局、RTL 或日期与数字格式时,使用模拟器或 locale 切换,此时服务器所见的国家不会改变输出。当你只需从常见国家快速进行一次人工查看,且不要求自动化时,使用 VPN。当你需要验证按地区限制的价格、产品、法律通知或地理封锁的功能,或必须在自动运行中覆盖许多国家时,使用国家定向的住宅代理。当内容本身由 IP 决定时,避免仅用模拟器测试;当你需要许多 locale 或 VPN 提供商不提供的国家的并行覆盖时,避免依赖 VPN。DataImpulse 从自愿加入并获得报酬的用户处获取其 IP,因此这是一种合乎道德的代理方式,而非灰色地带的变通手段。

本地化测试的局限性有哪些?

本地化测试有实际的局限,指明它们能让流程保持诚实。没有任何单一方法能覆盖每个 locale 的关切,而代理只解决一个特定问题,并非全部。

  • 自动化无法判断含义:一个字符串可能通过所有格式和完整性检查,却仍读起来不自然或在文化上错误。母语者的人工审查仍然必要。
  • 地理信号是分层的:IP 是最强的信号,但有些网站还使用 GPS、账户所在国家、账单地址或浏览器 locale。国家定向的 IP 只能解决 IP 这一层的问题;也要对齐 Accept-Language 头和任何账户设置。
  • 代理不是抓取 API:DataImpulse 提供网络层(IP、轮换、国家定向),但不会替你解析页面或管理重试。它不是托管抓取 API,也不是免费的网页代理,相关逻辑仍需由你的测试框架负责。
  • 测试数据会漂移:本地化的价格、税务规则和法律文本会随时间变化,因此预期结果需要定期刷新,否则你的断言会标记出假失败。
  • 覆盖成本随 locale 增长:locale 矩阵会迅速倍增,因此应按市场收入和风险来确定优先级,而不是试图在每次发布时完整测试每个 locale。

作为更广泛 QA 策略中的一层来对待,本地化测试能捕捉到翻译审查和功能测试遗漏的缺陷,只要你尊重每种方法能验证与不能验证的范围。

LARGE 5 要素本地化模型

常见问题

什么是本地化测试?

本地化测试是对软件产品在特定目标 locale 下正确、完整且自然的验证,它不仅涵盖翻译,还涵盖其语言、地区格式、布局、文字方向和特定地区内容。

你如何进行本地化测试?

准备每个 locale 的预期结果和术语表,将环境设置为目标 locale,在每个界面检查语言、外观、地区格式和文化契合度,从国家内的 IP 验证特定地理内容,带上 locale 上下文记录缺陷,然后重新测试并运行一次回归。

你如何自动化本地化测试?

自动化客观检查,例如未翻译的字符串、缺失的键、损坏的占位符、格式违规,以及通过视觉比较发现的布局截断,并在 CI 中对所有 locale 运行它们。把自动化无法评估的流畅度和文化判断留给人工审查者。

本地化测试与国际化测试有什么区别?

国际化测试确认代码能够从根本上支持多个 locale,例如处理 Unicode 和外部化的字符串。随后本地化测试在该基础之上验证某个特定 locale 是正确且完整的。

为什么测试特定地理内容需要代理?

许多网站根据访问者的 IP 位置来选择价格、产品、法律通知和地理封锁的功能。国家定向的住宅代理让你的请求看起来来自那个国家的真实用户,因此你能准确看到本地访问者所见的内容。

什么时候 DataImpulse 不是合适的选择?

如果你需要静态 ISP 代理、完全托管的抓取 API,或访问银行和政府网站,DataImpulse 就不是合适的工具。它专注于提供用于采集公开数据和访问内容的轮换住宅、移动和数据中心代理。

从正确的国家测试每个 locale

要像真实本地用户所见那样验证特定地理内容,你需要为测试矩阵上的每个市场准备目标国家内的真实 IP。创建一个 DataImpulse 账户,即可通过 195 个国家的住宅 IP 路由本地化测试,含国家定向,并享受每 GB 起价 1 美元的按量付费流量。

Share article: