В вашем приложении должна быть логика, из которой внешние приложения (например, сценарий оболочки) могут сказать, что ваше приложение работает правильно.
Если вы знаете, что у вас есть входные данные, вы можете, например, проверить файлы журналов, чтобы увидеть, есть ли операторы журналов для соответствующего вывода.
Вы можете заставить свое приложение обновлять какое-то сердцебиение. JMX будет работать, но и более простые методы тоже. Может быть, напишите дату и время в файл, и ваш сценарий проверит этот файл. Но как вы можете быть уверены, что ваше приложение не сломалось и только сердцебиение все еще работает?
Может быть, служба пульса отправляет фиктивные данные теста в ваше приложение? Ваше приложение будет обрабатывать эти фиктивные данные в обычном режиме, но будет игнорировать результаты. Откуда вы знаете, что ваше приложение работает, но служба пульса потерпела крах? :)
Это не тривиальная задача, но вы можете получить хорошие результаты, даже если ваша реализация не "ядерная защита".