Форум сайта python.su
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png) 
			 
							 0
  0   
								
								Здравствуйте.
Предисловие
    Я занимаюсь ручным тестированием ПО. В основном это хождение под разными браузерами (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.
    Мы просто имеем небольшой ботнет, набор сценариев, манагер, который все разруливает, и систему отчетов.
    
Интересно
    Есть ли что-то подобное?
    Критика, можно не конструктивную.
Есть желание сделать такой проект.
Офлайн
 
							 0
  0   
								
								http://seleniumhq.org/
http://www.getwindmill.com/
Эти проекты не годятся?
Офлайн
 
							 0
  0   
								
								У нас активно используется Selenium.
Но есть такие моменты, когда нужно использовать не только браузер, например: работа со снифером wireshark, работа с программами редактирования flash cookies, DOM storage, putty для проверок серверных логов, скриншоты каждого действия, менять настройки браузеров не всегда получается через дом (поставить прокси, отлючить куки, яваскрипт для ие6), установка/удаление разных версий флеш плеера, автоматическая установка вспомогательных программ, etc…
У нас столкнулись с этими проблемами и решили их так, как я описал выше. Но есть пару нюансов:
- система закрытая, и развивается силами нескольких человек
- работает это на самопальном DSL языке, который довольно молодой =) не хочется описывать минусов самопального языка, там просто нет плюсов по сравнению с любым мало мальски популярным языком
Да и вообще через GUI API можно тестировать не только веб-приложения, а любые программы.
GUI API потому, что не обязательно WinAPI.
т е хочется Rational Robot, только: на питоне, open sorce, со всеми плюшками
Офлайн
 
							 0
  0   
								
								Вообще, исходя из вашей задачи, то лично я бы смотрел в сторону Sikuli, а не WinApi.
Из минусов - скорость работы будет не очень большая.
Отредактировано (Сен. 20, 2011 10:00:11)
Офлайн
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png)