Я думаю, что это очень специфично для вашего приложения.
Во-первых, как вы определяете успешность выполнения вашего приложения?Это код результата?Это что-то напечатано на консоли?
Для вопроса 2 это зависит от того, как вы анализируете эти флаги в вашем приложении.В большинстве случаев порядок флагов не важен, но бывают случаи, когда это так.Я надеюсь, что вам не нужно проверять перестановки флагов, потому что это добавило бы много вариантов для тестирования.
В общем случае вы должны проанализировать влияние каждого флага.Возможно, что флаг не мешает другим, и тогда его просто нужно протестировать один раз.Это также относится и к флагам, которые должны использоваться отдельно (например, --help или --version).Вам также необходимо проанализировать, какие значения вы должны проверить для каждого флага.Обычно вы хотите попробовать каждый вид возможных допустимых значений и каждый тип возможных недопустимых значений.
Я думаю, что для выполнения тестов можно написать простой сценарий bash или любой язык сценариев, например Python.Используя вложенные циклы, вы можете попробовать для каждого флага возможные значения, включая тесты на недопустимые значения и случай, когда флаг не установлен.Я создам многомерную матрицу результатов, которую следует проанализировать, чтобы убедиться, что результаты соответствуют ожидаемым.