Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 18, 2011 16:34:30

Георгий
От:
Зарегистрирован: 2011-08-18
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Ботнет/тест кластер

Здравствуйте.
Предисловие
Я занимаюсь ручным тестированием ПО. В основном это хождение под разными браузерами (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.
Мы просто имеем небольшой ботнет, набор сценариев, манагер, который все разруливает, и систему отчетов.

Интересно
Есть ли что-то подобное?
Критика, можно не конструктивную.

Есть желание сделать такой проект.



Офлайн

#2 Авг. 20, 2011 11:44:18

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

Ботнет/тест кластер

http://seleniumhq.org/
http://www.getwindmill.com/
Эти проекты не годятся?



Офлайн

#3 Авг. 20, 2011 20:53:17

Георгий
От:
Зарегистрирован: 2011-08-18
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Ботнет/тест кластер

У нас активно используется Selenium.
Но есть такие моменты, когда нужно использовать не только браузер, например: работа со снифером wireshark, работа с программами редактирования flash cookies, DOM storage, putty для проверок серверных логов, скриншоты каждого действия, менять настройки браузеров не всегда получается через дом (поставить прокси, отлючить куки, яваскрипт для ие6), установка/удаление разных версий флеш плеера, автоматическая установка вспомогательных программ, etc…

У нас столкнулись с этими проблемами и решили их так, как я описал выше. Но есть пару нюансов:
- система закрытая, и развивается силами нескольких человек
- работает это на самопальном DSL языке, который довольно молодой =) не хочется описывать минусов самопального языка, там просто нет плюсов по сравнению с любым мало мальски популярным языком

Да и вообще через GUI API можно тестировать не только веб-приложения, а любые программы.
GUI API потому, что не обязательно WinAPI.

т е хочется Rational Robot, только: на питоне, open sorce, со всеми плюшками



Офлайн

#4 Сен. 20, 2011 09:58:37

diam123
От:
Зарегистрирован: 2008-10-23
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Ботнет/тест кластер

Вообще, исходя из вашей задачи, то лично я бы смотрел в сторону Sikuli, а не WinApi.
Из минусов - скорость работы будет не очень большая.



Отредактировано (Сен. 20, 2011 10:00:11)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version