浏览器中的无头测试。 利弊

你好 该出版物致力于本周开始的Web测试自动化课程的启动。 享受阅读!

什么是无头测试?

无头测试是浏览器中启动的一项测试,用于测试UI的任何组件的性能而不显示此UI本身。 这样的测试会在浏览器中启动脚本,但不会启动,也不会单独显示UI。



为什么您需要使用无头浏览器? 这种方法有很多优点和缺点。 使用无头浏览器在网上冲浪可能不是很有用,但对于自动化任务和测试却是必不可少的。

为什么要使用无头浏览器?

但是,追随金钱是陈词滥调,我仍然认为这是趋势出现的关键指标,因此,您绝对应该注意。 例如,Sauce Labs刚刚发布了一项名为Sauce Headless的新服务,这是一种基于云的解决方案,用于无头测试您的解决方案。

我知道Sause中的人都是聪明人。 他们不会一无所获。 他们需要从用户那里获得反馈,以了解任何功能都是必需的。

我相信他们不会孤单地寻求发展无头的测试。
随着我们在软件开发生命周期中的前进,测试人员需要越来越快地向开发人员提供反馈。 实现此目的的一种方法是使用无头浏览器进行快速检查。

软件开发自动化

我全力以赴地追求自动化,但自动化不仅涉及测试。
这是一个有关所有方面的故事,您可以在各个方面进行自动化,以节省软件开发,质量控制或测试,DevOps或安装的生命周期中的时间或精力。 无头浏览器是功能强大的自动化工具之一。

无头浏览器比常规浏览器更快

无头浏览器和常规浏览器之间最重要的区别之一是它们的速度。 事实是,当您在没有GUI的浏览器中加载页面时,不需要花费时间加载CSS,JavaScript和呈现HTML。

我不会说差异会很大,但是在某些情况下,您可以跟踪速度提高一半甚至15倍。因此,如果性能对您很重要,那么无头浏览器将是一个不错的选择。

使用无头浏览器进行抓取

无头浏览器的另一个优点是它们能够从网站收集数据。 为此,您不必手动启动浏览器。 您可以使用无头技术来简单地废弃HTML。 渲染整个浏览器是完全可选的。

假设您的案件需要在各个网站上进行体育统计或价格比较。

由于只需要数据,因此没有必要启动浏览器的基本功能并不必要地加载计算机,因为加载量越少,获得结果的速度就越快。 不一定要进行测试,您只需要使用正确的工具即可工作。 总的来说,我认为徒劳的测试人员低估了他们所在领域的无头浏览器。

因此,如果您需要从网页获取数据,则无需通过打开浏览器来打开它并提供额外的负载,所有必要的功能都可以提供无头的浏览器。

节省开发时间

我知道许多开发人员使用无头浏览器来对其站点和应用程序进行单元测试。 通过命令行使用它而无需手动更新或启动浏览器的功能为他们节省了很多时间和精力。 例如, PhantomJS CookBook的作者Rob Frizzel在接受TestTalks采访时解释了为什么他的开发人员使用无头PhantomJS浏览器:
“尽管PhantomJS本身不是测试框架,但它是有用的“煤矿中的一束光线”,这给人信心。 如果所有的测试都通过了,那么您将更加自信自己的代码真的很好。”
使用无头浏览器脚本进行性能监视

使用无头浏览器的另一种选择是监视网络应用程序的性能。

有些人甚至使用它们来自动渲染并拍摄网站屏幕的屏幕截图,以便以自动样式测试布局。

我认为这是Google开发了一种新的无头Chrome API称为Puppeteer的原因之一。 它主要旨在帮助开发人员。

关键思想无头浏览器测试

除了先前的想法外,还有其他使用无头浏览器的选项,我现在将告诉您:

  1. 在没有监视器的机器上运行测试;
  2. 数据设定;
  3. SSL测试;
  4. 在一台机器上模拟多个浏览器;
  5. 在没有GUI的无头系统(例如Linux)上运行测试;
  6. 接收和可视化PDF文件;
  7. 标记测试,因为无头浏览器可以将HTML和CSS渲染为成熟的浏览器,因此您可以使用样式对其进行测试。

不想使用无头浏览器的情况

当然,有时候您可能想使用完整的浏览器而不是无头浏览器。 例如:

  1. 您需要模拟真实用户;
  2. 您需要查看测试的工作方式。
  3. 如果需要调试,使用无头浏览器可能会很棘手。

流行的无头浏览器

  1. Google Puppeteer-无头浏览器Puppeteer是一个节点库。 它提供了用于使用DevTools协议控制无头Chrome或Chromium的高级API。 也可以将其配置为使用成熟的(无头)铬或铬。
  2. 版本59的Google Chrome;
  3. Firefox 55和56版本;
  4. PhantomJS -JavaScript API上的无头Webkit。 它具有对各种Web标准的快速本机支持:DOM树处理,CSS选择器,JSON,Canvas和SVG格式。 *现在不支持。 因此,您可能不想使用它。
  5. HtmlUnit是一种不带Java代码GUI的浏览器。 它为HTML文档建模,并提供一个API,使您可以打开页面,填写表格,单击链接等。 以及您的“常规”浏览器中。
  6. Splinter -Splinter是一款无头的面向Python的浏览器。 它是开源的,用于使用Python测试Web应用程序。 例如,您可以使用它来自动执行浏览器操作,例如访问网页并与其元素进行交互。
  7. jBrowserDriver-与Selenium WebDriver规范兼容的可编程嵌入式Web浏览器驱动程序-无头,基于WebKit,采用纯Java。

什么时候应该使用无头浏览器进行测试?

该问题的答案取决于测试的目的。

一方面,人们经常说:“切勿使用无头浏览器。 真正的用户永远不会使用它,那为什么要呢?” 尽管另一方面,我们听到:“您应该始终使用无头浏览器,因为它速度更快,并且测试速度更快,这意味着更好”

众所周知,每个职位都会有支持者和反对者,但这只是选择正确的工具来解决某些问题的问题。

请记住,您应该为工作使用最佳工具,并始终问自己这将如何影响最终用户,每次在这两种观点之间做出选择时,都应该问自己测试的目的是什么。

根据既定的惯例,我们正在等待您的评论,同时还记得在几个小时内会有一个开放日 ,您可以在其中详细了解我们的课程。

Source: https://habr.com/ru/post/zh-CN444248/


All Articles