JKI VI Tester - инструмент для тестирования LabVIEW кода

Создание приложений, библиотек, инсталляторов

JKI VI Tester - инструмент для тестирования LabVIEW кода

Postby Kosist on 04 Jun 2017, 13:34

Unit testing – очень важная часть разработки любого софта. По-сути, unit testing – это тестирование отдельных модулей кода. Это можно делать как вручную, так и автоматизировано, при помощи соответствующих инструментов/тулкитов.
Для :labview: существует три наиболее популярных инструмента для юнит тестирования. Это, конечно же, 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.
vi_tester_vipm.PNG
Принцип работы JKI VI Tester довольно простой. Можно создавать Test Cases, и Test Suites (которые включают в себя Test Cases). Test Cases обычно содержат тесты для конкретных модулей/функционала.
При создании Test Case, в проект добавляется класс, который содержит setUp.vi, tearDown.vi, vi-пример в виде –шаблона testExample.vit.
vi_tester_3.png
В 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).
Значит, требования нам известный, и мы может создать шаблон виайки.
vi_tester_2.png
Теперь, запускаем сам тестер. Для этого вибираем Tools -> VI Tester -> Test VIs
vi-tester_1.png
Так как проект пока не содержит тесты, список тестов пустой. Добавим тесты.
Для этого выбираем Tools -> VI Tester -> New -> Test Case…, и сохраняем созданный тест-класс.
Теперь, мы можем создать три теста, на основе наших требований. Создаем, сохраняем виайки, и сохраняем проект в целом (это важно, чтобы тестер «увидел» созданные тесты).
test_01.png
test_02.png
test_03.png
Переходим в окно VI Tester, жмем кнопку Reload – и видим наши тесты. Запускаем, и, конечно же видим, что все они имеют статус Fail (само собой, т.к. наш модуль-под-тестом еще не имплементирован).
vi_tester_5.png
Имплементируем требования. Первое – это проверка условия пустой строки, и генерация ошибки.
vi_tester_implementation_01.png
Сохраняем изменения модуля, запускаем тест. Теперь, один из трех тестов прошел успешно. Значит, мы на правильном пути :wink:
vi_tester_6.png
Имплементируем еще два требования, и запускаем тесты.
vi_tester_implementation_02.png
vi_tester_7.png
Все тесты прошли успешно, а значит, функционал нашего модуля верен (модуль работает согласно требованиям).

Конечно же, такой простой функционал быстрее было бы проверить вручную. Но представим, что модуль должен соответствовать большему количеству требований. Со временем также его имплементация может менятся – а значит, опять придется проверять ввесь функционал вручную. И таких модулей может быть в проекте десятки, а то и сотни – и тогда изменение одного из модулей может навредить/повлиять на роботу многим другим.
Но если один раз написать правильный тест, и потом использовать его для автоматического тестирования коду, мы сохраним кучу времени для тестирования, а главное – будем уверены, что наши имплементированные алгоритмы работают правильно.
Также, при помощи VI Tester можно создавать код, который будет запускать тестер из проекта – например, при билде кода в библиотеку, или приложение. При помощи Pre-Build Action и VI Tester API виайки будут тестироваться автоматически, гарантируя таким образом то, что код будет функциональным.
Еще одной особенностью VI Tester есть то, что во-первых, он имеет открытый исходный код (на GitHub есть доступный репозитарий), а во-вторых, он является объектно-ориентированным, а значит можно модифицировать тест-алгоритмы в соответствии к своим нуждам.
Подытоживая вышесказанное, как по мне, VI Tester - отличный инструмент, который должен быть на вооружении у любого :labview: разработчика, так как он реально может облегчить жизнь, и помочь писать код надежно и правильно.

P.S. А вы – используете unit testing подход/тулкиты/фреймворки при написании кода :brows: ?
Attachments
VI Tester Example.zip
(104.56 KiB) Downloaded 22 times
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 749
Joined: 21 Feb 2011, 23:44
Location: СумГУ
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 223
CLAD I/O VIP students

Return to Создание приложений

Who is online

Users browsing this forum: No registered users and 1 guest

cron