3

我们正在一个大型 Web 应用程序上设置Selenium测试活动。我们做的第一件事是建立一个框架,在测试前初始化数据库中的 SQL 数据,启动测试,归档结果,然后清除数据。

我们已将其集成到 Maven 2 进程中,由TeamCity每天在专用数据库上运行。

我们现在已经设置了几个 Selenium 测试,但它没有按计划使用。

原因是测试有时会因为回归以外的其他原因而中断(数据可能已更改,存储过程可能已重新编译等)。

我想知道用户界面测试是否取得了巨大的成功,如果是的话,原因是什么。Commons 错误也可能让我感兴趣。

4

3 回答 3

1

如果你想要可靠的单元测试,你需要有相同的输入。数据库的起始状态是输入。因此,您每次都需要具有相同的起始数据库。当然,如果您希望使用不同的输入进行测试,则需要创建另一个单元测试(因为结果显然不会相同)。

当我做这样的事情时,我总是使用同一个数据库作为起点。当然,有些测试可能会在不修改数据库的情况下失败,这是正确的方法,因此其他一些后续测试也可能会失败,即使它们不会以其他方式失败。如果您的单元测试工具允许,您应该定义测试之间的依赖关系,以确保在“父”测试失败时根本不会运行这些测试。

于 2008-09-29T07:36:34.053 回答
1

可测试性有很大帮助。Web 应用程序中可测试性的最大优势在于,您需要在页面上与之交互的所有 HTML 元素是否具有独特且一致的属性。如果您用来识别 HTML 元素的属性(Selenium 使用 xpath)在构建到构建或会话到会话中不一致/可靠,那么您的测试脚本将失败。此外,这些属性必须是唯一的,以便自动化工具(在本例中为 Selenium)可以可靠地找到网页上的对象。

于 2008-09-30T18:24:55.767 回答
0

我使用 http-unit,它具有在将任何样式添加到页面之前工作的额外好处。

http://httpunit.sourceforge.net/ 您可以附加测试以在 maven2 的集成测试阶段运行。

从网站

用 Java 编写的 HttpUnit 模拟浏览器行为的相关部分,包括表单提交、JavaScript、基本 http 身份验证、cookie 和自动页面重定向,并允许 Java 测试代码检查返回的页面作为文本、XML DOM 或表单容器、表格和链接。

于 2008-09-29T07:30:19.950 回答