воскресенье, 23 сентября 2012 г.

Тестируем API на Python.

Для тестирования API сервиса раньше на проекте использовался Soup UI (а до него ещё одна программа, но лучше о ней не вспоминать)

SoupUI, конечно, хорошо.
Но:
1. Бесплатная версия заставляет делать множество лишних движений (например, нельзя скопировать и вставить несколько повторяющихся действий из теста в тест или получить список всех входящих и выходящих параметров для вызываемых функций, когда передаём значение от одной к другой)
2. Результат приходится проверять вручную, т.к. даже если тест 'passed' - вполне вероятно, что было возвращено какое-нибудь исключение, которое программа посчитала за корректный ответ.
3. Как показывать отчёт? Сколько тестов и на какие функции было запущено? Сколько из них пройдено и не пройдено?

Если коротко: в такой автоматизации слишком много приходится делать руками.
Поэтому, встречайте: Python !

Что он даёт:
1. Удобная библиотека работы с API позволяет в одну строчку вызывать любую функцию, получать ответ и адекватно его проверять (я использовал suds, но есть и другие, можно здесь найти: ссылка на stackoverflow )
2. Возможность генерировать отчёт в HTML (например http://tungwaiyip.info/software/HTMLTestRunner.html )
3. Полная автоматизация: запустил скрипт, через пол часа пришёл и забрал готовый отчёт.

Недостатка два:
1. Для работы с такими тестами (например, чтобы понять почему какой-нибудь тест упал) вам нужен человек, знающий Python (но вам достаточно одного человека).
2. Большой объем Python кода. если у вас, скажем, 30 функций, у каждой функции в среднем по 3 параметра, то с учётом проверки возможных классов эквивалентности (в идеале мы хотим протестировать как можно больше) получаем 4 * 3 * 30 тестов, каждый в строчек 10-20. Итого: 3600+ строк Python кода. Поэтому важно обзавестись хорошим редактором, который позволяет, например, сворачивать текст отдельных функций, а так же удобно подсвечивает питон код.


Пример того как генерировать HTML отчёт: ещё одна ссылка на stackoverflow

среда, 12 сентября 2012 г.

Selenium. Start.

Начало работы с Selenium.

Давно мечтал начать работать с этим фрэймворком для автоматизации тестирования веб приложений.

Чтобы начать:
1. Смотрим видео файл
    Спасибо авторам этого видео. Бесплатно выложенный видео-урок для того чтобы начать. Отлично, то, что нужно. Дальше - уже сами.
    Подробно расскажут как поставить selenium и python/java к нему. Научимся делать простые тесты, поговорим о полезной утиле Mind - теперь я знаю как делать красивые, эффектные презентации.

2. Ещё: cтатья в блоге о бесплатных лекциях по selenium

3. Установка в Linux Ubuntu была проста:
sudo apt-get install python-pip
pip install selenium
и далее работаем с любимым браузером.

В Windows надо будет как всегда допиливать:
 - скачиваем питон: http://www.python.org/download/
 - скачиваем setup tools: http://pypi.python.org/pypi/setuptools#Credits
 - прописываем ручками пути в переменную окружения Path к папке с питоном и папке с easy_install:  C:/python27/   & C:/python27/Scripts/
 - устанавливаем pip:  easy_install pip   (не забываем каждый раз закрывать окно консоли и открывать заново, чтобы виндовс увидел сделанные ранее изменения)
 - устанавливаем селениум:  pip install selenium

да, на експлорер надо скачать дополнительный компонент, версия которого зависит от битности операционной системы:
http://code.google.com/p/selenium/downloads/list
и да, необходимо запускать IE-сервер для корректной работы драйвера и прописать путь к нему в переменной окружения.

4. Покатили:
    from selenium import webdriver
    browser = webdriver.Firefox()
    browser.get("http://google.com")
    ...

   Welcome to Selenium )

дополнительно, по вопросам о локаторах:
http://selenium2.ru/docs/webdriver.html
http://autotestgroup.com/ru/blog/85.html
https://addons.mozilla.org/en-US/firefox/addon/xpath-checker/

Всё оказалось не так здорово, как виделось при прочтении множества статей о возможностях селениума в качестве фрэймворка для автоматизации. Идентификация простейшего объекта, который QTP распознаёт на раз, для selenium оказалась невыполнимой, даже с несколькими вариантами xpath. Оказывается, когда страница состоит из нескольких фреймов и встроенных страниц со структурой "таблица в таблице", xpath не так уж и силён. Selenium IDE видит объект, а Selenium Web Driver - нет. Читаю про локаторы, проникаюсь дао автоматизации.

вкусности:
http://automated-testing.info/forum/razbiraemsya-v-zapuske-testov-v-jenkins-maven-testng-webdriver-na-java