测试网站的最佳做法

时间:2011-01-14 10:03:21

标签: selenium-rc web-testing

在我们的QA团队中,我们对开发人员的每次提交运行一套自动化测试。由于每天都有很多此类提交,并且开发人员不想等待超过几分钟才能获得反馈,因此我们仅限于5分钟的测试。在这5分钟内,我们希望尽可能多地运行测试。

我们发现硒测试最符合我们的需求:主要是因为它们是可靠的。如果硒测试报告了JS错误,那么你肯定会发现这是一个真正的错误。 (这是我们从使用HTMLUnit的经验中学到的非常重要的属性)。然而,运行硒测试是缓慢而沉重的。 (我们维护一个小型的cpu服务器场,因此我们可以异步运行许多selenium服务器和许多脚本。)

最近我们提出了一种新的方法 - 仅在你真正需要它的地方使用selenium:popups,ajax,JS一般,..在其他地方使用“文本浏览器”。例如,如果要检查以下链接是否“有效”:

<a href='/somewhere'> link </a>

你真的不需要硒。您可以对页面执行GET请求,然后使用正则表达式/解析页面并使用xpath / ..底线 - 您不需要JS引擎。显然,这是一个更轻,更快的测试。

我们在这种方法上取得了很大的成功,我们遇到了以下链接:

<a href='/somewhere-1' onclick="foo()" > link 1 </a>
<a href='/somewhere-2' onclick="foo()" > link 2 </a>
... many more such links ...

因此,在这种情况下,您实际上不必运行按下每个链接的selenium脚本。只需使用selenium单击其中一个(因此您测试JS函数foo()的功能),然后使用文本浏览器验证其他链接的href

我的问题是你认为我们应该在哪里画线?我很高兴听到你的意见 - 那里有“文本浏览器”工具(我们还没有使用过WebDriver)?

1 个答案:

答案 0 :(得分:1)

在我看来,你正在做的事情和我期望你的开发人员做的事情之间的界线有点模糊。

在我看来,开发人员应该对foo()函数进行单元测试。 TDD in Javascript在工具支持方面有点低,但应该发生一些事情。

如果函数是单元测试,那么selenium就可以根据用户需求而不是代码级别来测试更多。

也就是说,QA和开发团队之间的互动在社交方面非常复杂,可能很难达成协议来遵循这种方法。