Учебники

Транспортир — концепции тестирования Javascript

Поскольку знание JavaScript необходимо для работы с Protractor, в этой главе давайте подробно разберемся с концепциями тестирования JavaScript.

Тестирование и автоматизация JavaScript

JavaScript является наиболее популярным языком сценариев с динамической типизацией и интерпретацией, но наиболее сложной задачей является тестирование кода. Это происходит потому, что, в отличие от других скомпилированных языков, таких как JAVA и C ++, в JavaScript нет шагов компиляции, которые могли бы помочь тестировщику выяснить ошибки. Кроме того, тестирование на основе браузера занимает очень много времени; следовательно, существует необходимость в инструментах, поддерживающих автоматическое тестирование на JavaScript.

Концепции автоматизированного тестирования

Всегда полезно писать тест, потому что он делает код лучше; проблема с ручным тестированием заключается в том, что оно занимает немного времени и подвержено ошибкам. Процесс ручного тестирования довольно утомителен и для программиста, так как им нужно повторять процесс, писать спецификации теста, менять код и обновлять браузер несколько раз. Кроме того, ручное тестирование также замедляет процесс разработки.

По вышеуказанным причинам всегда полезно иметь некоторые инструменты, которые могут автоматизировать эти тесты и помочь программистам избавиться от этих повторяющихся и скучных шагов. Что должен сделать разработчик, чтобы автоматизировать процесс тестирования?

По сути, разработчик может реализовать набор инструментов в CLI (Интерпретатор командной строки) или в среде разработки (Интегрированная среда разработки). Затем эти тесты будут выполняться непрерывно в отдельном процессе, даже без участия разработчика. Автоматическое тестирование JavaScript также не является новым, и было разработано множество инструментов, таких как Karma, Protractor, CasperJS и т. Д.

Типы тестирования на JavaScript

Могут быть разные тесты для разных целей. Например, некоторые тесты написаны для проверки поведения функций в программе, а некоторые другие написаны для проверки потока модуля или функции. Таким образом, у нас есть следующие два типа тестирования —

Модульное тестирование

Тестирование выполняется на самой маленькой тестируемой части программы, называемой unit. Устройство в основном тестируется изолированно без какой-либо зависимости этого устройства от других частей. В случае JavaScript отдельный метод или функция, имеющие определенное поведение, могут быть единицей кода, и эти единицы кода должны тестироваться изолированно.

Одним из преимуществ юнит-тестирования является то, что тестирование юнитов можно проводить в любом порядке, поскольку юниты независимы друг от друга. Другое преимущество модульного тестирования, которое действительно имеет значение, состоит в том, что он может запустить тест в любое время следующим образом:

  • С самого начала процесса разработки.
  • После завершения разработки любого модуля / функции.
  • После изменения любого модуля / функции.
  • После добавления любой новой функции в существующее приложение.

Для автоматического модульного тестирования приложений JavaScript мы можем выбирать из множества инструментов и сред тестирования, таких как Mocha, Jasmine и QUnit.

Сквозное тестирование

Это может быть определено как методология тестирования, используемая для проверки того, работает ли поток приложения от начала до конца (от одного конца до другого конца) нормально в соответствии с проектом.

Сквозное тестирование также называется тестированием функций / потоков. В отличие от модульного тестирования, комплексное тестирование проверяет, как отдельные компоненты работают вместе как приложение. В этом главное отличие модульного тестирования от сквозного тестирования.

Например, предположим, что если у нас есть модуль регистрации, где пользователь должен предоставить некоторую действительную информацию для завершения регистрации, тогда тестирование E2E для этого конкретного модуля будет выполнять следующие шаги для завершения тестирования:

  • Во-первых, он загрузит / скомпилирует форму или модуль.
  • Теперь он получит DOM (объектную модель документа) элементов формы.
  • Затем запустите событие нажатия кнопки отправки, чтобы проверить, работает оно или нет.
  • Теперь в целях проверки соберите значение из полей ввода.
  • Далее, поля ввода должны быть проверены.
  • Для тестирования вызовите поддельный API для хранения данных.

Каждый шаг дает свои результаты, которые будут сравниваться с ожидаемым набором результатов.

Теперь возникает вопрос: хотя этот вид E2E или функционального тестирования можно выполнять и вручную, зачем нам для этого автоматизация? Основная причина в том, что автоматизация сделает этот процесс тестирования простым. Некоторыми из доступных инструментов, которые могут быть легко интегрированы с любым приложением, для этой цели являются Selenium, PhantomJS и Protractor.

Инструменты тестирования и рамки

У нас есть различные инструменты тестирования и платформы для углового тестирования. Ниже приведены некоторые из известных инструментов и платформ —

Карма

Карма, созданная Войтой Джиной, является бегуном на испытаниях. Первоначально этот проект назывался Testacular. Это не тестовая среда, что означает, что она дает нам возможность легко и автоматически запускать модульные тесты JavaScript в реальных браузерах. Karma был создан для AngularJS, потому что до Karma не было никакого инструмента автоматического тестирования для веб-разработчиков JavaScript. С другой стороны, благодаря автоматизации, предоставляемой Karma, разработчики могут выполнить простую единственную команду и определить, прошел ли весь набор тестов успешно или нет.

Плюсы использования Кармы

Ниже приведены некоторые преимущества использования Кармы по сравнению с ручным процессом —

  • Автоматизирует тесты в нескольких браузерах, а также на устройствах.
  • Отслеживает файлы на наличие ошибок и исправляет их.
  • Обеспечивает онлайн поддержку и документацию.
  • Облегчает интеграцию с сервером непрерывной интеграции.

Минусы использования кармы

Ниже приведены некоторые недостатки использования кармы —

Основным недостатком использования Karma является то, что для его настройки и обслуживания требуется дополнительный инструмент.

Если вы используете тестер Karma с Jasmine, тогда меньше документации доступно для поиска информации о настройке вашего CSS в случае наличия нескольких идентификаторов для одного элемента.

жасмин

Jasmine, основанная на поведении среда разработки для тестирования кода JavaScript, разработана в Pivotal Labs. До активной разработки среды Jasmine Pivotal Labs также разработала аналогичную среду модульного тестирования под названием JsUnit, в которой есть встроенный инструмент для запуска тестов. Тесты браузеров можно запустить с помощью тестов Jasmine, включив файл SpecRunner.html или используя его также в качестве тестера командной строки. Его можно использовать как с кармой, так и без нее.

Плюсы использования жасмина

Ниже приведены некоторые плюсы использования Жасмин —

  • Фреймворк, независимый от браузера, платформы и языка.

  • Поддерживает разработку через тестирование (TDD) вместе с поведенческой разработкой.

  • По умолчанию имеет интеграцию с кармой.

  • Легко понять синтаксис.

  • Предоставляет тестовые шпионы, подделки и сквозные функции, которые помогают с тестированием в качестве дополнительных функций.

Фреймворк, независимый от браузера, платформы и языка.

Поддерживает разработку через тестирование (TDD) вместе с поведенческой разработкой.

По умолчанию имеет интеграцию с кармой.

Легко понять синтаксис.

Предоставляет тестовые шпионы, подделки и сквозные функции, которые помогают с тестированием в качестве дополнительных функций.

Минусы использования жасмина

Следующее является доводом против использования Жасмин —

  • Тесты должны возвращаться пользователем по мере их изменения, потому что в Jasmine нет функции просмотра файлов во время выполнения теста.

Тесты должны возвращаться пользователем по мере их изменения, потому что в Jasmine нет функции просмотра файлов во время выполнения теста.

кофе мокко

Mocha, написанный для приложений Node.js, представляет собой среду тестирования, но также поддерживает тестирование браузеров. Это очень похоже на Jasmine, но основное различие между ними заключается в том, что Mocha нужен какой-то плагин и библиотека, потому что он не может работать автономно в качестве тестовой среды. С другой стороны, Жасмин автономна. Тем не менее, Мокко является более гибким в использовании, чем Жасмин.

Плюсы использования мокко

Ниже приведены некоторые плюсы использования мокко —

  • Мокко очень прост в установке и настройке.
  • Удобная и простая документация.
  • Содержит плагины с несколькими проектами узлов.

Минусы использования мокко

Ниже приведены некоторые недостатки использования мокко —

  • Нужны отдельные модули для утверждений, шпионов и т. Д.
  • Также требуется дополнительная настройка для использования с Кармой.

QUnit

QUint, первоначально разработанный Джоном Резигом в 2008 году в составе jQuery, представляет собой мощный, но простой в использовании набор юнит-тестов JavaScript. Его можно использовать для тестирования любого общего кода JavaScript. Хотя он ориентирован на тестирование JavaScript в браузере, он очень удобен для использования разработчиком.

Плюсы использования QUnit

Ниже приведены некоторые преимущества использования QUnit —

  • Простота установки и настройки.
  • Удобная и простая документация.

Минусы использования QUnit

Ниже приведены доводы использования QUnit:

  • Он был в основном разработан для jQuery и, следовательно, не так хорош для использования с другими фреймворками.

Селен

Selenium, изначально разработанный Джейсоном Хаггинсом в 2004 году как внутренний инструмент для ThoughtWorks, является инструментом автоматизации тестирования с открытым исходным кодом. Selenium определяет себя как «Selenium автоматизирует браузеры. Это оно!». Автоматизация браузеров означает, что разработчики могут очень легко взаимодействовать с браузерами.

Плюсы использования Selenium

Ниже приведены некоторые плюсы использования Selenium —

  • Содержит большой набор функций.
  • Поддерживает распределенное тестирование.
  • Поддерживает SaaS через такие службы, как Sauce Labs.
  • Легко использовать с простой документацией и доступными ресурсами.

Минусы использования Selenium

Ниже приведены некоторые недостатки использования Selenium —