ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Maestro 多语言测试完全指南:3 步搭好跨语言本地化验证流程

Maestro 多语言测试完全指南:3 步搭好跨语言本地化验证流程 Maestro 多语言测试完全指南3 步搭好跨语言本地化验证流程【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/MaestroMaestro 是一款面向移动端的端到端自动化测试工具支持 Android、iOS 与 Web 三端。本文聚焦一个被低估的场景多语言测试。传统做法是每次手动改系统语言、逐页比对文案而 Maestro 的--device-locale参数可以在启动模拟器时就切换设备语言再用一份 YAML 流程自动断言翻译文案把语言回归从小时级压到分钟级。一、环境准备装好工具并选对 locale 代码1.1 环境检查与 CLI 安装先确认本地 Java 版本再安装 CLIjava -version # 需要 17 或更高 curl -fsSL https://get.maestro.mobile.dev | bash这两行分别验证 Java 环境是否满足要求以及通过官方脚本安装 Maestro CLI。装好后可以用maestro --version快速确认。1.2 理解 locale 代码格式三端并不统一这是最容易踩的坑。从源码 maestro-client locale 定义 可以看到三端的合法写法各不相同平台代码格式示例Android语言_国家下划线zh_CN、ja_JP、en_USiOS下划线与连字符混排en_US、pt-BR、zh-HKWeb目前仅支持en_US写错的代价不是静默失败而是直接抛LocaleValidationException并打印支持列表属于快速失败反而好排查。二、跑通第一个多语言测试流程2.1 启动指定语言的模拟器maestro start-device --device-locale zh_CN这条命令负责启动或复用模拟器并在系统层面把语言切到简体中文。之后启动的应用读取到的就是中文系统环境。2.2 一个最小可运行的断言流程appId: com.example.shop --- - launchApp - assertVisible: 立即支付 # 验证中文翻译已生效 - tapOn: 购物车 - assertVisible: 共 2 件商品 - assertNotVisible: Payment # 反向断言英文残留即漏翻这段 YAML 做什么启动应用后先确认关键按钮是中文进入购物车页面核对文案最后用assertNotVisible反向检查是否残留英文字符串——它比正向断言更能揪出部分漏翻的问题。Maestro 多语言测试的运行环境示意模拟器语言切换后流程自动完成文案断言三、用环境变量让一份 YAML 覆盖所有语言3.1 断言文案参数化把每语言一个文件改成一个文件 环境变量env: UI_LANG: zh --- - launchApp - assertVisible: 登录 - assertVisible: 注册 - tapOn: 登录 - assertVisible: 请输入手机号这个流程把要验证的文案直接写在断言里配合env区分语言版本同一份结构即可复制出中文、日文、德文等多份流程避免为每种语言重复维护交互步骤。3.2 地区格式验证货币与日期地区化不只是翻译还包括格式。用正则断言做兜底最稳- launchApp - assertVisible: text: \\d\\.\\d{2}\\s*¥ # 价格必须带人民币符号 - assertVisible: text: 202[4-9]年\\d{1,2}月 # 中文日期格式这两条正则断言分别检查金额后带 ¥与中文年月格式即使具体数字变化格式错了照样能被发现。四、Android、iOS、Web 三端覆盖差异4.1 各端 locale 支持一览平台支持范围备注Android语言×国家组合动态校验非法组合会被拒绝错误信息附带全部合法代码iOS固定枚举含连字符格式如zh-HK、pt-BR以 IosLocale.kt 中的枚举为准Web仅en_US其余写法会在启动时报错4.2 注意应用内语言设置的优先级Android 的应用内语言功能与 iOS 的语言/区域选择都可能让 App 无视系统 locale。写多语言断言前先确认被测应用的语言选择策略若应用内默认值是英文系统切到zh_CN后界面可能仍是英文。这类测了但没生效的情况建议先在真机手动切一次系统语言确认行为再固化进流程。五、常见坑现象、原因与验证办法5.1 现象一启动直接报 locale 错误原因基本锁定为格式问题给 iOS 传了zh_CN这类不在枚举里的写法或给 Web 端传了en_US以外的值。验证办法是把报错信息里列出的合法代码与自己的写法逐字符比对下划线/连字符、大小写。5.2 现象二语言切换后界面没变按顺序排查三处一是应用内是否有语言设置覆盖了系统值二是切换 locale 后是否需要重启应用launchApp会冷启动一般可覆盖三是模拟器本身是否被复用——start-device复用一个旧模拟器时建议确认它确实是按新的 locale 启动的。5.3 现象三断言大面积失败但肉眼看着是对的多半是文案含动态内容数字、用户名导致精确匹配失配。解决办法是把动态部分换成正则只断言稳定的语言骨架例如assertVisible: text: 共\\d件商品。六、接入 CI把多语言回归放进流水线6.1 流水线脚本示例# 循环覆盖目标语言每个 locale 起一台模拟器独立执行 for LOCALE in zh_CN ja_JP de_DE; do maestro start-device --device-locale $LOCALE maestro test ./flows/i18n-check.yaml done这段脚本让 CI 依次为每种语言拉起模拟器并跑同一份断言流程任一语言失败即中断构建实现每次发布前全语言回归。6.2 发布前自查清单目标语言的 locale 代码已按平台格式书写Android 下划线、iOS 查枚举关键页面至少有一条正向断言 一条assertNotVisible残留检查货币、日期等地区格式用正则而非精确字符串确认应用内语言设置不会覆盖系统 locale流水线按语言循环执行失败即阻断发布想动手体验的话仓库里的 e2e 演示工程 提供了可直接运行的示例流程配合本文的 locale 写法即可快速扩展出自己的多语言测试套件。【免费下载链接】MaestroPainless E2E Automation for Mobile and Web项目地址: https://gitcode.com/GitHub_Trending/ma/Maestro创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表