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