📜  Protractor-Javascript测试的概念

📅  最后修改于: 2020-12-06 10:20:01             🧑  作者: Mango


由于JavaScript知识对于使用量角器至关重要,因此在本章中,让我们详细了解JavaScript测试的概念。

JavaScript测试与自动化

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

自动化测试的概念

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

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

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

JavaScript的测试类型

出于不同的目的可以有不同的测试。例如,编写一些测试以检查程序中功能的行为,而编写其他一些测试以测试模块或功能的流程。因此,我们有以下两种类型的测试-

单元测试

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

单元测试的优点之一是单元测试可以以任何顺序进行,因为单元彼此独立。真正重要的单元测试的另一个优点是,它可以随时按以下方式运行测试-

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

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

端到端测试

可以将其定义为一种测试方法,该测试方法用于测试应用程序从头到尾(从一端到另一端)的流程是否按照设计工作正常。

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

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

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

每个步骤都会给出自己的结果,并将其与预期结果集进行比较。

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

测试工具和框架

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

业力

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

使用业力的优点

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

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

使用业力的缺点

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

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

如果您将Karma测试运行程序与Jasmine一起使用,则在一个元素具有多个ID的情况下,很少有文档可以找到有关设置CSS的信息。

茉莉花

Jasmine是一种由行为驱动的开发框架,用于测试JavaScript代码,是由Pivotal Labs开发的。在积极开发Jasmine框架之前,Pivotal Labs还开发了一个类似的名为JsUnit的单元测试框架,该框架具有内置的测试运行器。通过包含SpecRunner.html文件或将其用作命令行测试运行程序,可以通过Jasmine测试运行浏览器测试。它可以与或不与因果报应一起使用。

使用茉莉花的优点

以下是使用茉莉花的一些优点-

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

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

  • 与Karma具有默认集成。

  • 语法易于理解。

  • 提供测试间谍,伪造和传递功能,这些功能可作为附加功能帮助进行测试。

使用茉莉花的缺点

以下是使用茉莉花的缺点-

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

摩卡咖啡

为Node.js应用程序编写的Mocha是一个测试框架,但它也支持浏览器测试。就像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使浏览器自动化。而已!”。浏览器的自动化意味着开发人员可以非常轻松地与浏览器进行交互。

使用硒的优点

以下是使用硒的一些优点-

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

使用硒的缺点

以下是使用硒的一些缺点-

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