Sparrow — Perl-Фреймворк Для Тестирования И Мониторинга Веб-Приложений.



История создания Воробей — очень молодой проект. Возник как надстройка над инструментом удар — DSL написан на перл для разработки тестовых сценариев для различных веб-приложений.

Описание swat — это отдельная тема, возможно, я осветлю ее в будущих публикациях, но в двух словах, swat — это инструмент для автоматизации веб-тестирования, основанный на использовании утилиты завиток и позволяет создавать произвольные HTTP-запросы и проверять возвращаемый контент.



Установка Воробей

Ставим как обычно cpan модуль.

  
  
  
  
  
   

$ sudo cpanm Sparrow

После установки в текущем PATH становится доступна утилита sparrow, собственно консольный клиент, предоставляющий весь набор функций фреймворка.



Идеология Воробья

Sparrow спроектирован как простой консольный клиент, позволяющий быстро настраивать и запускать тесты для различных веб-приложений.

В этом инструменте есть два типа основных операций: создание тестовой структуры и установка и запуск плагинов sparrow.

Структура проекта Воробей

На данный момент существует три основных объекта, над которыми работает Sparrow: проекты, сайты и плагины.

Проекты — это абстракции, позволяющие описывать группы тестируемых приложений.

У проекта есть идентификатор, набор плагинов и набор сайтов для тестирования.

Вот как это может выглядеть в выводе консоли при запуске утилиты sparrow. Отобразим структуру проекта воробья:

$ sparrow project foo # sparrow environment initialzed at /home/vagrant/sparrow project foo info: [plugins] swat-mongodb-http swat-pintod swat-app-docsisious metacpan swat-lighttpd swat-yars swat-nginx [sites] mongodb-http-server [127.0.0.1:28017] pintod-server [127.0.0.1:3111] metacpan [ http://metacpan.org ] lighttpd [127.0.0.1:8080] thorsen [ http://home.thorsen.pm/docsisious ] yars_server [ localhost:9001 ] localhost [127.0.0.1]

Из приведенного выше вывода можно понять, что данный проект содержит набор плагинов (mongodb-http-server, pintod-server, .

) для тестирования соответствующих приложений и набор сайтов, о которых пойдет речь дальше.



Сайты воробьев

Сайты в sparrow описывают произвольное тестируемое веб-приложение.

Помимо идентификатора, сайт должен иметь базовый URL-адрес , который является «корневым» URL-адресом для http-запросов, которые будут поступать во время тестов.

В большинстве случаев базовый URL-адрес может быть таким же, как полное доменное имя или IP-адрес сервера тестируемого приложения, причем указывать схему и порт необязательно.

Точнее, базовый URL-адрес должен быть совместим с форматом свернуть URL-адрес .

Также стоит отметить, что несмотря на то, что Curl позволяет взаимодействовать с другими протоколами (ftp,.

), sparrow в связке с удар использовал только для тестирования приложений по протоколу http. Вот пример создания сайта в проекте sparrow в случае такого приложения, как nginx server:

$ sparrow project foo add_site nginx-server 127.0.0.1



Плагины воробья

Плагины — самая интересная и многообещающая функция sparrow, делающая его мощным инструментом для тестирования и мониторинга веб-приложений.

Возможно, я плохо искал, но не нашел ничего подобного в других инструментах автоматизации тестирования, не только в экосистеме Perl, но и в других языках программирования.

Короче говоря, плагин sparrow — это портативный набор тестов, который вы можете установить и запустить.

Очень наглядную аналогию можно построить на примере различных пакетных менеджеров, таких как ням в центосах или apt-получить в Дебиане.

Для разных типов приложений должна быть возможность выбрать и установить плагин, инкапсулирующий определенный набор тестов, который можно запустить для данного приложения.

На данный момент список Плагины sparrow довольно ограничены, но есть надежда, что члены сообщества Perl заметят этот проект, и вскоре мы сможем увидеть много новых плагинов.

Более того, процесс написания нового плагина в большинстве случаев тривиален и даже не требует знания perl как такового, но, повторюсь, раскрытие этой темы выходит за рамки моего поста и может быть осуществлено в будущем.

Итак, плагины sparrow можно устанавливать и добавлять в проекты:

$ sparrow plg list # sparrow environment initialzed at /home/vagrant/sparrow [sparrow plugins list] swat-yars | https://github.com/melezhik/swat-yars.git metacpan | https://github.com/CPAN-API/metacpan-monitoring.git swat-app-docsisious | https://github.com/melezhik/swat-app-docsisious.git swat-nginx | https://github.com/melezhik/swat-nginx.git swat-lighttpd | https://github.com/melezhik/swat-lighttpd.git swat-pintod | https://github.com/melezhik/swat-pintod.git swat-mongodb-http | https://github.com/melezhik/swat-mongodb-http.git

Установка плагина на данный момент реализована как обычная проверка с сайта.

удаленный git-репозиторий, возможно, в будущем этот функционал будет переписан с использованием собственных репозиториев sparrow с версионированием дистрибутивов и другими удобствами, аналогично обычному cpan-репозиторию.



vagrant@Debian-jessie-amd64-netboot:~/projects/sparrow$ sparrow plg install swat-nginx # sparrow environment initialzed at /home/vagrant/sparrow installing plugin swat-nginx .

Cloning into 'swat-nginx'.

.

Installing modules using /home/vagrant/sparrow/plugins/swat-nginx/cpanfile Successfully installed Outthentic-DSL-0.0.4 Successfully installed swat-0.1.68 2 distributions installed Complete! Modules were installed into /home/vagrant/sparrow/plugins/swat-nginx/local

Установив плагин, вам необходимо прикрепить его к проекту, а затем запустить набор тестов, используя выбранный сайт (веб-приложение) в качестве входного параметра:

$ sparrow project foo add_plg swat-nginx # sparrow environment initialzed at /home/vagrant/sparrow plugin swat-nginx is successfully added to project foo $ sparrow project foo check_site nginx-server swat-nginx # sparrow environment initialzed at /home/vagrant/sparrow /home/vagrant/.

swat/.

cache/3486/prove/00.GET.t .

ok 1 - GET 127.0.0.1/ succeeded # response saved to /home/vagrant/.

swat/.

cache/3486/prove/p3y5aUKFgj ok 2 - output match '200 OK' ok 3 - output match /Server: nginx\/(\S+)/ ok 4 - valid nginx version: 1.6.2 1.4 ok All tests successful. Files=1, Tests=4, 1 wallclock secs ( 0.01 usr 0.00 sys + 0.04 cusr 0.00 csys = 0.05 CPU) Result: PASS



Заключение

К сожалению, на этом наше знакомство с воробьем заканчивается, хотя, конечно, еще есть о чем поговорить.

Как уже говорилось, проект еще очень молод и активно развивается, как и основной компонент для написания тестовых скриптов — swat. Есть надежда, что perl-сообщество, и все, кто близок к автоматизации процессов тестирования и мониторинга, внесут свой вклад в историю жизни еще маленького, но уже ловкого воробья (*).

(*) – «воробей» – в переводе с английского означает воробей.



P.S.

Не могу не добавить еще несколько важных моментов, возможно, предвосхищая некоторые вопросы, которые могут возникнуть после прочтения статьи.

  1. удаленный запуск тестов через веб API — данную функцию планируется реализовать в ближайшем будущем, учитывая большое количество систем, позволяющих проверять доступность веб-сервисов посредством обращений к внешним API, например, того же консул или Нагиос .

  2. интеграция с существующими системами непрерывной интеграции и отчетности — итак на выходе, после запуска плагина воробья получаем КРАН , легко написать синтаксический анализатор, преобразующий результаты в другие форматы.

    Скажу больше: так как воробей при запуске плагинов вызывает swat, который в свою очередь использует Perl доказать для проведения тестов эта возможность конвертировать TAP в разные форматы предоставляется «из коробки» или с минимальным кодированием, подробности можно найти на странице документация swat, в разделе «TAP».

  3. и наконец, вполне резонный вопрос - «Где это решение было опробовано (воробей/шлепок)Э» В ходе моей повседневной работы devops-инженером Swat зарекомендовал себя как очень удобный инструмент для быстрой разработки дымовых тестов для десятков веб-приложений за короткое время.

    Sparrow еще тестируется, но уже можно сказать, что этот проект является логическим продолжением swat, и с использованием плагинов Sparrow есть шанс, что он станет востребован среди веб-разработчиков, девопов и системных администраторов.

Теги: #perl #автоматизация контроля качества #веб-приложения #мониторинг #perl #Тестирование веб-сервисов
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.