Здравствуйте.
Предисловие
Я занимаюсь ручным тестированием ПО. В основном это хождение под разными браузерами (IE FF Chrome Safari) по определенным урлам и ожидание реакции на странице или в логах сервера. Что бы зафиксировать ошибку используются wireshark, скриншоты, скриншоты состояний бразуеров(скриншоты настроек и куков) и выдержки из логов. Максимальное количесвтво информации для воспроизведения и безоговорочного доказательства бага.
Существуют тест-планы, по которым проверяется продукт, их много и некоторым уже по несколько лет.
Понятное дело, что проверять это руками очень надоело и хорошо бы автоматизировать это дело.
Задача
1)Руководство сказало, что автоматизировать можно, но с условием.
Нужно полностью эмулировать действия человека, те не то, что бы скрипт:
- ставил свой снифер
- под ним скачивал страничку с нужным ua
- парсил и делал какие нибудь выводы
а действовал как тестер:
- запустил wireshark на нужном порту
- открыл браузер, настроил его
- открыл страничку
- отработал со страничкой
…тут нам должен помочь WinAPI
2)Автоматизировать это на одном компьютере под одним браузером - это пол дела.
Браузеров много, в машинах недостатка нет.
Представим что есть кластер: сервер и 20 клиентов(где-то установлен IE6|IE7|IE8,
нужно ,что бы тест прошел под всеми браузерами)
Сервер распределяет задачи в зависимости от загруженности, установленного ПО… оптимизация на полное покрытие.
Так же нужен сбор логов прохождения тестов и генератор отчетов.
Прикидка
c WinAPI нам поможет pywinauto (http://code.google.com/p/pywinauto/)
с построением кластера PyRO/RRyc
удобно сделать в web-версии
сервер/манагер придется писать самим
отчеты + интерфейс манагера
Общий usecase
Админы ставят пустую машину (Win/Linux/может даже MAC) - это клиент.
Так же админы ставят питон, Python RPC консоль вешают сервисом/демоном.
Клиент ломиться на сервер и регается. Сервер имеет доступ к клиенту по средствам RPC и ставит на клиента нужное ПО.
Далее клиент получает задания от сервера в виде объектов, через RPC, и неустанно гоняет тесты.
Связь клиент-сервер в виде пересылки кусков кода между машинами и выполнение по средствам eval, это все реализовано в PyRO/RPyc.
SSL+авторизация делают это общение более безопасным.
Автотестеры имеют доступ к серверу и могут настраивать преоритеты заданий и подкладывать новые тесты, выполненные в виде файлов с классами.
Возможны плагины/либы в виде оберток на популярные программы. Например, обертка на браузер: удаляет кэш/куки, включает выключает яваскрипт/флеш и т д.
Тесты не обязательно должны быть завязаны на браузер или ось, тестировать можно любые приложения: консольные, GUI.
Мы просто имеем небольшой ботнет, набор сценариев, манагер, который все разруливает, и систему отчетов.
Интересно
Есть ли что-то подобное?
Критика, можно не конструктивную.
Есть желание сделать такой проект.