Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЗ МО417 Ибрагимова КБ 24.06.docx
Скачиваний:
55
Добавлен:
14.09.2022
Размер:
4.85 Mб
Скачать

3.3. Алгоритм выполнения модульных тестов

  1. Пометить корневую группу тестов как текущая.

  2. Выполнить такие работы текущей группы тестов, которые выполняются перед выполнением группы.

  3. Перебрать модульные тесты текущей группы тестов:

    1. Выполнить такие работы текущей группы тестов, которые выполняются перед каждым выполнением модульного теста группы.

    2. Если процедура-выполнения текущего теста содержит хотя бы один аргумент, то:

      1. Выполнить процедуру-выполнения текущего модульного теста асинхронно, передав на вход функцию-завершения.

    3. Иначе:

      1. Выполнить процедуру-выполнения текущего модульного теста синхронно.

    4. Если процедура-выполнения текущего модульного теста завершилась с ошибкой, то:

      1. Записать в результат прохождения текущего теста описание результата неудавшейся проверки.

      2. Если неудавшаяся проверка была сравнением, то:

        1. Добавить в результат прохождения текущего теста ожидаемое и фактическое значение неудавшейся проверки.

    5. Пометить текущий модульный тест как выполненный.

    6. Выполнить такие работы текущей группы тестов, которые выполняются после каждого выполнения модульного теста группы.

  4. Перебрать вложенные группы тестов текущей группы тестов:

    1. Пометить текущую вложенную группу тестов как текущую группу.

    2. Выполнить шаги 2–5.

  5. Выполнить такие работы текущей группы тестов, которые выполняются после выполнением группы.

Глава 4. Программное обеспечение

    1. Язык программирования и инструментальные средства разработки

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

JavaScript – скриптовый язык программирования общего назначения, соответствующий спецификации ECMAScript. Относится к классу мультипарадигмальных, благодаря чему он поддерживает объектно-ориентированный, императивный и функциональный стили. JavaScript используется как встраиваемый язык для программного доступа к объектам приложений. Наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности веб-страницам. К его основным архитектурным чертам относятся: динамическая типизация, слабая типизация, автоматическое управление памятью, прототипное программирование, функции как объекты первого класса.

TypeScript — язык программирования, представленный Microsoft и использующийся как средство разработки веб-приложений, расширяющее возможности языка JavaScript. TypeScript является обратно совместимым с JavaScript и компилируется в последний. Фактически, после компиляции программу на TypeScript можно выполнять в любом современном браузере. TypeScript отличается от JavaScript возможностью явного статического назначения типов, поддержкой использования полноценных классов (как в традиционных объектно-ориентированных языках), а также поддержкой подключения модулей, что повышает скорость разработки, облегчает читаемость, рефакторинг и повторное использование кода, помогает осуществлять поиск ошибок на этапе разработки и компиляции, и ускоряет выполнение программ.

CoffeeScript — язык программирования, транслируемый в JavaScript. CoffeeScript добавляет синтаксический сахар для того, чтобы улучшить читаемость кода и уменьшить его размер. В CoffeeScript наследование реализовано на основе классов. К минусам языка можно отнести чувствительность к отступам в коде, так как это влияет на исполнение скрипта.

Для разработки среды модульного тестирования будем использовать язык программирования TypeScript. Возможность использования статической типизации позволяет обнаруживать ошибки типизации. Например, ошибка в названии вызываемого метода объекта или непреднамеренное использование преобразования типов. Все это выгодно отличается на фоне JavaScript. А CoffeeScript не распространён в сообществе веб-разработчиков.

Далее рассмотрим инструменты для разработки среды модульного тестирования.

Sublime Text – это текстовый редактор, разработанный для верстальщиков и программистов. Он позволяет работать разными языками программирования: от Erlang до C++. Широкую известность он получил благодаря кроссплатформенной поддержке и расширенным настройкам, которые позволяют пользователю легко настраивать под себя параметры редактора. Вариаций довольно много – можно изменить интерфейс и дополнить функционал с помощью различных плагинов. Sublime Text может быть оснащён менеджером пакетов, который позволяет пользователю находить, устанавливать, обновлять и удалять пакеты без перезагрузки программы. Менеджер поддерживает установленные пакеты в актуальном состоянии, загружая новые версии из репозиториев. Кроме того, он предоставляет команды для активации и деактивации установленных пакетов. Разработчик позволяет бесплатно и без ограничений ознакомиться с продуктом, однако программа уведомляет о необходимости приобретения проприетарной лицензии.

Brackets – свободный текстовый редактор для веб-разработчиков. Brackets ориентирован на работу с HTML, CSS и JavaScript. Эти же технологии лежат в основе самого редактора, что обеспечивает его кроссплатформенность, то есть совместимость с операционными системами Mac, Windows и Linux. Brackets создан и развивается Adobe Systems под лицензией MIT License и поддерживается на GitHub. На сегодняшний день сообществом создано множество расширений, добавляющих большинство необходимых инструментов для работы над кодом, таких как система контроля версий Git, просмотр HTML-кода в браузере в реальном времени (Live Preview), синхронизация с FTP (Git-FTP).

Visual Studio Code – редактор исходного кода, разработанный Microsoft для Windows, Linux и macOS. Microsoft позиционирует его как «лёгкий» редактор кода для кроссплатформенной разработки веб- и облачных приложений. Он поставляется со встроенной поддержкой JavaScript, TypeScript и Node.js и имеет расширения для других языков (таких как C ++, C #, Java, Python, PHP, Go) и сред выполнения (таких как .NET и Unity). Включает в себя отладчик, инструменты для работы с Git, подсветку синтаксиса и средства для рефакторинга. Имеет широкие возможности для дополнительной настройки: пользовательские темы, сочетания клавиш и файлы конфигурации. Распространяется бесплатно, разрабатывается как программное обеспечение с открытым исходным кодом, но готовые сборки распространяются под проприетарной лицензией.

Компания Adobe в марте 2021 года объявила о том, что прекращает поддержку Brackets и предложила пользователям либо использовать исходные файлы с GitHub, либо установить Visual Studio Code. Visual Studio Code предлагает большой функционал, не требуя глубокой настройки в отличии от Sublime Text.

Рассмотрим существующие платформы для разработки автоматизированных тестов.

Node.js – программная платформа для JavaScript, которая даёт возможность писать код для серверной и клиентской части на одном языке программирования. основывается на JavaScript движке V8, от компании Google, который используется в браузерах, основанных на базе Chromium. Node.js благодаря своему программному интерфейсу может напрямую взаимодействовать устройствами ввода-вывода, подключать внешние библиотеки, которые могут быть написаны на разных языках программирования. Node.js в основном применяется в качестве веб-сервера для скриптовых приложений, но есть возможность разрабатывать на Node.js и десктопные оконные приложения (при помощи NW.js, AppJS или Electron для Linux, Windows и macOS) и программировать микроконтроллеры (например, tessel, low.js и espruino). В основе Node.js лежит событийно-ориентированное и асинхронное (или реактивное) программирование с неблокирующим вводом/выводом.

Deno – программная платформа для JavaScript и TypeScript, основанная на движке JavaScript V8 и написанная на языке программирования Rust. Deno реализует событийно-ориентированную архитектуру, предоставляя набор неблокирующих методов управления вводом-выводом. Deno используется для создания веб-серверов, выполнения научных вычислений и т. д. Deno имеет расширяемую стандартную библиотеку, встроенное средство тестирования, но не имеет пакетного менеджера. Самая главная цель Deno обеспечить максимальную совместимость с браузером.

Deno и Node созданные одним автором – Райаном Далем. Deno разрабатывался Райаном Далем для исправления некоторых архитектурных решений, о которых о сожалел при создании Node. Для разработки была выбрана платформа Node, так как на данный момент платформа Deno слишком молода и недостаточно стабильна, а Node стабильная среда выполнения с гораздо большим сообществом разработчиков.

Для работы с Node будем использовать встроенный менеджер пакетов npm.

npm (Node Package Manager) – дефолтный пакетный менеджер для JavaScript, работающий на Node.js. Менеджер npm состоит из двух частей:

  • CLI (интерфейс командной строки) – средство для размещения и скачивания пакетов,

  • онлайн-репозитории, содержащие JS пакеты.

Каждый проект в JavaScript – Node.js или веб-приложение – может быть скопирован как npm-пакет с собственным описанием и файлом package.json

Файл генерируется командой npm init при создании JavaScript/Node.js проекта со следующими метаданными:

  • name: название JS библиотеки/проекта.

  • version: версия проекта.

  • description: описание проекта.

  • license: лицензия проекта.