Существует ли установленный стандарт для тестирования аргументов командной строки? - PullRequest
6 голосов
/ 29 апреля 2011

Я разрабатываю утилиту командной строки, которая имеет много флагов.Типичная команда выглядит следующим образом:

mycommand --foo=A --bar=B --jar=C --gnar=D --binks=E

В большинстве случаев выводится сообщение об успешном завершении, но я все же хочу проверить по другим источникам, таким как внешняя база данных, чтобы обеспечить фактический успех.* Я начинаю создавать интеграционные тесты и не уверен, как лучше это сделать.Мои основные проблемы:

  1. Существует много комбинаций флагов, как узнать, какие комбинации нужно проверить?Если вы делаете математику для 10+ флагов, которые можно использовать вместе ...
  2. Нужно ли тестировать перестановки флагов?
  3. Как построить каркас, способный автоматизировать тесты изатем проверка результатов.
  4. Как отследить большое количество флагов и обеспечить порядок, чтобы было легко определить, какие комбинации были реализованы, а какие нет.

мысль о ручном выписывании отдельных кейсов и проверке результатов в формате модульных тестов утомительна.

Кто-нибудь знает шаблон, который можно использовать для автоматизации этого типа теста?Возможно, даже программное обеспечение, которое пытается решить эту проблему?Как люди, работающие с инструментами командной строки GNU, тестировали свое программное обеспечение?

Ответы [ 2 ]

2 голосов
/ 29 апреля 2011

Я думаю, что это очень специфично для вашего приложения.

Во-первых, как вы определяете успешность выполнения вашего приложения?Это код результата?Это что-то напечатано на консоли?

Для вопроса 2 это зависит от того, как вы анализируете эти флаги в вашем приложении.В большинстве случаев порядок флагов не важен, но бывают случаи, когда это так.Я надеюсь, что вам не нужно проверять перестановки флагов, потому что это добавило бы много вариантов для тестирования.

В общем случае вы должны проанализировать влияние каждого флага.Возможно, что флаг не мешает другим, и тогда его просто нужно протестировать один раз.Это также относится и к флагам, которые должны использоваться отдельно (например, --help или --version).Вам также необходимо проанализировать, какие значения вы должны проверить для каждого флага.Обычно вы хотите попробовать каждый вид возможных допустимых значений и каждый тип возможных недопустимых значений.

Я думаю, что для выполнения тестов можно написать простой сценарий bash или любой язык сценариев, например Python.Используя вложенные циклы, вы можете попробовать для каждого флага возможные значения, включая тесты на недопустимые значения и случай, когда флаг не установлен.Я создам многомерную матрицу результатов, которую следует проанализировать, чтобы убедиться, что результаты соответствуют ожидаемым.

1 голос
/ 29 апреля 2011

Когда я пишу приложения (на языках сценариев), у меня есть функция, которая анализирует строку командной строки.Я создаю исходный файл, который я разрабатываю, и тестирую модуль, который работает напрямую, а не с использованием оболочки.

...