2008-09-17 3 views
7

Я представляю автоматическое интеграционное тестирование для зрелого приложения, которое до сих пор было проверено вручную.Автоматическое тестирование интеграции с C++-приложением с базой данных

Приложение основано на Windows и ведет переговоры с базой данных MySQL.

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

(Изменения в источнике приложения для этой конкретной цели, не вариант.)

ответ

3

Как вы проверяете результаты?

Если вам нужно запросить БД (и это похоже на то, что вы, вероятно, сделали) для результатов, то я согласен с Крисом К, за исключением того, что я попытаюсь перестроить БД после каждого тестового примера, а не только для каждого набора.

Это помогает избежать опасных interacting tests

Как для инструментов, я бы рекомендовал CppUnit.Вы на самом деле не выполняете модульные тесты, но это не имеет значения, так как инфраструктура xUnit должна предоставить вам структуру настройки и разрыва, которую вам необходимо будет автоматически настроить. test fixture

Очевидно, это может привести к медленному запуску тесты, в зависимости от размера вашей базы данных, населения и т. д. Возможно, вы сможете подключать/отключать базы данных, а не отбрасывать/перестраивать.

Если вас интересуют дальнейшие исследования, зарегистрируйтесь XUnit Test Patterns. Это прекрасная книга и хороший сайт для такого рода вещей.

А благодаря автоматизации :)

Ник

1

Вы можете сбросить/восстановить базу данных для каждого набора тестов и т.д. Так как вы автоматизации этого, может быть что-то в настройка/разрывы.

0

Лучшая среда для такого тестирования, я считаю, является VMWare или эквивалентом. Настройте свою базу данных, журнал транзакций и т. Д., Затем запишите всю базу данных, а также конфигурацию. Затем повторите проверку, перезагрузите изображение и базу данных и начните тесты. Это по-прежнему требует обслуживания тестов по мере изменения системы, но, по крайней мере, тесты повторяемы, что является одной из самых больших проблем при тестировании интеграции.

Для автоматизации тестирования многие люди используют Perl, но мы обнаружили, что программы Perl растут, как Topsy, и становятся запутанными. Использование Python в качестве языка сценариев (мы запускаем тесты C++) целесообразно, если вы пытаетесь построить серию структурированных тестов.

0

Как @Kris K. говорит, что сбрасывание и восстановление базы данных между каждым тестом, вероятно, будет способом.

Поскольку вы смотрите на тестирование внешнего приложения, я хотел бы создать структуру тестирования на языке, где вы можете использовать лучшие инструменты тестирования.

Если вы построили платформу тестирования на Java, вы можете воспользоваться JUnit и потенциально даже чем-то вроде FitNesse.

Не думайте, что только потому, что тестируемое приложение C++ означает, что вы застряли с помощью C++ для вашего автоматического тестирования.

1

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

Вы можете подумать о подготовке специального содержимого базы данных для тестов, т. Е. С меньшим количеством данных, чем текущая производственная версия (чтобы время восстановления было разумным).

0

Пожалуйста, попробуйте AnyDbTest, я думаю, что это очень инструмент вам найти. (www.anydbtest.com).

Особенности:

  • 1.Writing тест с Xml, а не Java/C++/C# код/​​VB. Не нужны эти дорогостоящие инструменты программирования.

  • 2.Supports все популярные базы данных, такие как Oracle/SQL Server/My SQL

  • 3.So многие виды утверждения поддерживаются, такие как StrictEqual, SetEqual, IsSupersetOf, закатов и т.д. RecordCountEqual Plus , большинство утверждений может префикс логики, а не оператора.

  • 4.Использует таблицу Excel/Xml в качестве источника данных для тестов. Как вы знаете, электронная таблица Excel - это легко создавать/редактировать и поддерживать тестовые данные.

  • 5.Supports тестовая модель песочницы, если один тест будет выполнен в песочнице, все операции с базой данных на каждой БД будут отброшены, что означает, что любые изменения будут отменены.

  • 6.Allows выполняет передачу данных из одной базы данных/Excel в целевую базу данных при тестировании фазы инициализации и завершения. Это простой способ подготовить тестовые данные для тестирования.

  • 7.Интернет-тестирование различных типов баз данных, что означает, что целевой и ссылочный набор результатов могут поступать из двух баз данных, даже один из них - SQL Server, другой - Oracle.

  • 8.Настроенный стиль сравнения для набора записей. AnyDbTest расскажет вам, что такое пересечение, или избыток или отсутствие между двумя наборами записей.

  • 9.Сравнительное сравнение стиля для наборов записей или скалярных значений. Это означает, что два результирующих набора будут сравниваться в их исходной последовательности.

  • 10.Allow для экспорта набора результатов SQL-запроса в файл Xml/Excel.