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