虚拟机上的跨浏览器测试 - 问题?
Posted
技术标签:
【中文标题】虚拟机上的跨浏览器测试 - 问题?【英文标题】:Cross Browser Testing on Virtual Machines - Issues? 【发布时间】:2011-02-18 16:30:53 【问题描述】:我所在的组织中,一些非常有能力的人就是否在虚拟机(IE6/7/8、FF2/3、Chrome)上测试 javascript 密集型 Web 应用程序的跨浏览器行为存在争议在 XP/Vista/7 上)是可靠的。这是在 Linux 主机上使用 VMWare 服务器。
虽然看到的差异很少,但在某些情况下,很难判断它是虚拟化的产物还是只是不同的机器配置。
我向社区提出的问题是,人们对此有何体验? VM 造成不一致的说法是否可信,或者它们通常是可靠的?我们可以相信他们吗?
【问题讨论】:
您可能希望删除 html 标签并添加虚拟化标签以引起任何 VMWare 专家的注意。 您能说出您观察到的具体不一致之处吗? 【参考方案1】:如果虚拟机运行的是普通操作系统,那么它的浏览器应该没有任何问题。
渲染和性能差异可能很明显,但无论如何您都应该对此进行测试。
请记住,您的最终用户也可能在虚拟机中浏览您的网站。
【讨论】:
【参考方案2】:虚拟机是最好的方法。诸如多个 IE 差异之类的其他选项更为频繁。 我们个人使用 Virtual Box
【讨论】:
【参考方案3】:在虚拟机内运行的操作系统和在实际金属上运行的操作系统没有区别!
显然,正如您所指出的,操作系统和应用配置可能会使并排比较变得困难。
此外,虚拟化下可能存在性能差异。这应该不会对浏览器行为产生可衡量的影响。
我建议与您的人一起提出一个操作系统配置黄金副本脚本,您可以在构建可以解决可能的比较问题的虚拟和主机操作系统时遵循该脚本。例如:
清除类型? 图形驱动程序?版本? 屏幕分辨率? 字体安装了吗? 内存? 浏览器版本? 浏览器浏览历史? (请参阅 http://www.west-wind.com/Weblog/posts/490727.aspx 获取 css 重置资源)【讨论】:
我应该警告我的第一句话:当然有区别。关键是虚拟化操作系统不知道它们。 +1 在这个答案上,这绝对是虚拟化的配置问题,而不是虚拟化本身的问题。正如 Noel 指出的那样,您需要构建要为其提供支持的配置。【参考方案4】:我从未见过 VM 中的代码与“真实”PC 上的代码之间的行为差异,我无法直接将其归因于底层操作系统之间的补丁差异。同样,我曾在建筑物中工作过,其中一台配置神秘的笔记本电脑会表现出奇怪的行为,而找不到其他机器可以做同样的事情。 (是的,Web 应用程序中奇怪的 Javascript 行为。我现在从它的记忆中不寒而栗。)
现在,如果您的代码涉及测试可能受视频驱动程序影响的事物,那么您可能需要担心。显然,基于 VM 的方法不会在视频硬件方面给您带来太多变化。但是,对于 Web 应用程序,这似乎不太可能成为问题。
【讨论】:
【参考方案5】:没有区别。我们运行跨浏览器测试服务,并为所有基于 Windows 和 Ubuntu 的配置使用 VMWare ESXi。虚拟机映像下的浏览器呈现就像它们在“真实”操作系统下一样。
【讨论】:
【参考方案6】:在虚拟机上运行与在真机上运行的唯一区别是您可能需要注意的实际硬件差异。使用 VM 的优势在于所有操作系统组合都将针对相同的虚拟硬件运行 - 相同的普通 VGA“适配器”、相同的普通网络“卡”等。不过,对于测试来说,这也是一种负担,因为这意味着您没有针对真实世界的硬件进行测试。
在浏览器中运行的 JavaScript 通常不应该关心您的硬件,但在某些情况下可能会观察到工件。如果您的 JavaScript 使用高级浏览器功能,如插件、ActiveX 控件或显示功能(如 Flash、Silverlight、OpenGL 或 Canvas 或其他),或视频或音频播放等,您的代码可能对机器之间的硬件差异敏感仅在同构 VM 中进行测试时不明显。同样,如果您的 JavaScript 正在执行相当低级的有线协议操作(通过 XmlHttpRequest 发送数据包),VM 虚拟网络堆栈与实际网卡硬件和驱动程序之间的差异可能会导致数据包到达时间的变化、丢弃的数据包,或者可能甚至是乱序的数据包。
IMO 的最佳行动方案是在 VM 中进行大部分测试,甚至可能是所有自动化测试,因为这样做更易于管理且更经济,而且还需要预算和安排一些测试在广泛不同的硬件上 - 超级快速和超级糟糕的视频卡、内置主板音频以及售后市场音频卡、uniproc 和 multiproc 系统等。
【讨论】:
以上是关于虚拟机上的跨浏览器测试 - 问题?的主要内容,如果未能解决你的问题,请参考以下文章