Автоматизированное интеграционное тестирование клиент-серверного настольного приложения Windows.

Моя команда разрабатывает настольное приложение (смешанное C++/Tcl), которое используется в конфигурации клиент-сервер. В настоящее время это только для Windows, но скоро нам нужно будет перенести его на Linux. CruiseControl.NET каждую ночь собирает его из исходного кода в SVN и упаковывает в установщик NSIS, но у нас нет автоматизированных тестов для запуска.
Почти невозможно добавить какие-либо модульные тесты, но интеграционное тестирование приложения легко, потому что он уже в значительной степени основан на сценариях.
Основная задача — установить приложение на 3 ПК, настроить его (что включает в себя копирование некоторых файлов), запустить его, отследить возможный сбой, дождаться завершения интеграционного тестирования, собрать сводку, отправить электронные письма. Это можно сделать с помощью набора пользовательских сценариев PowerShell, но

  • В будущем мы захотим добавить больше функций и больше тестов, и то, что раньше было простым скриптом, скоро взорвется (как обычно), поэтому я хочу свести к минимуму количество пользовательских сценариев, и если мне нужно что-то написать, я предпочитаю bash/cygwin (Я не знаком с Python или Ruby).
  • Я хочу веб-панель, которая будет сообщать о текущем прогрессе, а если что-то не получилось - показывать логи.
  • Мне нужен супервизор, который будет следить за тестируемым приложением и сообщать, если оно зависнет или выйдет из строя.
  • нам нужно будет протестировать его также на Linux
  • в идеале я хотел бы организовать некоторые этапы тестирования между ПК (например, запустить тест X на ПК1 и тест Y на ПК2 параллельно, подождать, пока они оба закончатся, затем запустить тест Z на ПК1, следя за тем, чтобы на ПК2 ничего не вылетало и т. д.)

Итак, я ищу COTS-инструмент/набор инструментов, которые помогут мне это сделать и не требуют сложного обучения. В идеале бесплатно, но если он действительно хорош и имеет справедливую цену, моя компания может приобрести лицензию.
Процесс должен запускаться из CruiseControl.NET, когда установщик NSIS готов, а затем выполнять все, что описано выше. По сути, он должен позволять, по крайней мере, удаленную установку программного обеспечения, запуск пользовательских сценариев и иметь веб-панель управления.
Судя по всему, можно было бы использовать инструменты SCCM, такие как Chef, но пока ни один из них не поддерживает сервер Windows, только узлы. Я хотел бы избежать настройки виртуальной машины Linux только для этого, хотя я могу это сделать, если у меня нет другого выбора. Кроме того, Chef кажется немного излишним - хорошо для 10 000 машин, но у меня есть только 3 ... может быть, 5 в будущем. И меня особенно интересуют возможности организовать распределенный тест.
Большинство похожих вопросов здесь, в StackOverflow и в Интернете, касаются веб-приложений, контейнеров Java, Maven и т. д., и для этих целей существует множество инструментов и плагинов. инструменты для оценки.
Заранее спасибо.




Ответы (2)


Установите ccnet на свои тестовые машины. Пусть эти проекты ccnet прослушают файл, который будет отредактирован, когда будет готов новый установщик. Попросите тестовые машины установить этот новый установщик и запустить тесты. Ну вот. ccnet отправляет электронные письма, так что это ваша основная отчетность.

Получение результатов теста в базе данных через веб-службы с использованием gSOAP (это то, что мы сделали). Для Linux вы можете запустить java CruiseControl, если необходимо. Напишите программу контроллера тестирования с поддержкой gSOAP, чтобы сообщать о результатах тестирования с тестовых компьютеров. Подойдет небольшое приложение на С++. Затем напишите веб-сайт (мы используем ASP.NET), чтобы запросить базу данных (Postgresql) и показать результаты. Сделайте так, чтобы тестовые машины автоматически обновлялись через SVN, чтобы получить последние изменения в конфигурации. Используйте Нант. Nant намного лучше, чем просто использование ccnet для выполнения задач. Нант работает через ccnet. Используйте XML, XSL и CSS с ccnet, чтобы тестовые электронные письма содержали нужную вам информацию (новые проходы, новые сбои, различия SVN с кодовыми базами и т. д.).

Наша последняя разработка — разместить на кухне большой телевизор с обзором результатов испытаний, чтобы люди могли быстрее узнать, что они сломали!

Первое, что я бы заработал, — это тестовая машина, прослушивающая новый установщик, устанавливающая его, запускающая некоторые базовые тесты и отправляющая результаты по электронной почте. Поместите конфигурацию ccnet и nant в систему управления версиями и получите это автоматическое обновление на тестовой машине, чтобы вам не приходилось входить в каждую тестовую машину и выполнять обновление каждый раз, когда вы вносите изменения.

person Adam Bruss    schedule 10.12.2014

Это чрезвычайно широко и довольно близко к основанному на мнении. Chef может обрабатывать такие шаги, как развертывание приложения на тестовых машинах, но это не среда тестирования графического интерфейса, поэтому для этого вам понадобится что-то еще. Jenkins поддерживает распространение тестов на хосты Windows, так что это кажется хорошим выбором с этой стороны, но это не так хорошо для многоузловых тестов или оркестровки между ними. Я подозреваю, что вам придется написать большую часть этого самостоятельно, учитывая требования.

person coderanger    schedule 04.12.2014