2011-01-14 190 views
3

在我们的QA团队中,我们针对开发人员所做的每项提交都运行一套自动化测试。由于每天有很多这样的提交,并且没有开发人员想要等待超过几分钟才能获得反馈,所以我们仅限于5分钟的测试。在这5分钟内,我们想要运行尽可能多的测试。测试网站的最佳实践

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

最近我们提出了一种新的方法 - 只在你真正需要的地方使用硒:弹出窗口,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 ... 

因此,在这种情况下,你真的没有来运行按下每一个环节硒脚本。只需点击其中一个使用硒(这样你就可以测试JS功能foo()的功能),然后使用文本浏览器来验证其他链接的href

我的问题是你认为我们应该在哪里画线?我很乐意听到你的意见 - 有没有“文本浏览器”工具(我们没有与WebDriver合作)?

回答

1

这听起来像是我在做什么和我期望开发人员做的事情之间的界限有点​​模糊。

在我看来,开发者应该对他的foo()函数进行单元测试。 TDD in Javascript在工具支持上有点低,但应该发生。

如果函数是单元测试,那么硒就成为了更多的测试用户需求的地方,而不是代码级别的单元。

也就是说,质量保证和开发团队之间的交互在社交上非常复杂,并且可能很难得到同意遵循这种方法。