В настоящее время я разрабатываю библиотеку и набор программ, использующих эту библиотеку, в python. Модульное тестирование диктует, что я импортирую каждый модуль из библиотеки и проверяю классы и подпрограммы внутри. Нет проблем с этим. У меня есть отдельный тестовый каталог, содержащий все мои тесты и импортирующий библиотечные модули, которые я запускаю во время разработки.Тестирование целых программ. лучшие практики
Однако, когда дело доходит до тестирования программ, все меняется. Для тестирования программы должны выполняться в целом. Программы предполагают найти установленную библиотеку (что может быть и так, хотя и неверно, если я установил предыдущую версию на моей машине, добавив дополнительные проблемы). На данный момент мои программы запускаются testuite с определением PYTHONPATH, которое я выполняю вручную, перед развертыванием (IOW, я не выполняю установку), но я не думаю, что я делаю это правильно. Я чувствую, что в целом, программа должна быть проверена на функциональность, когда она полностью развернута, но это будет означать, что я должен установить ее каждый раз, когда я хочу выполнить функциональное тестирование.
Каков ваш опыт и предложения относительно функционального тестирования целых программ? вы делаете это до или после развертывания, и как?
Благодаря
Обратите внимание, что я не включаю питон метку на цели. Хотя моя проблема связана с python, и я предпочел бы ответы на вопросы, связанные с python, я думаю, что вклад может быть внесен также экспертами на других языках.
Редактировать: как сообщалось в комментарии, тот факт, что моя программа, при установке, необходимо импортировать модули, чьи пути могут быть найдены только при развертывании (загрузить и установить зависимости на лету, они не установлены на моей машине). Я не могу манипулировать sys.path из теста, потому что это будет означать, что я изменяю sys.path программы (мой исполняемый файл) из другой программы (testuite, которая запускает и вызывает вызов system()).
Другими словами, единственный способ, которым я должен протестировать программу без развертывания, - это запустить программу с PYTHONPATH, установленную в каталог, содержащий депилы, и библиотеку, которая использует программу, установленную скриптом make (что, как я уже сказал , загружает, компилирует и «устанавливает» все во временный каталог).
При развертывании распаковки и исполняемые файлы упаковываются вместе в структуру типа «OSX bundle», которая полностью исполняема и перемещается.
Edit:
добавили 150 баунти, чтобы увидеть, если я могу получить немного больше обратной связи.
Edit:
Я оценил все ответы и проголосовали все из них. Выбор был трудным для меня вызовом, но я был отозван LudoMC из V-образного подхода к тестированию, который я изучил давно. Спасибо всем за очень хорошие ответы.
1up. Я бы предложил только осмотреть инструменты. Хотя большинство функциональных инструментов автоматизированного тестирования являются веб-функциональными инструментами автоматического тестирования (к сожалению, именно так ориентирована индустрия) вы должны найти некоторые. Или попробуйте с некоторыми не тестировать специальные инструменты, такие как инструменты автоматизации задач. Что-то вроде AutoIt http://www.autoitscript.com/autoit3/ – yoosiba