Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

На каком языке и инструменте вы автоматизируете? Хотели бы автоматизировать?

csharp
java
ruby
python
javascript
Теги: #<Tag:0x00007fedc46c2258> #<Tag:0x00007fedc46c2118> #<Tag:0x00007fedc46c1f88> #<Tag:0x00007fedc46c1e48> #<Tag:0x00007fedc46c1c90>

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

Привет Форум,

Ради интереса, да и чтобы и по холиварить, предлагаю ответить на следующие вопросы:

  • На каком языке и инструменте вы автоматизируете сейчас?
  • Что вам нравится в этом языке и инструменте?
  • А с чем работали в прошлом?
  • А на чем вообще можете еще? Хотите что-то поменять?

Какой ЯП выбрать для Автоматизации и не только?
Выбор языка написания тестов (нет акцента на чем написано приложение)
(Дмитрий Жарий) #2

Да, ведь как в морском обычае – кто последний закончит прием еды – тот моет посуду, будет наверное сложно дождаться первого комментария, поэтому, начну с себя.
(Обратите внимание, насколько эта фраза логически не связана :smiley: )

На каком языке и инструменте вы автоматизируете сейчас?
В данный момент – полный Майкросовтский набор: C# и Visual Studio.
Шучу, не полный Майкрософтский. Еще Selenium WebDriver и кучка опенсорсных библиотек и инструментов.

Что вам нравится в этом языке и инструменте?
C# – это вообще классный язык, который хоть и был сдёрт со Джавы, но при этом за небольшое время развился настолько, что теперь Джава сдирает фичи с СиШарп.
Говорят про некоторый «высокий порог входа» в этот язык – но, на самом деле это не так. Многие темы, которые рассматриваются в книгах по языку как самые основные и важные, такие как, например свои реализации базовых интерфейсов: IEnumerable, IClonable IEqualable и т.д. – на самом деле имеют очень отдаленное отношение к тому, что реально используется в автоматизации.
Зато, очень много чего решают готовые библиотеки и инструменты, большая часть которых либо бесплатна, либо полностью открыта.
Да, C# еще по прежнему многословен. Да, надо писать эти “public virtual void” – но сам язык уже давно стремится быть более лаконичным. На C# можно заавтоматизировать все что угодно. И да, если не хочется думать – то достаточно решение нагуглить :smiley:

А с чем работали в прошлом?
У меня около 6-ти лет опыта работы с SilkTest. Но, скорее всего, это больше хороший опыт работы в отличной команде. За все это время, мы выжимали из этого инструмента все до последнего. И он трудился, как рабочая лошадь: на разных операционных системах и на разном железе.

А на чем вообще можете еще? Хотите что-то поменять?
Сейчас я бы пока остался в Сишарпе.
Еще я люблю язык Perl, сейчас, правда, использую его в качестве инструмента для прототипирования идей и генерации тестовых данных. Иногда хочется решить задачу быстро, а Perl – это самый лучший язык, который это позволяет.
JavaScript – меня очень пугает. Нет, простые решения на JavaScript реализуются тоже просто… но вот эти цепочки обратных вызовов – что-то просто ужасное. Еще с Perl’а я привык к какому-то «странному» ООП. Но то что есть в JavaScript – это выглядит ужасно.
Не даром, появился CofeeScript и TypeScript, которые хоть частично могут подсластить пилюлю.
Кроме того, область нагрузочного тестирования для меня не сильно изучена. Хотелось бы попробовать на чем-то реальном.

Товарищи, не превращайте это в топик одного человека, давайте, делитесь отзывами :smiley:


(Сергей Блохин) #3

Ruby, Ruby и ещё раз Ruby. Там, где это возможно. Selenium, Monkeyrunner, etc…


(Michael Bodnarchuk) #4

Простите за наивность, но я верю, что автоматизировать можно и на PHP. Ну может не сейчас, может в ближайшем будущем, когда и сообщество и экосистема созреет.

Из видных компаний занмиающихся автоматизацией на PHP я знаю Facebook и Magento. Что уже весьма неплохо. Facebook сейчас делает биндинги для webdriver совместимые по api с официальными, так что webdriver в кои веки будет работать без костылей.

Плюсы PHP - статическая система классов/методов, а значит эффективный автокомплит (в отличии от руби), код не требует компиляций, работает быстро.
Минусы: вы и так их прекрасно знаете :slight_smile:


(5am) #5

Для автоматизации UI/Web Services/Базового performance тестирования использую C# + WebDriver

Так же на шарпе делаю не большие утилиты в помощью тестированию (всякие парсеры, быстрая регистрация аккаунта на тестовом сайте через api, не большой web гуй (asp.net) для запуска regression авто тестов на удаленной машине, и т.д.)

В данный момент, потихоньку изучаю Python.


(Mykhailo Poliarush) #6

Программирую и автоматизирую в основном на Python, но часто приходиться писать код на Java, уж очень распространенные java технологии сейчас в автоматизации.

Именно вот сейчас, занимаюсь проектом по автоматизации SOA приложения, веб-сервисы, базы данных, xml, логи, удаленные сервера и т.д. Использую robot framework и к нему пишу библиотеки на Python.

Что не нравиться мне в Robot Framework (кроме того, что он идеален :smile: ) так это то, что нет нативной поддержки для запуска тестов в параллельном режиме и походу что не будет, так как core разработчики противятся делать такую поддержку.

А вот с чем работал? Это конечно вопрос очень обширный, напишу только вкратце, если мы говорим о автоматизации тестирования, pywinauto, qtp, test complete, robot framework, webdriver, jmeter, soapui, loadui, sikuli, и другое тупо просто перечислять инструменты.

Вот в моих ближайших планах - это ruby и javascript стек технологий, там много чего появилось и развивается в плане автоматизации, хочется нырнуть туда, но чувствую это тогда пройдет пару лет жизни :smile:

А по поводу python. Хотя я вот учу python-y и вижу, что новичкам все таки не хватает строгости языка, который будет им говорить, а вы тут сделали не верно, а тут вы используете не тот тип и тому подобное. Python либеральный язык и позволяет делать многое гибко, но кто не умеет программировать - эта гибкость может пойти в непонимание как работает код и почему как вообще не работает в каких-то случаях.

А так Python-ом очень доволен и ничего не хочу менять! :smiley:


(Mykhailo Poliarush) #7

Может быть, но я в это не сильно верю. Наверное, потому что я не программирую на PHP.


(Michael Bodnarchuk) #8

Ну экосистема созреет как раз после того как ты выучишь ruby и javascript :smile:


(Mykhailo Poliarush) #9

Ну вот через пару лет и туда приду и буду что-то там делать.

Хотя экосистема для ruby и javascript развиваются намного быстрее чем для PHP.

Или я не прав?


(Ayia) #10

На каком языке и инструменте вы автоматизируете сейчас?

Java, Selenium webdriver, htmlelements

Что вам нравится в этом языке и инструменте?

Java: ничего не нравиться. Java не гибкий и не лаконичный язык.

Webdriver: Хотябы что то делает из коробки. В прочем исходя из того опыта (небольшого) что есть сравнить пока не с чем…

А с чем работали в прошлом?
С#, Ruby, Perl

А на чем вообще можете еще? Хотите что-то поменять?

Могу на Clojure, Python, Ruby, Java, C#, можно было бы продолжать, но языки вообще не важны… Ведь всегда нужно подбирать технологию под проект.
Конечно хочеться что-бы “мир поменялся” и все начали писать хотя бы на функциональных языках… Где то в снах автоматизирую на clojure :slight_smile:

Но правда в том, что автоматизировать нужно на языке на котором пишет команда девелоперов. Потому что тесты существуют и должны бегать на СI после каждого билда что-бы вовремя видеть билдей-плохишей. И фиксить как и приложение так и поправлять тесты в соответсвии с изменением в функционале - должны те, кто этот функционал изменили. Поэтому язык для автотестов должен быть как минимум тем который знает вся команда. Если уж хочеться писать на чем то “левом” то желательно бы иметь для тестов понятный и удобный DSL.

Так что я в который раз, призываю не зацыкливаться на “любимых” языках програмирования а учиться програмировать вообще) А то можно долго восхвалять своих любимчиков и плохить иных, но жизнь проектная от этого лучше не станет:) Ха ха, ну черт, удержаться так сложно)))))))


(Michael Bodnarchuk) #11

Прав, конечно. Но…

Конечно, конкурировать достаточно сложно, но при всех почти равных выбор надо делать на язык команды и язык проекта. Осталось просто чуть поднять планку в PHP, чтобы достичь этих “почти равных”.


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

Привет @Ayia,
А что хорошего ты можешь сказать про htmlelements? Признаюсь, я только мельком глянул на API, заметил что там добавилось парочка атрибутов и врапперы для WebElement. В принципе, без этого можно обойтись, но может я не прав, и разработка пейджобжектов стала намного удобней и быстрее.
Если да, то можно ли парочку примеров?


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

А для перформанс тестирования – встроенный инструмент в Visual Studio, или свой?


(5am) #14

@dzhariy, встроенный. я не совсем правильно выразился.
изначально написал только UI, поэтому и указал C# + WebDriver, а уже позже дополнил web service и performance.


(Mykhailo Poliarush) #15

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


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

Да, у меня VS Pro, и этого инструмента нет (нищий смайлик). Вот ковыряю сейчас JMeter от безысходности. А хотелось бы, чтобы был какой-то фреймворк, да опенсорсный… да чтобы в коде можно было написать какой я тест хочу и что хочу померить.


(Ayia) #17

Привет @dzhariy,

Главная соль htmlelements - в названии - в вот этих вот htmlelement-ax - которые позволяют удобно работать с группами/компонентами/контейнерами других элементов - как с обычными веб-элементами…
То есть используя эту либу мы получаем из коробки то что реализуется руками вот так: http://habrahabr.ru/post/134462/

Плюс получаем вдобавок:

  • готовые “типизированные” элементы типа кнопок и линков и возможность создавать свои
  • от чего редко когда есть толк, так как сейчас все равно почти все пишут через “дивы”, и поэтому нужно создавать по своему такие элементы, если это нужно… А еще неудобство в том, что классы TipyfiedElement и HtmlElement - живут в немножко разных иерархиях - и с ними просто так не поиспользуешь полиморфизм - нужно шаманить… Поэтому я от использования такой фичи отказался
  • матчеры
  • это дает возможность писать красивые ассерты, но до этого у меня еще руки не дошли…

Если кратко библиотека дает реализацию блоков элементов из коробки. Ну и как все из коробки иногда требует танцев с бубном если нужно что то изменить.

К сожалению детальный репорт займет много текста. Да и рано еще…

Вместе с htmlelements я еще использую патерн LoadableComponent. Последний более интересный как подход к использованию PageObject-ов, но тоже имеет свои плюсы и минусы. Даже не знаю пока каких больше:)
Думаю еще позакаляю этот боевой комплект с месяц и вернусь с детальным отчетом/презентацией.


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

На каком языке и инструменте вы автоматизируете сейчас?

Так как работаю с интеграцией, то у нас своё средство тестирования. В качестве языка для тестов используется XML. Для расширения используется Groovy, Java.
Плюс заказные проекты. Но тут как у заказчика деньги лягут. И QTP и RFT и HP Service Test и HP LoadRunner.

Что вам нравится в этом языке и инструменте?

То, что написан нами при моём непосредственном участии. Есть всё, что надо, гибко, можно добавить что-то новое.
По языкам: люблю Java, Groovy. Сейчас Kotlin ещё смотрю.

А с чем работали в прошлом?

По большей части уже перечислил в первом вопросе. Ещё смотрел TestComplete, но какой-то он кривой. Писать на JS, компилировать с его библиотекой. Ну нафиг.
А ещё много писал на Rational Robot.

А на чем вообще можете еще? Хотите что-то поменять?
Если понадобится смогу на всём. И на шарпе немного и на васике. Но не люблю я васик и JS.


(Ayia) #19

Скорость написания не очень увеличивает. Поддержку же делает более удобной. По сути мы имеем возможность не просто вынести или “повторяемую в разных местах группу элементов” или “элементы просто по смыслу выделяемую в контейнер” в отдельный класс, а и применить до полей нового нами созданного типа аннотацию @FindBy и вообще работать с таким “блоком” как с обычным элементом.

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

О цифрах… Все тщательно “зафиксирую” и поделюсь через месяц-другой:)


(Mykhailo Poliarush) #20

@Ayia А мы бы хотели увидеть более детальный репорт :smile: и сразу в базу знаний этот репорт.