воскресенье, 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