Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谁为webkit编写了25000个测试?_Javascript_Css_Testing_Google Chrome_Webkit - Fatal编程技术网

Javascript 谁为webkit编写了25000个测试?

Javascript 谁为webkit编写了25000个测试?,javascript,css,testing,google-chrome,webkit,Javascript,Css,Testing,Google Chrome,Webkit,假设产量为每小时3,则为83000小时。每天8小时等于10500天,除以30得到342个虚构的人月。我称之为神话,因为每人每周写125个测试是不真实的 任何一个有智慧的灵魂都能为什么样的神话人物为大型软件项目编写大量不真实的测试提供一些线索吗?多谢各位 更新chrisw认为只有20k个测试(查看下面他的解释)。 PS我真的很想听听那些在大型测试基地项目中工作过的人的意见,这真的取决于这是如何计算的 但是无论如何,一旦建立了一个测试特定类/库/单元/任何东西的好框架,添加一个新测试通常只需要几行。

假设产量为每小时3,则为83000小时。每天8小时等于10500天,除以30得到342个虚构的人月。我称之为神话,因为每人每周写125个测试是不真实的

任何一个有智慧的灵魂都能为什么样的神话人物为大型软件项目编写大量不真实的测试提供一些线索吗?多谢各位

更新chrisw认为只有20k个测试(查看下面他的解释)。

PS我真的很想听听那些在大型测试基地项目中工作过的人的意见,这真的取决于这是如何计算的


但是无论如何,一旦建立了一个测试特定类/库/单元/任何东西的好框架,添加一个新测试通常只需要几行。如果他们编写的测试的目标是高代码覆盖率,那么这些测试通常会更短,因为为了获得不同的代码路径,您会执行许多只随单个变量的值变化的测试。

我在5分钟内只编写了4个单元测试。并不是所有的单元测试都需要很长时间才能完成。有些很简单;)

这些似乎不是单元测试:它们看起来更像系统/回归测试

这并不能直接回答你的问题,但我已经开发了自己的浏览器,所以我可能对它有一点了解;见:

任何一个有智慧的灵魂都能为什么样的神话人物为大型软件项目编写大量不真实的测试提供一些线索吗

编写这种测试很容易,也很必要:

  • 简单:编写一个html页面(或类似的黑框输入),以练习功能/特性/行为
  • 必要的:
  • 编写时需要测试/练习功能
  • 提交任何缺陷报告时,需要演示/重现缺陷
  • 需要保留1之前的所有测试。进行回归检验

我的一位老板曾经说过,“你检查什么就得到什么。”(这意味着你没有测试的东西都是未知的/随机的)。

你的分析充其量是不完整的。或者是有偏见,我猜

您应该计算测试人员的数量,其中一些(或全部)完全致力于测试,而只有测试,是什么让他们更有效率。此外,您应该意识到,在许多项目中,很少有测试是复杂的,而且大多数测试可能是重复的,因此它们可以很容易地实现。

  • 有自动单元测试生成器之类的东西。对于复杂函数,您可能经常需要运行可能值的所有排列,例如7个参数。如果它们是布尔值,则得到27=128个测试。对于某些场景,这128个测试都是使用10行代码生成的

  • 许多基于回归的单元测试可以通过以下方式生成:获取大量输入,在其上运行现有代码,记录相应的输出,然后进行数以百万计的测试,这些测试获取新代码,在相同的输入和输出匹配旧输出的测试上运行

  • 编写单元测试是一项相当分散的工作。大批实习生/志愿者可以同时完成这项工作

来自

“对于影响布局引擎的任何特性,必须构造新的回归测试。如果您提供了修复bug的修补程序,那么该修补程序还应包括添加回归测试,该测试在没有修补程序的情况下会失败,而在修补程序的情况下会成功。如果没有提供回归测试,评审员会要求您修改补丁,这样您就可以提前构建测试并确保它连接到bug,从而节省时间。如果无法(或需要)为修复构建布局测试,则必须向审阅者解释为什么不需要新测试。“

Q) 这些测试是谁写的?
A) 几乎所有为webkit做出贡献的人。

在评论中,你问:

谁在观察观察者?一定有人做了一件噩梦般的工作,把这些小鸭都赶出去了

……还有


对,你问的问题和我一样。有多少测试人员。他们是谁。他们是开发人员还是QA人员?志愿者


您的问题可能在以下位置得到解答。

原始目录包含240K个文件:

 Total Files Listed:
       243541 File(s)  1,062,470,729 bytes
       64718 Dir(s)
其中许多是svn文件。如果删除所有名为“.svn”的子目录,则文件数将降至90K:

 Total Files Listed:
       90615 File(s)    537,457,618 bytes
        7190 Dir(s) 
有些目录有一个名为“resources”和/或“script tests”的子目录。我认为这些子目录包含超级目录中的测试用例使用的帮助文件。如果我删除这些子目录(因为它们不会添加到测试总数中),则文件数会下降到87K:

 Total Files Listed:
       87672 File(s)    534,598,610 bytes
        6305 Dir(s)
压缩“相似”文件名(例如,“body.html上的箭头键”和“body expected.txt上的箭头键”是定义单个测试的两个文件)将总数从87K减少到43K

包含1500多个测试用例(如上所述计数)的子目录只有:

在平台子目录中,似乎有一些平台之间的复制和粘贴。例如,
css3-modsel-37-expected.txt
文件存在:

  • LayoutTests\platform\mac\css3
    子目录中
  • LayoutTests\platform\chromium-win\css3
    子目录中
  • LayoutTests\platform\qt\css3
    子目录中
如果我丢弃复制到几个平台子目录中的文件名,那么只有5716(而不是22575)个唯一的平台测试

总之,我认为大约有18K个独特的测试:这仍然是一个令人印象深刻的测试数量,但比您在OP中估计的250K少


通过比较,我最近发现:看起来大约有9000个CSS测试用例

假设收益率为每小时3,则为83000小时

考虑到只有18K个独特的测试,每人每年200个工作日
2761   LayoutTests\dom
10330  LayoutTests\fast (of which 5934 are in LayoutTests\fast\js)
22575  LayoutTests\platform (with various O/S-specific subdirectories).
> clientSize 20 10
+ screenDisplays lines 0
----------
----------
> loadDocument lines 5
----------
<div>
<h1>Easy title</h1>
<p>Hello world. Lorem ipsum.</p>
<p>Embedded <a>anchor</a> tag.</p>
</div>
----------
< invalidateAll
> paint 0 0 20 10
+ screenDisplays lines 10
----------
····················
····················
··»«Easy title········
····················
····················
··Hello world. ·····
··Lorem ipsum.······
····················
····················
··Embedded anchor ··
----------
> mouse down 9 2
< ensureVisible 9 2 1 13
+ screenDisplays lines 10
----------
····················
····················
··Easy ti»«tle········
····················
····················
··Hello world. ·····
··Lorem ipsum.······
····················
····················
··Embedded anchor ··
----------
> mouse up 9 2
< ensureVisible 9 2 1 13
+ screenDisplays lines 10
----------
····················
····················
··Easy ti»«tle········
····················
····················
··Hello world. ·····
··Lorem ipsum.······
····················
····················
··Embedded anchor ··
----------
> keyDown Enter
< invalidate 2 2 16 1
< invalidateAll
< invalidate 2 4 16 3
< ensureVisible 2 5 1 16
+ currentDocument lines 6
----------
<div id="ModelText_id_contents">
 <h1>Easy ti</h1>
 <h1>tle</h1>
 <p>Hello world. Lorem ipsum.</p>
 <p>Embedded <a>anchor</a> tag.</p>
</div>
----------
+ debugDumpDom lines 15
----------
 1  div
 2    h1
 3      Easy ti
 4    h1
 5      tle
 6    p
 7      Hello world. Lorem ipsum.
 8    p
 9      Embedded 
10      a
11        anchor
12       tag.

Selected start={parentId=4,parent={tle},offset=0}, end={parentId=4,parent={tle},offset=0}

----------
> paint 0 0 20 10
+ screenDisplays lines 10
----------
····················
····················
··Easy ti···········
····················
····················
··»«tle···············
····················
····················
··Hello world. ·····
··Lorem ipsum.······
----------