Тестирование структуры для функционального/системного тестирования для 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