C ++ непрерывная интеграция с показателями производительности

Я хочу настроить непрерывную интеграцию и среду тестирования для моего проекта C ++ с открытым исходным кодом. Желаемые функции:

1. check out the source code
2. run all the unit and other tests
3. run performance tests (these measure the software quality - for example how long does it take the system to complete the test)
4. produce a report based on 3. and 4. daily
5. archive the reports for future reference

Чтобы реализовать это, какую среду тестирования и какой процесс непрерывной интеграции вы бы порекомендовали? Прямо сейчас я склоняюсь к Google Test Framework (мне известны некоторые из рассмотренных сравнений платформ модульного тестированияв других вопросах) для испытаний иКруиз-контроль для непрерывной интеграции. Но я не знаю, позволяет ли Cruisecontrol легко интегрировать показатели производительности.

редактироватьОтвет: Вильгельмтель, код должен работать как с Windows, так и с Linux.

 wilhelmtell21 дек. 2008 г., 04:18
Вы связаны с какой-либо конкретной операционной системой или набором инструментов?

Ответы на вопрос(7)

список рассылки пользователей чтобы увидеть, делают ли другие то же самое.

Но я не знаю, позволяет ли Cruisecontrol легко интегрировать показатели производительности.

Существует два способа обработки показателей производительности с помощью CruiseControl:

Если у вас есть данные XML, вы можете объединить их в файл журнала, а затем интегрировать их в электронную почту и веб-страницы с некоторыми .xsl, илиЕсли у вас есть HTML-отчет, вы можете использовать издателя артефактов, чтобы сделать его доступным через веб-интерфейс с помощьюиздатель артефактов.

Я немного предвзят в этом вопросе, потому что я работаю над проектом CruiseControl, но есть несколько других инструментов CI, которые также будут работать.

которая может вам помочь. Он описывает непрерывную интеграцию кода C ++, используя googletest и hudson, используя gcov для метрик покрытия кода.http://meekrosoft.wordpress.com/2010/06/02/continuous-code-coverage-with-gcc-googletest-and-hudson/

выбор библиотеки для юнит-тестирования - это один вопрос. Да, я думаю, что GoogleTest просто отлично. Мне нравится это, потому что это чувствует себя легким с точки зрения использования. UnitTest ++ еще больше. Неважно, какой вы выберете.

У меня нет опыта работы с CruiseControl, но, учитывая ваши требования, я, вероятно, напишу сценарий для этой работы. Каждое требование может быть легко выполнено, по крайней мере, одним инструментом, так что просто склейте инструменты.

Если ваши отчеты не должны быть в HTML, XML, LaTeX или другом необычном формате, я бы использовал Bash. Тогда вы можете простоtime команды,sed выход из двоичного файла unittest и так далее. Тем не менее, вы все равно можете выбрать Bash для более сложных форматов, если вы действительно любите Bash и привыкли к нему. Например, вы можете написать шаблон HTML для отчета с использованием заполнителей, а затем заменить заполнители данными.

Если ваши задачи более сложные, например, потому что вы хотите, чтобы скрипт запускался и на других платформах, то я бы, вероятно, использовал Ruby или Python. В Ruby, например, вы можете использоватьMarkaby вывести ваш HTML. В любом случае, Bash, Ruby или Python отлично подходят для обработки текста или для этой задачи в целом. Я думаю, что вы могли бы создать небольшой сценарий, который бы выполнил эту работу в кратчайшие сроки.

Что приятно, если вы используете скрипт, то вы также можете прикрепить его как хук практически к любой современной системе контроля версий. Например, вы можете настроить Subversion или Git hook так, чтобы скрипт запускался при любом коммите.

но у меня нет никакого опыта или знаний о тестовой среде Google. Однако для простой и бесплатной непрерывной интеграции вы не можете превзойти CruiseControl.NET, особенно со всеми инфраструктурами тестирования, системами сборки и другими дополнениями, которые он поддерживает.

Решение Вопроса

.

UnitTest ++ действительно хорош, хотя иногда я чувствую себя ограниченным. По крайней мере, это в 10 раз лучше, чем cppunit. Все еще не пробовал каркас тестирования Google, это будет для моего следующего проекта.

Я был чрезвычайно разочарован CruiseControl. Есть несколько ошибок и вопросов, задаваемых в списке рассылки, так и не получили ответа. Многие из «функций» по умолчанию для управления выполнением программы и ведением журнала не удовлетворяли. Нам пришлось написать собственное создание отчетов, наши собственные записи stdout и stderr, нашу собственную рассылку статуса. CruiseControl не так уж и много, кроме регулярного запуска тестирования и его сбора на центральном веб-сервере.

 Jeffrey Fredrick21 дек. 2008 г., 23:23
«Кажется, не поддерживается» За исключением четырех выпусков в этом году, я полагаю ...
 Jeffrey Fredrick05 мар. 2009 г., 17:27
Это честно. Конечно, если какая-либо из ваших пользовательских работ будет вообще полезна, может быть, это будет хорошим вкладом в проект? Вот как проект может улучшиться со временем ...
 Philippe F05 янв. 2009 г., 10:28
Я обновил свой комментарий, чтобы удалить «не поддерживаемую» часть. Тем не менее, я очень разочарован в CruiseControl. Это делает работу, но это не необычный гибкий инструмент, который я ожидал.

NAnt, Круиз-контроль .NET, bjam а такжеCppUnit и все это работает довольно хорошо.

Однако только недавно мы перешли с Windows на Windowsа также Linux. В настоящее время только bjam и CppUnit используются на обеих платформах.

Наши скрипты NAnt не будут проблемой для переноса; NAnt отлично работает подмоно, CC.NET может быть и не так - мы не пошли по этому пути, но не так много документации, чтобы запустить его под моно / Apache ...

Мы рассматриваем возможность замены CC.NETГудзон; Это очень перспективная система.Круиз-контроль тоже очень хорошо.

Мы также рассмотрели возможность перехода с CppUnit на другой тестовый фреймворк, но сейчас он отлично работает.GoogleTest (особенно с новой фиктивной библиотекой),UnitTest ++ а такжеБуст тест все расследуются.

Так что я знаю, что это не может быть окончательным ответом, но, надеюсь, там есть что-то полезное для вас!

Я считаю Hudson очень простым в использовании и чрезвычайно настраиваемым, с множеством плагинов.

Ваш ответ на вопрос