Кратко и для поисковых систем. Codesys Test Manager — это аддон для Codesys, предназначенный для тестирования ПО.
Теперь полностью из документации
CODESYS Test Manager — это среда тестирования программного обеспечения, написанного для CODESYS. Вы можете использовать среду тестирования для запуска автоматических тестов, чтобы подтвердить правильность программного обеспечения на разных уровнях тестирования. Тест классифицируется в соответствии с моделью процесса разработки программного обеспечения, в которой каждый этап разработки программного обеспечения подвергается тестированию. Когда вы решили, на каком уровне будет выполняться тест, вы можете определить, как ваш тест должен быть реализован.
Codesys
Является частью CODESYS PROFESSIONAL DEVELOPER EDITION, стоит 500 Евро в год, так по подписке есть другие плюшки.

Стоит ли покупать? Возможно…
Как работает Test Manager
В целом это просто расширение для Codeys, которое занимается генерацией кода исходя из условий, которые были заданы изначально.
Вы запускаете тест, среда разработки генерирует код с этим тестом, заливает его в ПЛК, выполняет, мониторя результат и выдает отчет.
Также после запуска теста в проекте появится еще одно приложение backup, в котором будет ваш проект до того момента как в него влез Test Manager. И это максимально неудобно.

Возможности Unit тестирования.
Я тут не буду сильно погружаться в теорию и возможные процессы меня интересовала лишь одна вещь — это реализация Unit тестов.
Для сравнения как сие реализовываю я. наплевав на правило: «если повторяешь второй раз -автоматизируй», взято из боевого проекта.
Для начала я набиваю тестовый набор данных.

Затем создаю структуру для отчета.

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

И после выполнения смотрим приятный результат.

Как видно из тестов мы запороли 7 тест, где одновременно поступают две команды и по факту блок должен просто ничего не делать, но он решает, что ему надо дать команду на закрытие. Занесли в баг трекер.
А теперь как это же действие будет происходить через аддон от Codesys.
Пункт первый: добавить в менеджере библиотек Test Manager IEC Unit Test и CAA Behaviour Model и нам от туда потребуется пару ФБ.
Далее необходимо создать функциональный блок, который будет реализацией этого самого тестирования. Но он у нас не абы какой, а он будет расширять блок EtrigA библиотеки. которую мы добавили.


После добавления ваш функциональный блок обрастет методами

Это у нас тут немного объектно-ориентированного подъехало. Не пугаемся. Далее нам надо подготовить все входные и выходные данные для мультитестирования. Для начала добавим прагма выражение в наш ФБ {attribute ‘test’ := ‘multitest’}
Подредактируем входные и выходные значения.

Далее подготовим перечисление с именем ERROR. Далее пригодится.

Чтобы потом не забыть — сразу вызываем во всех методах и самом ФБ родительские функции через SUPER — это специальное слово, которое является указателем на родительский блок и через него мы будем вызывать родительскую реализацию метода. Ну и пойдем заполнять методы. В prvStart() у нас идет инициализация, в Reset — перезагрузка, Abort — прерывания, а в Cyclic — само тестирование.



Вот тут может возникнуть вопрос про переменную, которую мы не объявляли, вот она находится в родительском классе.
Реализация тестирования
ТУТ ИДЕТ ПОВЕСТВОВАНИЕ В РЕАЛЬНОМ ВРЕМЕНИ СО ВСЕМИ ОШИБКАМИ В КОДЕ И БАГАМИ.
Будем всем реализовывать через CASE OF

У нас тут будет 5 шагов. Значения diTestCaseIndex менять будем не мы, но нам надо реализовать всю бизнес логику.
Для начала при каждом новом цикле у нас будет запрашиваться информация о цикле.

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

И вот мой первый шаг, а таких мне надо 4. И в конце если вдруг будет отрицательное значение шагов.

ТАДАМ! Это еще не конец.
Test Manager
Чтобы попасть в это окошко необходимо пройти путь как на картинке

Далее нам надо создать инструкцию для Codesys чтобы он сделал нам Unit тест

После того как скрипт появился прописываем первичные настройки

Потом через ПКМ можем накидывать сценарии, если будет интересно дайте знать — распишу. Пока нас интересует Add Iec Unit Test.
Просто добавляем этот пункт. Далее Компилируем — прогружаем в контролер — заходим он лайн и жмем на кнопочку play и получаем отчет

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

И спустя какое-то количество исправлений мы получаем

3 теста прошло, а один завалился. Ну вот в целом куда и надо будет направить свой взгляд.
Вывод
Удобный ли это инструмент для Unit тестирования? Нет. Ни капли. Долго, сложно, создается различный мусор из плюсов лишь красивый отчет.
А вот для полного тестирования — удобная вещь. Ведь ты можешь создавать в ней целые последовательности команд и сигналов для приложения, которые будут меняться. считываться и анализироваться. Так что если вы пишите исключительно на Codesys то 500 евро в год норм плата.
Если надо дальше немного поковыряться в инструментарии для профессиональных разработчиков, то дайте знать. Всем спасибо)



Хорошая статья, редко что-то удается найти на заданную тему. Также было бы интересно ещё почитать про плюшки платной подписки и их применение на практике.
Спасибо за ваш отзыв. Ну если что-то действительно можно будет применить на практике, то расскажу, но исходя из того что я получи с ознакомительной лицензии это вряд ли должно стоить 500 евро к год. Стат.анализ есть в кодесис и его можно включить, если он нужен. Контроль версий работает через экспорт в двух форматах — либо codesys либо plc open. Вопрос остается с интеграционным тетсированием, но думаю что в скором времени можно будет напистаь утилиту для этого.