Автоматизированное интеграционное тестирование клиент-серверного настольного приложения 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 только для этого, хотя я могу сделать это, если у меня нет другого выбора. Кроме того, шеф-повар, кажется, немного излишним - хорошо для машин 10k, но у меня есть только 3... возможно 5 в будущем. И мне особенно любопытны шансы организовать распределенный тест.
Большинство подобных вопросов здесь, в Stackru и в интернетах, касаются веб-приложений, 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 в систему управления версиями и получите автоматическое обновление на тестовом компьютере, чтобы вам не приходилось заходить на каждый тестовый компьютер и выполнять обновление каждый раз, когда вы вносите изменения.
Это очень широко и довольно близко к мнению основано. Chef может обрабатывать такие шаги, как развертывание приложения на тестовых компьютерах, но это не тестовая среда с графическим интерфейсом, поэтому вам нужно что-то еще для этого. Jenkins поддерживает распространение тестов на хосты Windows, так что это кажется хорошим выбором с этой стороны, но он не так хорош в многоузловых тестах или согласовании между ними. Я подозреваю, что вам нужно написать большую часть этого самостоятельно, учитывая требования.