集成测试¶
telemetry-tests-client 套件的目的是验证 Firefox 是否收集了遥测探针,聚合了这些数据,并将包含这些数据的数据发送到 HTTP 服务器。集成测试试图不对 Firefox 的内部工作原理做出任何假设,并使用自动化来模拟用户行为。
Firefox 客户端遥测的集成测试套件在 CI 第一层 上运行,Treeherder 符号为 tt(c),并检入到 mozilla-central 版本控制下的 toolkit/components/telemetry/tests/marionette/tests/client 中。
测试主标签标量¶
路径:
telemetry/tests/marionette/tests/client/test_main_tab_scalars.py
此测试打开和关闭多个浏览器标签页,在新的会话中重新启动浏览器,然后验证结果 main ping 中标量数据的正确性。
测试搜索次数¶
路径:
toolkit/telemetry/tests/marionette/tests/client/test_search_counts_across_subsessions.py
此测试在新标签页中执行搜索,在新的会话中重新启动 Firefox,并验证客户端、会话和子会话 ID 以及 shutdown ping 中的标量和键控直方图数据的正确性,安装附加组件,验证 environment-change ping,并在重新启动和验证新的 main ping 之前执行三个额外的搜索操作。
测试删除请求 Ping¶
路径:
toolkit/telemetry/tests/marionette/tests/client/test_deletion_request_ping.py
此测试安装附加组件并验证是否接收到 Ping。测试会记录客户端 ID。然后它禁用遥测并检查 deletion-request ping。在接收到正确的 Ping 后,它确保不再发送其他 Ping。然后重新启用遥测并检查 main ping 以查看客户端 ID 是否已更改。测试断言用户已重新选择加入遥测。
测试事件 Ping¶
路径:
toolkit/telemetry/tests/marionette/tests/client/test_event_ping.py
此测试检查基本的 event ping。它打开 Firefox,执行搜索并检查 event ping 中执行的搜索次数 (1) 和正确的搜索引擎。
测试 Fog 自定义 Ping¶
路径:
toolkit/telemetry/tests/marionette/tests/client/test_fog_custom_ping.py
此测试使用 Glean API 创建自定义 Ping 并断言此 Ping 正确发送。
测试 Fog 删除请求 Ping¶
路径:
toolkit/telemetry/tests/marionette/tests/client/test_fog_deletion_request_ping.py
此测试打开浏览器,执行搜索并在搜索后禁用遥测。它断言遥测已禁用且不存在 Ping。浏览器重新启动,然后重新启用遥测。然后我们设置一个 调试标签,该标签附加到 Ping 上。然后再次禁用遥测以触发 deletion-request ping。我们验证:1) 调试标签是否存在;2) 第二个 deletion-request ping 中的客户端 ID 与第一个客户端 ID 不同。
测试 Fog 用户活动¶
路径:
toolkit/telemetry/tests/marionette/tests/client/test_fog_user_activity.py
此测试检查当用户开始或停止使用 Firefox 时是否发送 baseline ping。
测试后台更新 Ping¶
路径:
toolkit/telemetry/tests/marionette/tests/client/test_fog_user_activity.py
在此测试中,我们启动 Firefox 以准备配置文件并禁用后台更新设置。我们退出 Firefox,留下(未锁定)配置文件作为后台更新任务的默认配置文件(并且没有多个实例运行)。该任务不会尝试更新,但会发送 Ping。然后我们重新启动 Firefox 以撤消后台更新设置并允许干净地关闭。
在本地运行测试¶
您可以使用 mach 在本地计算机上运行测试
./mach telemetry-tests-client
在 try 上运行测试¶
您可以使用 mach 在 try 服务器上跨所有平台运行测试
./mach try fuzzy -q "'telemetry-tests-client"
禁用单个失败的测试¶
telemetry-tests-client 套件是用 Python 实现的,并使用 Marionette 进行浏览器自动化,使用 wptserve 作为 HTTP ping 服务器。集成测试基于 Python 的 unittest 测试库,可以通过在测试方法中调用 self.skipTest(“reason”) 来禁用。
以下示例演示了如何禁用 test_main_ping2
import unittest
from telemetry_harness.testcase import TelemetryTestCase
class TestMainPingExample(TelemetryTestCase):
"""Example tests for the telemetry main ping."""
def test_main_ping1(self):
"""Example test that we want to run."""
self.search_in_new_tab("mozilla firefox")
def test_main_ping2(self):
"""Example test that we want to skip."""
self.skipTest("demonstrating skipping")
self.search_in_new_tab("firefox telemetry")
联系谁寻求帮助¶
测试工具和案例由来自 Firefox 遥测团队的 Chris Hutten-Czapski (matrix 上的 chutten) 拥有(matrix 上的 #telemetry)。
Bugzilla¶
可以在工具箱产品下为遥测组件提交 Bug。