如何在Web用户界面测试中取得成功?
我们正在大型Web应用程序上设置Selenium测试活动。
我们要做的第一件事是建立一个框架,该框架在测试之前初始化数据库中的SQL数据,启动测试,存档结果,然后清除数据。
我们已将其集成到Maven 2流程中,该流程由TeamCity每天在专用数据库上运行。
我们现在已经设置了几个Selenium测试,但是它没有按计划使用。
原因是测试有时由于除回归之外的其他原因而被破坏(数据可能已更改,存储过程可能已重新编译等等)。
我想知道用户界面测试是否成功,如果成功,原因是什么。常见错误也可能引起我的兴趣。
解决方案
我使用http-unit,它具有在将任何样式添加到页面之前可以工作的添加优点。
http://httpunit.sourceforge.net/
我们可以添加测试以在maven2的集成测试阶段中运行。
来自网站
Written in Java, HttpUnit emulates the relevant portions of browser behavior, including form submission, JavaScript, basic http authentication, cookies and automatic page redirection, and allows Java test code to examine returned pages either as text, an XML DOM, or containers of forms, tables, and links.
如果要进行可靠的单元测试,则需要输入相同的内容。数据库的启动状态是输入。因此,我们每次都需要具有相同的启动数据库。当然,如果我们希望使用不同的输入进行测试,则需要创建另一个单元测试(因为结果显然会有所不同)。
当我做这样的事情时,我总是使用相同的数据库作为起点。当然,如果没有正确的修改数据库的方式,某些测试可能会失败,因此,其他一些后续测试也可能会失败,即使不是这样。如果单元测试工具允许,则应定义测试之间的依赖关系,以确保在"父"测试失败时根本不会运行这些测试。
可测试性有很大帮助。 Web应用程序中可测试性的最大胜利是,如果我们需要与页面上进行交互的所有HTML元素都具有唯一且一致的属性。如果用于标识HTML元素的属性(Selenium使用xpath)在构建到构建或者会话到会话之间不一致/不可靠,则测试脚本将失败。而且,这些属性必须是唯一的,以便自动化工具(在本例中为Selenium)可以可靠地在网页上找到对象。