Тестирование структуры для функционального/системного тестирования для C/С++?
Для С++ существует много хороших фреймворков unit test, но я не нашел хорошего для функционального тестирования, При функциональном тестировании я имею в виду материал, который касается диска, требует, чтобы все приложение было на месте и т.д.
Точка в случае: какая структура помогает при тестировании таких вещей, как работает ли ваш ввод-вывод? У меня есть ручная система на месте, которая создает временные папки, копирует вокруг кучу данных, поэтому тесты всегда выполняются в одной и той же среде, но прежде чем я потрачу больше времени на свою настраиваемую структуру - есть ли хороший там уже?
Ответы
Ответ 1
Я написал один раз с нуля три раза - дважды для тестирования приложений на С++, которые разговаривали с биржами с использованием протокола FIX, один раз для графического интерфейса.
Проблема заключается в том, что вы должны подражать внешнему миру для правильного тестирования системы. Я не имею в виду "вне вашего кода" - вне вашего приложения. Это включает в себя эмуляцию конечных пользователей, внешних объектов, Интернета и т.д.
Я обычно использую perl для написания системных тестов и тестов, в основном потому, что это хорошо с доступом ко всем видам ОС, а регулярные выражения - первоклассные граждане.
Некоторые советы: убедитесь, что ваши журналы легко разбираются, детализированы, но не слишком подробны. Имейте разумную конфигурацию по умолчанию. Упростите приложение "reset" - вам нужно сделать это после каждого теста.
Подход, который я обычно использую, состоит в том, чтобы иметь какой-то "адаптер", который превращает связь приложения с внешним миром в stdin/stdout некоторого исполняемого файла. Затем я создаю структуру perl поверх нее, а затем в тестовых случаях используется фреймворк.
Ответ 2
Ниже я перечислю несколько инструментов и более крупных приложений тестирования, о которых я знаю. Если вы предоставите дополнительную информацию о своей платформе (ОС и т.д.), Мы можем, возможно, предоставить более качественные ответы.
Для части того, что вам требуется, Microsoft предоставляет Application Verifier:
Application Verifier (AppVerifier) - это средство проверки времени выполнения, используемое при тестировании приложений для совместимости с Microsoft Windows XP. Этот инструмент можно использовать для тестирования широкого круга известных проблем совместимости во время работы приложения. В этой статье описываются шаги по использованию AppVerifier в качестве эффективного дополнения к циклам разработки и тестирования приложений.
Application Verifier может быть полезен для тестирования условий низкой памяти, других низких ресурсов и другого использования API.
Еще одна часть головоломки - пакет Microsoft Detours, который можно использовать для замены вызовов API собственным кодом (полезно, например, возвращать коды ошибок для тестов, которые трудно настроить).
Detours - это библиотека для управления произвольными функциями Win32 на машинах x86, x64 и IA64. Detours перехватывает функции Win32, переписывая код внутренней памяти для целевых функций. Пакет Detours также содержит утилиты для подключения произвольных DLL и сегментов данных (называемых полезными нагрузками) к любому двоичному файлу Win32.
Существуют и другие, более крупные (и более дорогие) всеобъемлющие пакеты. Borland делает Silk.
Автоматическое программное обеспечение делает TestComplete. Выбор одного из этих инструментов зависит от ваших потребностей в ваших приложениях.
IBM/Rational предоставляет Rational Functional Tester, который доступен на многих платформах и обладает богатыми возможностями.
Ответ 3
Привет. Я не уверен, что у нас есть поддержка в вашей ситуации, но он подключается к Rational Functional Tester и позволяет пользователю создавать различные наборы данных для присоединения к различным тестам и изменять настройки без изменения сценариев и повторного использования автоматизация в эффективном режиме.
Посмотрите, если вы заинтересованы:
http://www.testpro.com.au/Test-Automation-Framework.html