IndexedDB 性能测试

如何在 CI 上运行测试?

  • Windows: mach try perf --show-all -q "test-windows10-64-shippable-qr/opt-browsertime-indexeddb"

  • Linux: mach try perf --show-all -q "test-linux1804-64-shippable-qr/opt-browsertime-indexeddb"

  • Mac: mach try perf --show-all -q "test-macosx1015-64-shippable-qr/opt-browsertime-indexeddb"

  • 除 32 位作业外的所有作业: mach try perf --chrome --safari --show-all -q 'shippable-browsertime-indexeddb !32'

  • 一般来说

    • 使用 mach try perf --show-all 打开测试选择界面

    • 通过键入预期作为测试作业名称字符串一部分的字母(如上 -q 参数中所示)来过滤出首选测试

    • 记下用作过滤器以重新运行作业的字符串(或使用 mach try again --list-tasksmach try again --index 重新运行它)

如何在本地使用分析器运行测试?

  • 使用发布或带有调试符号的发布标志构建浏览器(不要在调试模式下构建)

  • 使用 mach raptor --browsertime -t $(test_name) --gecko-profile --post-startup-delay=1000,其中测试名称(例如 addMarN)是 testing/raptor/raptor/tests/custom/browsertime-indexeddb.ini 中列出的项目之一

  • 测试完成后,生成的配置文件将使用默认浏览器打开。

  • 生成的配置文件路径也列在命令行输出中。

  • 为了获得最佳符号化结果,可能有助于

    • 使用 ./mach run 运行用于测试的相同浏览器构建

    • 导航到“profiler.firefox.com”

    • 使用“从文件加载配置文件”按钮

如何将性能与其他浏览器进行比较?

  • 测试为所有支持的浏览器输出一个 time_duration

  • 以 Chrome 为例,

    • mach raptor --browsertime -t $(test_name) --post-startup-delay=1000 --app=chrome -b "/c/Program Files/Google/Chrome/Application/chrome.exe"

    • 其中测试名称(例如 addMarN)是 testing/raptor/raptor/tests/custom/browsertime-indexeddb.ini 中列出的项目之一

    • 浏览器可执行文件路径在 -b 参数之后在本地有所不同

    • 在某些情况下,可能需要测试驱动程序参数,例如 --browsertime-chromedriver

如何添加更多测试?

  • 对于测试样板,复制并重命名一个旧的测试脚本,例如 testing/raptor/browsertime/indexeddb_write.js,将其放在 testing/raptor/browsertime/ 目录下

  • 修改 commands.js.run / Selenium 的 executeAsyncScript 的测试用例脚本参数

    • 可以使用语法 ${variable_name} 将测试参数传递给此脚本,其中 variable_name 表示 executeAsyncScriptcommands.js.run 上下文中的参数。

    • 使用引号捕获字符串值,例如 "${variable_name}"

    • 提示:在没有样板的情况下在本地提供服务,可以更简单地调试测试用例

  • 在文件 testing/raptor/raptor/tests/custom/browsertime-indexeddb.ini 中添加 [test_name] 部分,其中 test_name **必须为 10 个字符或更少**,才能成为有效的 Treeherder 测试名称

    • [test_name] 部分下,将测试脚本名称指定为 test_script = 的值

    • [test_name] 部分下,将测试参数指定为 --browsertime.key=value 参数的序列,作为 browsertime_args = 的值

    • [test_name] 部分下,根据需要覆盖任何其他值

  • 将测试添加为要为桌面运行的子测试 taskcluster/kinds/test/browsertime-desktop.yml(可能也适用于移动设备)

  • 将测试文档添加到 testing/raptor/raptor/perfdocs/config.yml

  • 生成的文件

    • 运行 ./mach lint --warnings --outgoing --fix 以重新生成文档和任务文件,并警告遗漏

    • 可能还需要运行 ./mach lint -l perfdocs --fix .

  • 测试

    • 使用分析器测试新测试

    • 使用不同的浏览器测试新测试

    • 通过在 CI 上触发它来测试新测试