我正在构建一套企业级软件的测试。我从Test :: WWW :: Selenium的作者那里得到的好建议是构建更大函数的例程,然后对它们进行参数化。所以我们有:add_user,post_blog等。然后可以丰富这些例程以检查正确的文本是否出现在页面上等等。这个软件是可配置的,我们有几十个网站,都是不同的。但是这些构建块可以串在一起,并且可以在每个站点的基础上适当地修改驱动程序数据。
我在Selenium上发现的一切都是非常初学的,没有关于构建更大的测试套件的事情。除此之外还有什么东西可以做到这么好吗?
答案 0 :(得分:6)
很有可能进行大量的硒测试。在我的组织中,我们每天在多个网站上运行大约200,000到300,000次测试。所以是可能的。
注意: - 我在JAVA中编码,下面的所有信息都是从JAVA的角度来看。
对于使用硒成功的大规模测试,我认为它需要3个基本组件
<强>基础设施强>
您的基础架构应该能够支持巨大的负载。我们使用selenium grid(如果你使用的是Selenium 2,那么它被称为Grid 2.0)来实现这一点。 Selenium Grid允许我们在多个浏览器中并行运行多个测试。我们使用自己的服务器来部署虚拟机以支持此测试。有像Saucelabs.com这样的供应商,您可以将基础设施维护外包给他们。
框架和测试代码
您的框架必须支持多线程,并且使用selenium网格功能应该是线程安全的。我们使用JAVA来确保这种情况发生。使用并行运行测试testNG。 testNG可以并行运行多个方法,所有这些测试都将指向一个Hub。然后,集线器将针对与其连接的多个远程控制(RC)分发所有这些测试。
当您有大量测试时,维护是不可避免的。为了减少由于应用程序更改而导致的返工工作,最好遵循页面对象模型。页面对象本质上意味着 - 应用程序中的每个页面都应该在代码中具有相应的类。您将定义此类中该页面中可能发生的所有元素和功能。这是一个非常模块化和可重复使用的结构。你可以谷歌搜索pageobject模型,你会发现很多文章。
<强>报告强>
每天运行200,000次测试非常棒,但是如果你无法展示失败的内容以及通过易于访问的方法传递的内容,那么自动化测试将没有多大用处。有多种方法可供选择。从HTML报告到构建自定义仪表板以显示结果。
一旦你掌握了所有这些,那么你唯一需要的就是让这些测试持续运行的工具。您可以使用任何CI(持续集成)工具来实现此目的。 Jenkins,Hudson,cruisecontrol是很少使用的CI工具。