天天看点

【性能看板】Catapult- Chromium性能看板解决方案Catapult 性能看板 = Telemetry + Performance DashboardTelemetry:自动化测试框架Performance Dashboard:图形化性能看板Catapult 性能看板的优缺点分析

本文内容主要来自于:https://chromium.googlesource.com/catapult/+/HEAD/README.md

文章目录

  • Catapult 性能看板 = Telemetry + Performance Dashboard
  • Telemetry:自动化测试框架
    • 设计原则
    • 代码概念
      • 测试自动化
      • 数据收集
  • Performance Dashboard:图形化性能看板
    • 数据协议
    • 前端展示策略
  • Catapult 性能看板的优缺点分析
    • 优点
    • 缺点

Catapult 性能看板 = Telemetry + Performance Dashboard

Catapult 是Chrome/Chromium/Chromium OS所使用的一系列性能工具的组合,包含:Trace-viewer、Telemetry、Performance Dashboard、Systrace、Web Page Replay 等各种工具。

但是在性能看板的解决方案上,Catapult 提供的如下的解决方案:

  • Telemetry:自动化测试框架
  • Performance Dashboard:图形化性能看板
Chromium 项目公开性能看板:https://chromeperf.appspot.com/

Telemetry:自动化测试框架

设计原则

Telemetry 主要目的适用于衡量性能数据而非测试正确性。它应该具备以下特点:

  • 只用编写一次测试用例就可以在主要平台中都运行起来
  • 仅有浏览器应用也可执行测试用例,无需源码配合
  • 能够使用户故事与测试指标解耦,方便扩展

代码概念

Telemetry 提供两个核心功能:测试自动化方案以及收集数据的能力

测试自动化

Telemetry 基于 Python实现,并且针对不同的平台采用不同的方式进行底层控制封装。

数据收集

Telemetry 的核心功能是收集性能数据,这些数据用于衡量自动化操作过程性能。

【性能看板】Catapult- Chromium性能看板解决方案Catapult 性能看板 = Telemetry + Performance DashboardTelemetry:自动化测试框架Performance Dashboard:图形化性能看板Catapult 性能看板的优缺点分析
  • Telemetry 中最小的可测试对象称为基准(Benchmark),它由故事集( Story Set)、度量( Measurement)以及浏览器参数(Browser Options)组成。
    • 基准(Benchmark)是跨平台的
    • 基准(Benchmark)可以被 Telemetry 中的执行器自动发现并运行
  • 度量(Measurement)负责自动化测试的 set up 和 tear down,并收集应用程序在测试场景中的指标(Metrics)
    • 度量(Measurement)应与任意故事集( Story Set)都能够协同工作
    • 指标(Metrics)描述如何收集并计算数据
      • 指标(Metrics)应该尽量基于时间轴
      • 指标(Metrics)可以支持以多种形式展现,如数值、直方图等
  • 故事集( Story Set)包含多个故事(Story)以及通用的配置信息
    • 故事(Story)包含场景及其操作指令。例如,一个典型的 Chromium 故事就是:在 http://www.sina.com 页面(场景)中上下滑动(操作指令)

另外 Timeline Based Measurement 是 Telemetry 中内置的 StoryTest,由官方统一维护

Performance Dashboard:图形化性能看板

数据协议

Chrome Performance Dashboard Data Format:

{
  "master": "master.chromium.perf",
  "bot": "linux-release",
  "versions": {
    "version type": "version string"
  },
  "supplemental": {
    "field name": "supplemental data string",
    "default_rev": "r_chrome_version"
  },
  "chart_data": {
    /*... as output by Telemetry; see below ...*/
  }
}
           
字段名 字段类型 字段含义
master string Buildbot master name or top-level category for data
bot string Buildbot builder name, or platform type for data
versions dict Maps repo name to revision
supplemental dict Key-value pairs which may be displayed on the dashboard
chart_data dict The chart JSON as output by Telemetry

Chart data:

{
  "format_version": "1.0",
  "benchmark_name": "page_cycler.typical_25",
  "charts": {
    "warm_times": {
      "http://www.google.com/": {
        "type": "list_of_scalar_values",
        "values": [9, 9, 8, 9],
      },
      "http://www.yahoo.com/": {
        "type": "list_of_scalar_values",
        "values": [4, 5, 4, 4],
        "std": 0.5,
      },
      "summary": {
        "type": "list_of_scalar_values",
        "values": [13, 14, 12, 13],
        "file": "gs://..."
      },
    },
    "html_size": {
      "http://www.google.com/": {
        "type": "scalar",
        "value": 13579,
        "units": "bytes"
      }
    },
    "load_times": {
      "http://www.google.com/": {
        "type": "list_of_scalar_values",
        "value": [4.2],
        "std": 1.25,
        "units": "sec"
      }
    }
  }
}
           
字段名 字段类型 字段含义
format_version string Allows dashboard to know how to process the structure
benchmark_name string A string to use in the perf dashboard test
charts dict of string to dict Maps a list of chart name strings to their data dicts

前端展示策略

如下图所示,几乎所有数据展示方式基本相同:

【性能看板】Catapult- Chromium性能看板解决方案Catapult 性能看板 = Telemetry + Performance DashboardTelemetry:自动化测试框架Performance Dashboard:图形化性能看板Catapult 性能看板的优缺点分析

Catapult 性能看板的优缺点分析

优点

概括而言,简单高效:

  1. 测试场景非常明确:浏览器浏览页面时的性能数据。这样的定义使得测试自动化实现非常优雅
  2. 性能数据类型定义非常明确:可数值化衡量的基准性能数据。这样的定义使得前端展示方式可以非常简化

缺点

对于仔细看图的非基准性能数据,如内存稳定性、ROC曲线等缺乏解决方案