16

我有一个系统要测试,这是一种视频广告分发技术。我需要像 1-2 分钟那样加载每个视频来投放广告。视频在 Flash 客户端中播放,并像在 YouTube 中一样作为 FLV 流进行流式传输。

我只需要通过浏览器测试它的原因——其他所有方法都行不通——是同时对视频流服务器和广告服务器进行压力测试并实时显示广告。

我使用过 Selenium、WatiN、Automation Anywhere 和许多其他自动化工具。但是,当我尝试在我的机器上启动 10000 个浏览器(32GB RAM,16 核 CPU)时,它们都无法完成这项工作。

使用 Selenium,到目前为止,我能够启动最多的 FireFox 实例,但这仍然太低:一半的实例没有运行测试。

对 Selenium 有什么建议吗?

4

6 回答 6

5

你不会在你的机器上运行 10,000 个浏览器。这将为每个浏览器实例提供 3.2MB 的物理内存,我很确定 FireFox 不会喜欢这样。

您可以创建一个 JMeter 脚本,用许多线程访问您的服务器。它不会与 UI 交互,但会模拟许多客户端访问您告诉它的任何 URL 的负载。我相信它还包括录制会话和回放以便轻松设置会话的能力。

于 2012-03-26T17:08:12.480 回答
4

Selenium 并没有真正针对负载/压力测试进行优化,尤其是当您在本地运行浏览器时。运行 1000 多个浏览器甚至会扼杀最强大的服务器。尽管 RAM 是一个明显的瓶颈,但 CPU 资源和带宽也有限。如果您正在加载视频,后者是主要关注点。

更不用说您将使用 10k 浏览器从单个 IP 进行测试,因此负载平衡可能无法正确启动,以及视频广告的实际分发给特定虚拟用户。

如果您想坚持现有的 Selenium 测试,我在BrowserMob方面有很好的经验。他们基本上有一个巨大的网格来进行真正的浏览器负载测试,分布在 AWS 上。

另一个建议是实际的性能测试工具。我推荐Soasta CloudTest。他们有一个运行 100 个用户的免费版本,因此您可以查看它是否适合您。我发现 CloudTest 的脚本编写相对简单。

免责声明:我在这两家公司的经历都是作为付费客户,我从来没有为这两家公司工作过。

于 2012-03-28T19:31:22.980 回答
1

如果您使用的是 Windows 机器,那么根据我的经验,要打开的浏览器窗口实例的数量是有限制的。根据我上次的测试,它确实限制了 100-150 个浏览器窗口。

我建议您使用无需打开浏览器窗口的无头机器人。我认为最新版本的 Selenium 具有这种能力。但它似乎更像是一个负载测试,因为您试图模拟 10,000 多个用户实例,我建议您使用 JMeter 或 LoadRunner 之类的负载测试工具。

于 2012-03-26T17:12:21.647 回答
1

在我看来,您正在尝试根据高流量验证客户端会看到什么,不是吗?

在这种情况下,乔尔是完全正确的。如果您绝对必须查看客户端看到的内容,则可以使用线程命中并将结果转储到数据库中。这将向您显示客户端无论如何都会看到的任何内容,并且比数千个浏览器实例更容易排序。

无论哪种方式,如果服务器端没有错误,您的客户端将不会看到错误。如果您在带宽受限的环境、CPU 密集型环境或内存密集型环境中测试功能,那么这些比运行数千个浏览器实例更容易实现。

于 2012-03-26T17:46:13.470 回答
0

你的帖子对我来说是某种形式的基于广告的欺诈行为,但无论哪种方式:你是否考虑过使用除 Firefox 之外的其他网络浏览器?PhantomJS是一个与 Selenium 兼容的基于 webkit 的无头浏览器。它支持所有核心浏览器功能,如 DOM 处理、CSS 选择器、Javascript 和 Canvas。我不知道它是否支持Flash。

这篇文章有一个不错的列表,列出了您可能会考虑的其他无头和可自动化的网络浏览器。

此外,如果每个浏览器实例都在实例化 Flash 插件,请不要忽视问题可能出在 Flash 而不是 Firefox 的可能性。或者,为什么要实例化几个不同的 Firefox 进程?你可以通过使用标签来完成你想要的吗?

于 2014-01-20T09:23:34.720 回答
0

使用 selenium 的内部方法是使用browsermob 代理和多个浏览器代理来重新创建不同用户的体验,更改 ip 更加困难,因为它需要更改您的家庭网络。

这是一个很好的例子

于 2021-09-28T21:32:36.107 回答