首页投稿(暂停使用,暂停投稿)开源工具技巧架构算法设计模式和编程理论

跟着 Google 学测试自动化——浅谈 Telemetry 的

2017-01-02  本文已影响746人  xiaosongluo

Telemetry(项目主页)是 Google 为 Chromium 项目所编写的一套性能测试自动化框架。

从测试架构上以及实际使用中,Telemetry 均表现出极强的易用性和扩展性,本文试图探讨的就是 Telemetry 的框架是如何设计以及为啥这样设计的。

Telemetry 体现的出的易用性以及扩展性

为了体现 Telemetry 的易用性和扩展性,首先我们得先来看看 Telemetry 的用法:

这是 Telemetry 官方文档给出的 Telemetry 的一种基础用法(引用至自 Telemetry: Run Benchmarks Locally):

$ telemetry/run_benchmark --browser=canary smoothness.top_25

以上命令将会让 Telemetry 在名为 canary 的浏览器上执行一段已经预定义好的 Benchmark。而且从所执行的 Benchmark 的命名上我们可以看出,该Benchmark 的性能指标集合为 smoothness,站点集合为 top_25。

Telemetry 是如何设计的

"事要知其所以然",我们既然知道的 Telemetry 框架具有易用性强且扩张性强的特点,就应该费一点功夫弄清其框架的是如何设计和实现的。

当然框架设计这个命题有点大,因此我们重点从以下几个方向来进行分析:

Telemetry 为何要这样设计

正所谓“没有对比就没有伤害”,要想领会 Telmetry 设计的优秀,就先得缕一缕常见的自动化测试框架。

常见的自动化测试基础框架

根据文章《Choosing a test automation framework》(原文译文)的总结,常见的自动化测试基础框架有如下四种方案:

Telemetry 架构设计分析

上述四种框架是各有优缺点的基础架构,在实际工程中最常见框架是上述技术的组合,抽取它们的优点,剔除其弱点。而 Telmetry 很明显也就是综合运用上述基础框架模型而形成的。

那么,为什么 Telemetry 要这样设计呢?我们可以简单讨论一下。

Q1: 为啥 Telemetry 没有采用关键字驱动或表驱动测试框架(The Keyword-Driven or Table-Driven Testing Framework)?

A1: 因为 Telemetry 框架提供的是一种 Benchmark 型的测试。因此,需要的是一种可以在不同机器上保持测试一致性的能力,而非灵活定制化的能力。而且实现关键字驱动或表驱动的代价很高,所以没有必要。但是为了保障其易用性,Telemetry 依然在调用命令上下了比较大的功夫,可以让使用者直接从语义上明确当前测试的具体配置。

Q2: Telemetry 是如何使用测试库构架框架(The Test Library Architecture Framework)以及测试脚本模块化框架(The Test Script Modularity Framework)的?

A2: 由于 Telemetry 工程量较大,为了方便多人协作开发,整体上 Telemetry 是采用测试库构架框架(The Test Library Architecture Framework)来设计的。但在具体的模块内部,也有采用测试脚本模块化框架(The Test Script Modularity Framework)。

Q3: 简单分析一下 Telemetry 中数据驱动测试框架(The Data-Driven Testing Framework)的应用?

A3: 虽然前面提到灵活定制化的需求对于 Telemetry 而言并不那么重要,但是在 Page Set 中需要维护大量的站点,并可能存在更新维护的需求。目前,Telemetry 在 Page Set 内部简单实现了一种类似数据驱动测试框架(The Data-Driven Testing Framework)的方式,方便我们从 List 中批量导入被测站点。但笔者认为从方便更新维护的角度考虑,需要针对 Page Set 设计一个可以支持从外部导入数据驱动测试的机制。

我们可以从 Google 身上学到的

由于笔者在工作中也从事浏览器相关的测试工作,因此对比了 Telemetry 与自己开发的测试框架之后,可以总结了如下一些可以从 Telemetry 中学习的要点:

上一篇 下一篇

猜你喜欢

热点阅读