Unit testing – очень важная часть разработки любого софта. По-сути, unit testing – это тестирование отдельных модулей кода. Это можно делать как вручную, так и автоматизировано, при помощи соответствующих инструментов/тулкитов.
Для существует три наиболее популярных инструмента для юнит тестирования. Это, конечно же, Unit Test Framework от NI, JKI VI Tester от JKI, а также Caraya Unit Test Framework тоже от JKI (для юнит-тестирования и assertions).
Хотелось бы привести простой пример работы с JKI VI Tester.
В отличии от NI Unit Test Framework, JKI VI Tester бесплатный для использования. Его можно установить при помощи VI Package Manager. После установки, тулкит доступный в меню Tools -> VI Tester.
Принцип работы JKI VI Tester довольно простой. Можно создавать Test Cases, и Test Suites (которые включают в себя Test Cases). Test Cases обычно содержат тесты для конкретных модулей/функционала.
При создании Test Case, в проект добавляется класс, который содержит setUp.vi, tearDown.vi, vi-пример в виде –шаблона testExample.vit. В setUp.vi и tearDown.vi можно добавлять код, который будет производить инициализацию каких-то параметров для теста, и их деинициализацию. Таким образом, при запуске теста выполняется посделовательность setUp.vi – test.vi - tearDown.vi.
Для создания нового теста, достаточно клацнуть правой кнопкой мышки на testExample.vit -> New from Tempate. Нужно не забывать, что все виайки-тесты должны содержать префикс / слово test вначале имени виайки.
Ну, а дальше в созданной виайке можно писать сам тест. При установке тулкита, в палитру функций JKI Toolkits добавляются API функции для работы с VI тестером. Их нужно использовать для создания теста, а именно – для определения условий при которых тест будет пройден, или же нет.
Ну, а сейчас перейдем непосредственно к примеру.
Пускай необходимо создать модуль, который будет инкрементировать числовой суффикс рядка. И, необходимо соблюдать следующие условия:
- Если рядок пустой, необходимо генерить ошибку (5005);
- Если рядок не содержит чилового суффикса на конце, его необходимо добавить (string -> string_01);
- Если рядок уже содержит числовой суффикс, его необходимо инкрементировать (string_02 -> string_03).
Значит, требования нам известный, и мы может создать шаблон виайки.
Теперь, запускаем сам тестер. Для этого вибираем Tools -> VI Tester -> Test VIs…
Так как проект пока не содержит тесты, список тестов пустой. Добавим тесты.
Для этого выбираем Tools -> VI Tester -> New -> Test Case…, и сохраняем созданный тест-класс.
Теперь, мы можем создать три теста, на основе наших требований. Создаем, сохраняем виайки, и сохраняем проект в целом (это важно, чтобы тестер «увидел» созданные тесты).
Переходим в окно VI Tester, жмем кнопку Reload – и видим наши тесты. Запускаем, и, конечно же видим, что все они имеют статус Fail (само собой, т.к. наш модуль-под-тестом еще не имплементирован).
Имплементируем требования. Первое – это проверка условия пустой строки, и генерация ошибки. Сохраняем изменения модуля, запускаем тест. Теперь, один из трех тестов прошел успешно. Значит, мы на правильном пути
Имплементируем еще два требования, и запускаем тесты.
Все тесты прошли успешно, а значит, функционал нашего модуля верен (модуль работает согласно требованиям).
Конечно же, такой простой функционал быстрее было бы проверить вручную. Но представим, что модуль должен соответствовать большему количеству требований. Со временем также его имплементация может менятся – а значит, опять придется проверять ввесь функционал вручную. И таких модулей может быть в проекте десятки, а то и сотни – и тогда изменение одного из модулей может навредить/повлиять на роботу многим другим.
Но если один раз написать правильный тест, и потом использовать его для автоматического тестирования коду, мы сохраним кучу времени для тестирования, а главное – будем уверены, что наши имплементированные алгоритмы работают правильно.
Также, при помощи VI Tester можно создавать код, который будет запускать тестер из проекта – например, при билде кода в библиотеку, или приложение. При помощи Pre-Build Action и VI Tester API виайки будут тестироваться автоматически, гарантируя таким образом то, что код будет функциональным.
Еще одной особенностью VI Tester есть то, что во-первых, он имеет открытый исходный код (на GitHub есть доступный репозитарий), а во-вторых, он является объектно-ориентированным, а значит можно модифицировать тест-алгоритмы в соответствии к своим нуждам.
Подытоживая вышесказанное, как по мне, VI Tester - отличный инструмент, который должен быть на вооружении у любого разработчика, так как он реально может облегчить жизнь, и помочь писать код надежно и правильно.
P.S. А вы – используете unit testing подход/тулкиты/фреймворки при написании кода ?
JKI VI Tester - инструмент для тестирования LabVIEW кода
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
JKI VI Tester - инструмент для тестирования LabVIEW кода
- Вложения
-
- VI Tester Example.zip
- (104.56 КБ) 255 скачиваний
Мы делили апельсин - много наших полегло...
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 7 Ответы
- 397 Просмотры
-
Последнее сообщение BAS
-
- 9 Ответы
- 296 Просмотры
-
Последнее сообщение AndryG
-
- 3 Ответы
- 2074 Просмотры
-
Последнее сообщение PozhiloyGoblin
-
- 0 Ответы
- 344 Просмотры
-
Последнее сообщение maxim_MA
-
- 23 Ответы
- 2433 Просмотры
-
Последнее сообщение dadreamer