正如图表及delta列所示,我们在努力下,近乎完全的成功改进了单元测试的兼容性。
大部分文件更改已包含在HHVM 2.3版本中,以下是一些对单元测试结果有显著影响的关键改进:
无论怎样,我相信你对我们的成果还有一些好奇: 1. 为什么phpMyAdmin的兼容性下降了呢? 这并不是“由于我们改动代码造成单元测试失败”这个维度上的下降。这实际上可能是我们的测试框架脚本在最初未能正确的载入全部测试用例造成的。我们修复了这个问题。尽管如此,我们正在调查这个下降的根本原因,以防我们破坏了某些东西。 2. 为什么在11月24日左右有一个垂直跌落。我们提交了一处修改,本想将测试框架推向完美,但却在运行时遭遇段异常。这个错误很快被修复了。 测试框架正如前文所述,用来提升单测兼容性的21款开源项目是根据流行程度挑选出来的。不过,挑选还基于他们是否使用PHPUnit以及他们在我们的框架上运行的如何。举例来说,这些项目的单元测试数量,Symfony和ZF2各有超过一万个测试用例,我们需要一个能以较快方式运行所有项目单元测试用例的测试框架。因此,我们开发了一个可并行下载、安装和运行所有单元测试的脚本。这个脚本仍然在完善中,但它已帮助我们在30分钟到一个小时内运行五万个以上的单元测试用例并且可连续运行很多个小时。这个脚本位于:HHVM Github repository 可能你已经注意到,你所喜爱的开源项目并未出现在上面的名单中。这是由于以下几个原因造成的:首先,我们不可能在3周时间内覆盖所有的开源项目。其次,虽然诸如CakePHP这样的开源项目很重要,我们也计划将它们加入测试框架,但由于一些安装和配置方面的的问题(例如,要求数据库)使我们无法在短时间内完成这一工作。 最后,正如我们在封闭开发前发表的博文中所述,HHVM团队创建了很多“便利贴”来指引项目。便利贴显示两项内容:与便利贴上所述任务相关的失败测试用例数及已开发天数。所以,我们通常按从左上角到右下角的顺序工作,以使我们取得最大回报。 假设与警告指出与上述统计值相关的假设及警告是很有必要的。 1. 整体单元测试通过百分比(98.5%)是简单的,未加权平均数(即,所有百分比相加除以21).因此,类似Paris这种只含有50个单元测试用例的项目和类似Symfony这种包含一万单元测试用例的项目拥有相同的权重。如果我们加权 (其中 Symfony 和 Zf2 会得到比Pair和 Idiorm更多的权重)计算这些百分比,整体通过百分比会有极小的跌幅 (绩效跌幅的原因是因为在所有开源资源项目的通过百分比方差小) 2. 某些在HHVM上运行失败的测试用例,同样无法在PHP 5.5.x环境中运行。我们称其为“小丑”同时在我们的测试框架中忽略他们。 3. 某些单元测试会导致我们的测试框架脚本出错(例如,死锁)。我们屏蔽了这些测试用例并把它们归为失败用例。 |