Четвёртый год пишу на C#, немного на Java. Сменил два места работы за это время. Так же часто пишу скрипты на JS.
В общем и целом, меня всё устраивает, C# востребован, сам язык мне как нравился, так и нравится. На Java сейчас уже год ничего не писал.
Смотрел в сторону Golang, но руки не доходят.
На мой взгляд, качественные open-source решения очень положительно влияют на развитие автоматизации.
Взять тот же самый Selenoid, который просто великолепно проявляет себя.
Главная проблема автоматизации тестирования в N-году - это найти понимание со стороны участников проекта о месте и назначении автоматизации тестирования. И умение правильно считать ROI и целесообразность тех или иных вещей.
Главная проблема - говнокод и суперуниверсальность этого говнокода.
Когда за сложностью кода в тесте сложно увидеть логику теста и проверок в нём.
На втором месте: «не хочу/ не буду» это проверять, буду только то, что мне надо. Какое ещё надо? Любое действие имеет последствия, не проверяешь их - не пиши тесты. Не трать время.
— Что, солдат, ссымся?
— Так точно, ссусь!
— Это, солдат, не беда. Такая сегодня экологическая обстановка. Все ссутся. Я ссусь. Даже главком пысается, бывает. Но по ситуации. Что же нам из-за этого, последний долг родине не отдавать? Твой позорный недуг мы в подвиг определим. Пошлем в десантники. Там ты ещё и сраться начнешь.
А кто нынче не говнокодит? Такая экологическая обстановка.
А если по делу, то штука субъективная, и сильно зависит от оценивающего, его уровня подготовки и его погруженность в проект. Если не знать целей и нюанса проекта, то будет очень сложно понять по коду насколько он соответствует термину “говнокод”, будь он хоть трижды самодокументирующимся.
По поводу “хочу/не хочу” проверять. Это вопрос к адекватности постановки задачи больше относится. Я могу привести в пример, когда меня просили делать e2e тест с мягко выражаясь не совсем правильными требованиями. Причем я то был со стороны одной из систем, которая была вообще в середине всей этой цепочки. А часть цепочки вообще выпадала и проводилась вручную. И по всем оценкам профита от этого теста было бы чуть менее чем нисколько и ничего кроме отвлечения от решения реальных проблем не давало.
3.5 года работаю в данной сфере, начал на Java, сейчас проект на C#. В проектах использую BDD подход (вначале был Cucumber, теперь SpecFlow). Думаю начать разбирать python, как еще один дополнительный язык. Основная проблема (по крайней мере сейчас), что приходится делать как мануальное тестирование, так и автоматическое.
Столкнулся с практически полным отсутствием русскоязычного коммюнити по jest/puppeter. Да и, если честно, англоязычное весьма скудное. Это к вопросу о том, над чем пришлось ломать голову в 2018 году.
Смотрю на результаты опроса - почти 20% автоматизации на JS, и не исключено, что этот процент будет только расти.
Мне всегда для автоматизации UI или API хватало Java и Python, а сейчас все больше вакансий требуют JS и, кроме того, знание различных фреймворков - в зависимости от того, на чем написано фронт-энд (Protractor, WebDriver.io, Nightwatch, Mocha, и далее). С JS никогда дело не имела, и не знаю, есть ли смысл его изучать глубже)
Возникает вопрос - а в чем преимущества JS перед Java или Python?
Преимущество видимо в том, что можно писать фронт-энд и тесты на него на одном языке. А ещё в армии «голодных» скриптизеров, готовых работать за еду и демпинговать цену тру жава кодеров. ИМХО.
При всем уважении к JS писать бы на нем автоматизацию я бы не стал, зная сколько полезных утилит и решений есть уже в Python. Зачем он действительно нужен в стеке автоматизации - ради написания скриптов для Selenium когда каких то методов не хватает.
Как написали выше - не нужно тащить в компанию java/python/ruby/“что-то-еще” в качестве доп. ЯП только для тестирования, со всей инфраструктурой, если уже используется JS (а он в вебе уже точно используется).
Низкий порог вхождения. Это и минус, и плюс. Запишу как плюс.
Удобство развертывания. Все же npm/yarn, ИМХО, получше чем gradle/maven/pip и т.д. npm пакеты живут всегда локально, довольно быстро устанавливаются. Если не смотреть на ужасающий размер node_modules).
Множество библиотек на все случаи жизни.
Удобство самого языка. За один только jSON объект в JS - ставлю большой плюс. А если прикрутить TS - становится совсем приятно.
Java лидирует в автоматизации, но Python и JavaScript уверено держатся за ней. Популярность и объем использования JavaScript в автоматизации определенно набирает обороты.
С другой стороны количество автоматизаторов, которые бы хотели автоматизировать в основном только на Python или JavaScript значительно увеличилось. Также стоит заметить набирающую желаемость использования Kotlin и TypeScript.