3

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

我们发现硒测试最适合我们的需求:主要是因为它们可靠。如果一个 selenium 测试报告一个 JS 错误,你 95% 的把握这是一个真正的错误。(这是我们从使用 HTMLUnit 的经验中学到的极其重要的属性)。然而,运行 selenium 测试又慢又重。(我们维护一个小型 cpu 场,因此我们可以异步运行许多 selenium 服务器和许多脚本)。

最近我们提出了一种新方法 - 仅在您真正需要它的地方使用 selenium:弹出窗口、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其他链接的 s。

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

4

1 回答 1

1

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

在我看来,开发人员应该对他们的foo()功能进行单元测试。Javascript中的 TDD 对工具的支持有点低,但应该发生的事情。

如果函数是单元测试,那么 selenium 将成为更多针对用户需求而不是在代码单元级别进行测试的地方。

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

于 2011-03-22T20:31:08.730 回答