Возможно кто-то сталкивался с задачей или есть идеи по этому поводу.
Очень хочется запихнуть тест в десктопное приложение) Скорее даже это будет не тест а помощник в тестировании.
Юзкейс такой:
Открываешь апликейшн, вводишь необходимые параметры для теста и запускаешь.
Открываются браузеры, начинается магия селениума. (Например создаются N юзеров)
Закрываются браузеры, все хеппи )
Основная идея чтобы любой человек в команде (от девелопера до менеджера) смог не парясь со студией, тестраннерами и прочими инструментами, набить параметризированные юниты для дальнейшей работы.
А зачем это все делать через какое-то десктопное приложение?
Будет лучше когда будет запуск даже без настроенной локальной среды и без десктопного приложения. Это будет бомба! Как это сделать? Установить continuous intergration server в виде jenkins и настройте запуск там. Все кому надо запустить тесты просто захотят на определенный урл, нажимают кнопку и получают результат. Ну вот и все что вам надо.
Настроить запуск через дженкинс значительно быстрое, удобное и масштабируемое решение нежели, свое десктопное приложение на коленках.
Для одного из своих заказчиков по автоматизации тестирования рисовал похожую схему.
Но не забывайте, что что-бы поднять дженкинс, требуются ресурсы (вычислительные) и довольно неслабые, если желающих запустить тесты будет более одного.
При том, что эти ресурсы вполне можно черпать из рабочих станций тестеров/разработчиков/менеджеров. Так что CI не панацея, хотя и “зрелищная” штука.
В любом случае, писать UI для запуска тестов - это перебор, обычного batch скрипта хватит с головой.
Имеются ввиду не те ресурсы, которые будет потреблять дженкинс, а те, которые потребуются для браузеров, в случае централизованного запуска автотестов (многопоточность, одновременный запуск различных джобов, ну и ИЕ вдогонку).
Почему не хватит? Если основательно подойти, от пользователя будет требоваться только проверить некоторые настройки в браузере и задать необходимые параметры при запуске батника.
Если они основательно подойдут, то сразу напишут десктопное приложение, как и говорилось в посте.
Хотя батником тоже можно сделать, но это все равно будет требовать какой-то там настройки.
ИМХО, мне вариант с дженкинсом больше нравиться, да может и придется одному человеку решить все вопросы с настройкой мультипоточности, открытия браузера и тому подобное, зато остальные просто нажимают на кнопку и радуются жизни, или же винят разработчика если что-то там не работает.
Есть еще одна причина отказаться от такой идеи. Если эта магия происходит на windows и с не headless браузером (IE, firefox, …), то менеджеры или другие пользователи идут “курить” (не могут работать с desktop) пока она не закончится.
Да, это еще один повод построить такой сервис запуска, чтобы не останавливать работу и помогать делать ее быстрее.
ОФФТОП: В наше время модно строить автоматизированные сервисы, которые помогают нам жить проще. Например вот есть сервис удаления ненужной информации http://devnull-as-a-service.com/
Вот так вот сразу по больному месту бьешь спрашиваешь :). Это можно сделать через слейвы и виртуальные машины. Ограничиваешь возможность одновременно запускаемых джобов под слейвы. Настраиваешь определенное количество виртуальных машин и под них настраиваешь слейвы. И при запуске будет выбираться свободная машина и там запускаться тесты.
А если вообще круто делать, то даже можно сделать так чтобы виртуальная машина создавалась только для одного прогона и после прогона убивалась, но это отдельная тема. Например можно использовать http://www.vagrantup.com/
Мы сделали такое приложение в одном из проектов. По факту это был виззард в 7 степов, где можно было выбрать набор тест кейсов, набор и версию браузеров, платформу запуска (локальная машина, СИ сервер или клауд). В случае клауда, можно было выбрать конфигурировать capabilities iOS, Android…Вообщем по факту более 40 параметорв комманд лайн можно конфигурировать в TestManager friednly way. Выбор, конечно, можно сохранить и типичный реран происходит в три клика. Из планов по развитию - сохранение результтов работы в СУБД с репортами, графиками и т.п. Вообщем процесс делегировался с тех. людей на потребителей. Хотя и девелоперы тоже юзают “профайлы” для быстрого локального рерана.
У меня сейчас стоит похожая задача. Отдать заказчику тесты, что бы он не парясь - нажимал одну кнопку и тесты запускались. Плохо одно - у меня нет доступа в их репозиторий, а наши безопасники не хотят давать им доступ в наш.
Ну раз все такие упертые и недоверчивые, можно заскедьюлить Jenkins job, который будет выгребать тесты из вашего репозитория, собирать необходимый пакет и копировать в shared space, доступный заказчику.
Я тоже склоняюсь к этому…но для начала надо поставить Jenkins заказчику, настроить там jobs, которые будут смотреть не в репозиторий, а внутрь какой то файловой системы. Скажу честно - чувство прекрасного начинает сильно бастовать.