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

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

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

原因是测试有时因其他原因而被破坏而不是回归(数据可能已更改,存储过程可能已重新编译等)。

我想知道用户界面测试是否取得了巨大成功,如果是这样,原因就在于此。 Commons错误也可能让我感兴趣。

有帮助吗?

解决方案

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

其他提示

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

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

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

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

来自网站

  

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top