Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Kangarootest, хочу поделиться разрабатываемым инструментом для создания автотестов

tools
Теги: #<Tag:0x00007f7b63a33cd0>

(Redahe) #1

Добрый день!

Последние несколько месяцев я занимаюсь созданием инструмента для написания функциональных автотестов для API (вебсервисы и очереди сообщений).

Приложение, пример и видеоролик доступны на сайте http://www.kangarootest.com/

Основные фишки:
быстрота создания типовых действий (перетаскивание мышкой),
автотест является скриптом на языке программирования Clojure
поддержка xpath, json (удобная генерация xpath,jsonpath по примерам сообщений)
поддержка ssl,
поддержка любых сторонних java библиотек и jms провайдеров.

Интересно мнение, профессионального сообщества. Что думаете?


(sidelnikovmike) #2

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


(Sergey Pirogov) #3

Выглядит как набор окон. чем показанное на видео проще.лучше чем просто питон код?


(Redahe) #4

Спасибо за ответ.
Был бы рад если бы вы или ваши коллеги попробовали приложение.
Готов регулярно вносить улучшения/новый функционал основываясь на отзывах.


(Redahe) #5

Это не только набор окон, это domain-specific programming language для создания функциональных тестов.
Окна нужны, чтобы для создания простейших тестов не требовалось знание какого-либо языка программирования, и не было необходимости держать в голове АПИ различных библиотек. Интерфейс постарался сделать интуитивным.
При этом для более опытных пользователей есть возможность писать код напрямую (вкладка source), (подсветка синтаксиса присутствует, в планах добавить автодополнение). (Код в любой момент можно визуализировать, и наоборот визуализацию представить в виде кода) Добавив свою имплементацию “типовых действий” я постарался сделать DSL для функционального тестирования поверх Clojure. Т.е. постарался сделать вызов функций таким какой он был бы удобен именно для создания функциональных тестов, а не для программирования. (Обычно фреймворки для языков программирования заточены на перфоманс, в Java, например, вас просят сначала распарсить xml, получить DOM документ, затем создать объект xpath и только потом получить по нему значение, что загромождает код). Чтокасается Питон’а нужно смотреть на конкретных примерах. Я всегда готов улучшать приложение и DSL на котором создаются тесты.


(sidelnikovmike) #6

Вот кстати. Хотел сейчас скачать, но остановило то, что обязательна Java 8. А я пока не ставил себе да и не особо планировал еще.
Понятно, что нужно типа “двигаться в ногу со временем”, но всё же.


(Redahe) #8

На сайте присутствует сборка под Windows (на первой странице внизу), не требующая java.
В будущем планирую добавить готовую сборки для MacOs
и пакет для linux с зависимостями. Если есть спрос :smile:


(sidelnikovmike) #9

У меня как раз mac.
Просто может не стоило так уж гнаться за модой и делать какие-то вещи, специфичные для 8ой версии. Мало ли кто захочет воспользоваться Вашим инструментом.


(Дмитрий Жарий) #10

Сама идея достаточно интересная, в принципе, хорошо что вы поделились проектом на ранних стадиях.

Несколько вопросов:

  1. Почему closure? – Я думаю, что это не самый мейнстримный язык для автоматизации. Почему не C#, Java, JavaScript, Ruby, Python?

Этого достичь не получилось. Даже в примере вы что-то дописываете на кложуре. Т.е. без знания языка программирования, быстро набросать тест никак не получается. А если я знаю язык программирования – то мне этот инструмент не зачем.

  1. Отчет о прогоне теста не информативен

Баги (Win7):

При каждом запуске (kangaroo_v1_2_0b.bat) приложение предлагает дефолтный путь к проекту в папке Temp. Выглядит странно

Мой вывод:
Я думаю, что вам нужно продолжить работу над идеей, но текущая реализация никуда не годится.
Начните с анализа тех инструментов, которые уже давно на ранке и попробуйте понять, чем вы можете быть лучше. С ходу, в голову приходит Testcomplete, там есть что-то вроде визуального кода.

Или, вот Blocky


(sidelnikovmike) #11

Думаю, что основной “конкурент” - это soap ui


(Redahe) #12

Большое спасибо за ваш ответ.
Информативность отчетов действительно следуеют доработать.
Дефолтный путь к проекту стоит выставлять предыдущей?
Cогласен с Вашими замечаниями.

Этого достичь не получилось. Даже в примере вы что-то дописываете на кложуре.

В примере я это делаю, только чтобы продемонстрировать что такая возможность есть. (Базовыми средствами делается сравнение некого значения с эталоном, во втором случае проверяется на истинность некое выражение на clojure)

Почему не C#, Java, JavaScript, Ruby, Python?

Изначально решил что будет очень полезной если приложение будет работать JVM - так как java и java-технологии (например jms) очень распространены в распределённых приложениях (тестирование которых и предполагается). Для java существует много библиотек подключение которых может понадобится для тестирования очень кастомного решения. (В том числе опытный тестировщик может дописать её сам и подключить в Kangaroo)
Clojure - работает на jvm, и совместим с любыми классами и библиотеками java.
У него нет никакого синтаксиса (по сути это старый добрый Lisp на jvm с макросами)
что позволяет делать на нём свой доменный язык для прикладной задачи (функциональное тестирование), функциональность языка будет полезна, для простоты описания и запуск из тестов “сервисов-заглушек” (добавлю в будущем если, будет спрос). Код на clojure - очень просто парсить и конструировать, что и позволяет иметь взаимно однозначное отображение код-визуализация.
В soapUI - насколько помню Groovy, а в JMeter и подавно - свой синтаксис, тем не менее люди активно используют эти продукты, или это немного другая сфера?

Testcomplete - посмотрю, спасибо.


(Redahe) #13

Будучи разработчиком, которому на работе часто требуется проверять интеграцию в распределённых приложениях, я испытываю на себе высокий порог входа в профессиональные продукты. Такие продукты как soapUI с его обилием настроек, окон, вводит в ступор. Первой целью было создать приложение - для которого не нужна документация, которое было бы “сподручным” для человека которому нужно сделать простейшие действия (и только в случае чего-то сложного требовалось бы обращаться к документации). Например в Jmeter - решительно невозможно сделать что либо без документации. Хотелось бы занять такую нишу, постепенно добавляя функционал, который бы мог сравниться с возможностями больших, “громоздких” продуктов.


(Максим Таран) #14

Парсить может и хорошо, но тестировщика - это мало волнует. :slight_smile: Распространёность groovy и порог вхождения в него, мне кажется, более приемлемы.


(Redahe) #15

На самом деле, сам синтаксис для Clojure учится буквально несколько минут. (Дольще осваивается парадигма функционального программирования, для которого он создан, но в подавляющем большинстве случаев для написания функциональных тестов, углубятся в это просто не будет необходимости). Зато пользователи получили приятный бонус: Kangaroo автоматически умеет определять, что вводимый пользователем текст в полях форм - является кодом (например вызов функции или подстановка некой константы), а не просто неким текстовым значением (поле в этом случае подсвечивается фиолетовым цветом). С другими языками точно определять скорее всего не получилось бы. Ну и интерес к функциональным языкам (Clojure,Scala, Haskell) в последнии годы растёт, возможно что инвестиции времени в опыт на Clojure ещё ни 1 раз окупятся :wink:


(Максим Таран) #16

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