Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

测试 Gaia 代码修改

当您完成对 Gaia 代码库的修改并且结果看起来正常时, 下面的步骤就是通过测试程序的验证,从而确保在将 patch 提交到工程之前,您的修改可以真正的工作— 也就是对其他的 Gaia 代码也是有效的。本文所讲的就是这些内容。

测试步骤一般包括:

  • 标准调试程序
  • 运行自动化测试

下面让我们来对这两部分进行分析:

标准调试

如果您是一位有经验的 web 开发者,那么对调试 Gaia 代码的步骤也不会陌生。 我们已经讨论了如何在桌面 Firefox 中运行Gaia,以及如何做 基本的修改。要获取更复杂的代码库添加的知识,则需要在桌面 Firefox 中对 Firefox 调试工具多多使用才好。

注意: 要获取更多使用工具方面的指令,请参考我们的 Tools zone.

自动化测试

在提交 patch 前,您同样应该在 Gaia 中运行标准测试套件,以保证您的代码更改不会对现有的手机功能造成影响。需要运行的测试包括:

  • 单元测试
  • 性能测试
  • UI 测试

在提交 patch 前,我们一般会要求运行测试;如果这是您第一次为 gaia 做贡献,可以在提交前不经过测试的环节,但后续则必须要进行测试。在运行测试前,为保证您的代码是最新的,需要更新 Gaia 仓库。 

注意: 要获取更多有关测试的内容,请参考 Firefox OS 自动化测试页面

注意: 如果可能的话,您需要考虑下运行在真实设备上运行每一项测试 (一些功能/硬件在仿真器上并不支持),否则就在 B2G 桌面仿真器或 Firefox Nightly 中运行。

单元测试

单元测试是指在大型应用中测试对每个独立的代码单元进行测试 — 对 Gaia 而言,就是指单独的 app。Gaia 使用:

您可以运行下面的命令来下载,安装和作为一个单元测试服务器(运行该命令需要一些时间,不妨先喝杯茶休息一下):

make test-agent-server

下面,打开一个新的终端窗口,在 Nightly 中将  test-agent app 装载进去

  1. 运行下面命令:
    make DEBUG=1
    /Applications/FirefoxNightly.app/Contents/MacOS/firefox -profile /Users/bob/git/gaia/profile-debug -no-remote
  2. 点击 homescreen 上的 Test Aagent app

使用下面命令来运行所有测试

make test-agent-test

注意: 由于要运行很多测试,可能要花费一个小时或更多的时间,因此您可能只想要对您所修改的 app 进行测试。此时,就可以将 APP=<app folder name>  添加在命令后面来实现,如  APP=settings.

注意: 您也可以阅读 Gaia Unit Tests 获取更多单元测试的信息。

集成测试

Integration testing involves testing different units of code together in a group to see how well they work together, and is the logical next step after unit testing. Gaia Integration tests are driven by a marionette script written in JavaScript and a python-based server. It can communicate with Gecko so it’s possible to control both the browser and Firefox OS device, and get them interacting with each other.

You can run the following command to trigger the integration tests:

make test-integration

Note: As with the unit tests, running the whole integration test suite can be very time consuming, so you can append APP=<app folder name> onto the above command to test a single app, for example APP=calendar.

性能测试

Gaia 性能测试会触发 B2G 桌面,多次启动 apps, 并且计算平均 app 装载时间。在运行测试后,性能框架会也会收集 app 和 系统进程(b2g) 的内存使用情况。

要运行这个测试,需要安装上 B2G Desktop, 并运行下面命令

make test-perf

注意: 当涉及到其他的测试类型时,你可以在上面命令后添加 APP=<app folder name> 来测试单个 app, 例如 APP=settings.

整体的平均值会在 mozPerfDurationsAverage 中表示:

"mozPerfDurationsAverage": 225.5

这是以毫秒为单位的平均 app 装载时间。为了优化用户体验,你应该将目标设为 1 s 一下。 性能测试同样会返回一些详细的内存使用值:

{
  "app": {
    "name": "Settings",
    "uss": 16.6,
    "pss": 19.5,
    "rss": 32.9,
    "vsize": 73.3
  },
  "system": {
    "name": "b2g",
    "uss": 50.1,
    "pss": 53.2,
    "rss": 67,
    "vsize": 148.1
  }
},

test-pref 的整体原则是 ”数值越低越好“, 上面的这些值分别表示:

  • uss: unique set size
  • pss: proportional set size
  • rss: resident set size
  • vsize: virtual set size

Generally vsize >= rss >= pss >= uss . vsize and rss don’t accurately reflect a process’s usage of pages shared with other processes. So the two numbers you want to watch are the pss and uss.

uss 是指进程所独自完整占用的内存。如果应用程序当前终止的话,这些内存都可以被释放掉。这是用来评价的关键指标。

pss 是进程共享库按比例所分享的大小。如果进程终止,这些内存也不能释放。
 

注意: 要获取更多性能测试的信息,请参考 Gaia performance tests.

 

文档标签和贡献者

 此页面的贡献者: chrisdavidmills, ReyCG_sub
 最后编辑者: chrisdavidmills,