Отладка и тестирование

Когда дело доходит до компьютерного программирования, отладка жизненно важна для обеспечения разработки связного и эффективного приложения. Отладка и тестирование — это процессы просмотра программного кода и устранения ошибок перед выпуском приложения. В случае F# это можно сделать с помощью Visual Studio или Visual Studio Code.

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

Отладка в Visual Studio

В этой статье инструкции будут основаны на отладке в Visual Studio. При этом первым шагом к процессу в VS является нажатие F5 и запуск приложения в режиме отладки.

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

Пошаговый код

В этом методе есть две пошаговые команды: переход в строку кода с помощью ling или пошаговый просмотр кода и пропуск функций.

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

При отладке приложения может быть полезно пропустить некоторые функции, и именно здесь пригодятся команды step over и step out.

Бег к месту или функции

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

Чтобы установить точку останова, нажмите F9 или переключите точку останова в соответствующем раскрывающемся меню в разделе Отладка. Этот метод также можно активировать, щелкнув правой кнопкой мыши и выбрав Вставить точку останова. Слева от кода на поле появится красная точка, указывающая строку, к которой перейдет отладчик. Для получения дополнительной информации о функциональности точек останова VS перейдите по этой ссылке.

Более того, отладчик может работать с указанной функцией. Это можно сделать либо указав функцию по имени, либо выбрав ее из стека вызовов. Чтобы назвать функцию, перейдите в меню Отладка, выберите Новая точка останова, а затем Точка останова функции. Затем укажите функцию, к которой должен перейти отладчик.

Чтобы выбрать функцию из стека вызовов, перейдите в меню Отладка , откройте параметр окна Стек вызовов и выберите функцию оттуда.

Чтобы перейти к местоположению курсора, выполните процедуру Call Stack или щелкните правой кнопкой мыши и выберите Run To Cursor. Это также можно сделать, нажав Ctrl+F10. Это будет временная точка останова.

Запуск по клику — еще один метод точки останова. Просто наведите указатель мыши на оператор в коде и выберите рядом с ним зеленую стрелку с надписью Выполнить выполнение здесь. Это позволяет обойти необходимость временной точки останова!

При отладке также есть ручные перерывы в коде. Перейдите в меню Отладка и выберите Разбить все.

Изменение потока выполнения

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

Примечания по отладке

Дополнительные команды отладчика, такие как Add Watch и Go to Disassembly, работают должным образом. Кроме того, отладчик не распознает выражения F#. Выражения должны быть переведены в синтаксис C# в окне во время отладки.

Отладка: видео

Тестирование

Тестирование гарантирует, что код работает так, как должен. Один из поддерживаемых способов — через проект, известный как FsUnit. Он содержит библиотеки, которые упрощают тестирование с помощью F#. Добавляя уникальный синтаксис к существующим средам тестирования .NET, FsUnit в настоящее время поддерживает NUnit, xUnit, MbUnit и MsTest. Цель FsUnit — сделать тестирование более функциональным, а также использовать существующие тестовые платформы, по-новому адаптируя их к языку F#.

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

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

Модульное тестирование — это тип тестирования программного обеспечения, при котором тестируются отдельные модули программного обеспечения. Это делается на этапе разработки, чтобы отловить ошибки до того, как они станут проблемой. Модульное тестирование разбивает код на блоки, такие как функции или методы, и тестирует эти блоки, чтобы убедиться, что они делают то, для чего предназначены. Модульное тестирование — это одно из самых ранних испытаний программного обеспечения, пока оно находится в разработке, и оно помогает сэкономить время для последующих шагов и тестирования. Существует два типа модульного тестирования: ручное тестирование и автоматизированное тестирование. Ручное тестирование включает в себя выполнение тестовых случаев вручную без какой-либо инструментальной поддержки. Это отнимает много времени, утомительно и непоследовательно из-за человеческой ошибки. Автоматизированное тестирование использует инструментальную поддержку для выполнения тестовых случаев. Это быстрее, чем если бы люди запускали тестовые примеры, и более надежно, чем люди, потому что каждый раз выполняется одинаково. Фреймворк представляет собой набор программ, которые проводят тестирование и находят ошибки. Некоторыми платформами модульного тестирования для F# являются FsCheck, FsMocks и Unquote.

фсчек

FsCheck — это автоматический инструмент для тестирования программ .NET. Он берет свойства, которым должны удовлетворять функции, методы или объекты, а затем проверяет, сохраняются ли эти свойства в большом количестве случайно сгенерированных тестовых примеров. FsCheck предоставляет комбинаторы для определения свойств, наблюдения за распределением тестовых данных и определения генераторов тестовых данных. Когда свойства терпят неудачу, FsCheck отображает минимальный встречный пример. FsCheck можно установить из NuGet с помощью большинства менеджеров пакетов. FsCheck поддерживает тестирование на основе моделей, при котором FsCheck генерирует большое количество случайных операций над объектом или структурой данных, а результаты каждой операции сравниваются с более простой моделью.

ФсМокс

FsMocks — это библиотека для имитации объектов, написанная на F#. Это оболочка для Rhino.Mocks 3.6, которая упрощает насмешки с помощью F#. он использует удобный для человека синтаксис DSl и может сочетаться с другими средами тестирования. Его можно установить из NuGet с помощью диспетчера пакетов. Макеты — это методы или объекты, которые контролируемым образом имитируют поведение реальных методов и объектов и используются для модульного тестирования. Фиктивное определение может быть либо неупорядоченным, либо упорядоченным. В FsMocks фиктивный оператор начинается с ~~ и сопровождается вызовом или свойством для имитации. После этого идут фиктивные директивы. Мок-директивы можно комбинировать в произвольном порядке, за исключением директивы return, которая должна стоять на первой позиции.

Убрать из кавычек

Unquote — это еще одна среда модульного тестирования, которую можно установить из NuGet. Он был создан с использованием xUnit и сочетает в себе декомпиляцию цитат F#, реализацию постепенного сокращения и оценку, так что тестовые утверждения могут быть записаны в виде простых выражений, которые выдают пошаговые сообщения об ошибках. Unquote интегрируется без настройки со всеми средами модульного тестирования на основе исключений, такими как xUnit.net, NUnit и Expecto. Unquote также включает операторы для оценки, декомпиляции и постепенного сокращения выражений в кавычках. В центре Unquote находятся операторы для декомпиляции, оценки и сокращения котировок F#. Это делает Unquote уникальным, поскольку он использует выражения F# в кавычках для оценки простого статически типизированного выражения F# и выдает подробные сообщения об ошибках на основе этой оценки.

Авторы

Альберт Яо *** Сэм Паркер *** Кевин Тран *** Калу Ава