量角器 – Javascript 测试的概念

量角器 – Javascript 测试的概念


由于 JavaScript 的知识对于使用 Protractor 是必不可少的,因此在本章中,让我们详细了解 JavaScript 测试的概念。

JavaScript 测试和自动化

JavaScript 是最流行的动态类型和解释性脚本语言,但最具挑战性的任务是测试代码。这是因为与 JAVA 和 C++ 等其他编译语言不同,JavaScript 中没有编译步骤可以帮助测试人员找出错误。此外,基于浏览器的测试非常耗时;因此,需要支持 JavaScript 自动化测试的工具。

自动化测试的概念

编写测试始终是一个好习惯,因为它可以使代码更好;手动测试的问题在于它有点耗时且容易出错。手动测试的过程对于程序员来说也很无聊,因为他们需要重复这个过程,编写测试规范,更改代码并多次刷新浏览器。此外,手动测试也会减慢开发过程。

由于上述原因,拥有一些可以自动化这些测试并帮助程序员摆脱这些重复和无聊的步骤的工具总是有用的。开发人员应该怎么做才能使测试过程自动化?

基本上,开发人员可以在 CLI(命令行解释器)或开发 IDE(集成开发环境)中实现该工具集。然后,即使没有开发人员的输入,这些测试也将在单独的过程中连续运行。JavaScript 的自动化测试也不是新事物,已经开发了许多工具,如 Karma、Protractor、CasperJS 等。

JavaScript 的测试类型

可以针对不同的目的进行不同的测试。例如,一些测试用于检查程序中函数的行为,而另一些则用于测试模块或功能的流程。因此,我们有以下两种类型的测试 –

单元测试

测试是在称为单元的程序的最小可测试部分上完成的。该单元基本上是独立测试的,该单元对其他部分没有任何依赖性。在 JavaScript 的情况下,具有特定行为的单个方法或函数可以是一个代码单元,这些代码单元必须以隔离的方式进行测试。

单元测试的优点之一是单元的测试可以按任何顺序进行,因为这些单元是相互独立的。真正重要的单元测试的另一个优点是它可以随时运行测试,如下所示 –

  • 从开发过程的一开始。
  • 在完成任何模块/功能的开发之后。
  • 修改任何模块/功能后。
  • 在现有应用程序中添加任何新功能后。

对于 JavaScript 应用程序的自动化单元测试,我们可以从许多测试工具和框架中进行选择,例如 Mocha、Jasmine 和 QUnit。

端到端测试

它可以定义为用于测试应用程序从开始到结束(从一端到另一端)的流程是否按照设计正常工作的测试方法。

端到端测试也称为功能/流程测试。与单元测试不同,端到端测试测试各个组件作为应用程序如何协同工作。这是单元测试和端到端测试之间的主要区别。

例如,假设我们有一个注册模块,用户需要提供一些有效信息来完成注册,那么该特定模块的 E2E 测试将按照以下步骤完成测试 –

  • 首先,它将加载/编译表单或模块。
  • 现在,它将获取表单元素的 DOM(文档对象模型)。
  • 接下来,触发提交按钮的点击事件来检查它是否工作。
  • 现在,出于验证目的,从输入字段中收集值。
  • 接下来,应验证输入字段。
  • 出于测试目的,调用一个伪造的 API 来存储数据。

每一步都会给出自己的结果,这些结果将与预期的结果集进行比较。

现在,出现的问题是,虽然这种 E2E 或功能测试也可以手动执行,但为什么我们需要自动化?主要原因是自动化将使这个测试过程变得容易。一些可以轻松与任何应用程序集成的可用工具是 Selenium、PhantomJS 和 Protractor。

测试工具和框架

我们有各种用于 Angular 测试的测试工具和框架。以下是一些著名的工具和框架 –

业力

由 Vojta Jina 创建的 Karma 是一个测试运行器。最初这个项目被称为 Testacular。它不是一个测试框架,这意味着它使我们能够在真实浏览器上轻松自动地运行 JavaScript 单元测试。Karma 是为 AngularJS 构建的,因为在 Karma 之前,没有针对基于 Web 的 JavaScript 开发人员的自动化测试工具。另一方面,借助 Karma 提供的自动化,开发人员可以运行简单的单个命令并确定整个测试套件是通过还是失败。

使用 Karma 的优点

与手动过程相比,以下是使用 Karma 的一些优点 –

  • 在多个浏览器和设备中自动化测试。
  • 监视文件中的错误并修复它们。
  • 提供在线支持和文档。
  • 简化与持续集成服务器的集成。

使用 Karma 的缺点

以下是使用 Karma 的一些缺点 –

使用 Karma 的主要缺点是它需要额外的工具来配置和维护。

如果您将 Karma 测试运行器与 Jasmine 一起使用,那么在一个元素具有多个 id 的情况下,可用于查找有关设置 CSS 的信息的文档较少。

茉莉花

Jasmine 是一种用于测试 JavaScript 代码的行为驱动开发框架,由 Pivotal Labs 开发。在 Jasmine 框架积极开发之前,Pivotal Labs 也开发了一个名为 JsUnit 的类似单元测试框架,它有一个内置的测试运行器。浏览器测试可以通过包含 SpecRunner.html 文件或将其用作命令行测试运行器来通过 Jasmine 测试运行。它也可以在有或没有 Karma 的情况下使用。

使用茉莉花的优点

以下是使用 Jasmine 的一些优点 –

  • 一个独立于浏览器、平台和语言的框架。

  • 支持测试驱动开发 (TDD) 以及行为驱动开发。

  • 默认与 Karma 集成。

  • 易于理解的语法。

  • 提供测试间谍、假货和直通功能,这些功能有助于作为附加功能进行测试。

使用茉莉花的缺点

以下是使用茉莉花的骗局 –

  • 测试必须由用户在更改时返回,因为在运行测试时 Jasmine 中没有可用的文件监视功能。

摩卡

Mocha 是为 Node.js 应用程序编写的,是一个测试框架,但它也支持浏览器测试。它很像 Jasmine,但它们之间的主要区别在于 Mocha 需要一些插件和库,因为它不能作为测试框架独立运行。另一方面,Jasmine 是独立的。但是,Mocha 使用起来比 Jasmine 更灵活。

使用摩卡的优点

以下是使用 Mocha 的一些优点 –

  • Mocha 非常易于安装和配置。
  • 用户友好和简单的文档。
  • 包含具有多个节点项目的插件。

使用摩卡的缺点

以下是使用 Mocha 的一些缺点 –

  • 它需要用于断言、间谍等的单独模块。
  • 它还需要额外的配置才能与 Karma 一起使用。

QUnit

QUint 最初由 John Resig 于 2008 年作为 jQuery 的一部分开发,是一个功能强大且易于使用的 JavaScript 单元测试套件。它可用于测试任何通用 JavaScript 代码。虽然它侧重于在浏览器中测试 JavaScript,但它对于开发人员的使用非常方便。

使用 QUnit 的优点

以下是使用 QUnit 的一些优点 –

  • 易于安装和配置。
  • 用户友好和简单的文档。

使用 QUnit 的缺点

以下是使用 QUnit 的缺点 –

  • 它主要是为 jQuery 开发的,因此不太适合与其他框架一起使用。

Selenium 最初由 Jason Huggins 于 2004 年作为 ThoughtWorks 的内部工具开发,是一种开源测试自动化工具。Selenium 将自己定义为“Selenium 自动化浏览器。就是这样!”。浏览器的自动化意味着开发人员可以非常轻松地与浏览器交互。

使用硒的优点

以下是使用 Selenium 的一些优点 –

  • 包含大型功能集。
  • 支持分布式测试。
  • 通过 Sauce Labs 等服务获得 SaaS 支持。
  • 易于使用,提供简单的文档和丰富的资源。

使用硒的缺点

以下是使用 Selenium 的一些缺点 –

  • 使用 Selenium 的一个主要缺点是它必须作为一个单独的进程运行。
  • 配置有点麻烦,因为开发人员需要遵循几个步骤。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁