четверг, 28 июня 2012 г.

Грешки Автоматизатора. Часть 4. Выбор языка

Я как-то давно обещал написать по этому поводу пару строк - исполняю.

Еще ни один стартап не умирал из-за того, что выбрал неправильный дистрибутив Linux - Пол Хаммонд

Да-да. Все именно так. Не имеет абсолютно никакого значения какой язык вы выберете для написания автоматических тестов, если вы вообще взялись этот самый язык выбирать.

Да, иногда мы привязаны к инструментам, которые не дают нам писать на некоторых языках. Но это, как правило, проприетарные инструменты для тестирования веб-морды. Да даже у них, как правило (не смотрим на MS), выбор языков на которых ожно писать довольно широкий.
Да, под разные инструменты/области автоматизации на разных языках разное количество готовых ништяков. Только все равно всеми вы никогда пользоваться не будете, хотя бы потому, что знать их все в наше время практически невозможно, а возникают они быстрее, чем грибы после дождя.
Да, у вас могут быть разработчики, которые знают хорошо какие-то весьма конкретные языки. Но тут тоже куча ньюансов. Во-первых, тесты писать вам, а не им. Во-вторых, если вы очень надеетесь, что они будут вас активно всему этому обучать - вы несколько переоцениваете количество свободного времени у них, и недооцениваете количество времени, которое вам придется потратить на написание. Большую часть изучения деталей вам придется сделать самим.

Можно продолжать еще долго, но суть останется прежней. Попытка обосновать подобными вещами выбор языка это такое же шарлатанство, как и подсчет ROI, автоматизации или прогнозирование цен на нефть на 30 лет вперед.

Собственно главный критерий один - как хорошо лично вы знаете тот или иной язык. Все.

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

Наличие API или хелперов в количестве на том или ином языке - странный аргумент. REST API? Нет вопросов вообще. Хелперы и хуки автоматизации? Если они написаны нормально, то проблем с вызовом быть не должно.

Вы не знаете никаких языков? Учите то, что проще учить - Ruby, Python (это просто пара примеров). Учить Java или еще какие C++ - это путь самурая, но не тот случай когда вам нужно как можно быстрее выучить необходимый минимум (а автоматизация - довольно узкая область, там нужен довольно ограниченный набор) для написания автоматических тестов и тестовой инфраструктуры. Да, какие-то языки было бы неплохо подучить, чтобы набить себе резюме, но это вообще не имеет отношения к выполнению задачи.

10 комментариев:

  1. А как же срачь на тему строгой типизации?!?!

    ОтветитьУдалить
    Ответы
    1. А чего сраться? Динамическая типизация для задач тестирования рулит безбожно. Иначе нет пути

      Удалить
    2. Если бы на моём месте был нормальный человек, срачъ бы уже начался!
      Контроль возвращаемого результата наше всё!!!

      Удалить
    3. Кстати, я не удивлюсь, если какой-нибудь стартап таки умер от того что выбрал Windows вместо Linux :)

      Удалить
  2. IMHO очень важно что использует подавляющее большинство. В автоматическом тестировании, это Java. Если бы меня попросили написать автоматические тесты на Питоне, то я бы попробовал убедить, что писать надо всё-таки на Java.

    Основные причины:
    1) проще получить помощь
    2) более востребовано на рынке
    3) фичи могут появляться быстрее, т.к. WebDriver написан и ориентирован на Java. Я не уверен, что эти же разработчики выпускают биндинги и *для всех* остальных языков. Скорее всего их поддерживают другие люди, а это значит, что биндинги будут выходить позже.
    4) больше "готовых ништяков" (не нужно изобретать их самому)

    Одним словом, основная идея в том, что лучше держаться mainstream-а.

    ОтветитьУдалить
  3. П.1 актуален только если вообще нужна какая-то помощь.
    П.2 не про работу, а про шкурное. Хотя я с питоном проблем в трудоустройстве не испытываю :( может я неудачник

    Остальное не очень соответствует действительности :)

    ОтветитьУдалить
    Ответы
    1. Насколько я понял твой пост рассчитан на новичков. Либо новичков совсем (которым нужно ещё и какой-то язык программирования изучать), либо новичков в автоматизированном тестировании. Это так?

      Более опытные люди, как правило, не задаются этим вопросом, вернее, задаются, но сами и довольно быстро находят на него ответ. Если кто-то спрашивает что ему выбрать, то он либо неопытный, либо неуверенный в своём выборе (есть ещё вариант: ищет тему для лулзов).

      Так вот, я утверждаю, что всем начинающим точно нужна помощь. Разумеется, чем опытнее человек становится, тем меньше и реже ему эта помощь требуется.

      Да, пункт 2 немного шкурный. Но думать о нём, имеет смысл, чтобы развиваться в верном направлении. Скажем, у HP была какая-то штука для автоматизации тестирования. Имеет ли смысл её изучать? По моему мнению, нет, т.к. шанс найти потом работу, где она будет использоваться, не велик.

      Также не совсем понял, причем здесь ты? Или ты думаешь, что все такие же крутые как ты? Я сомневаюсь, большинство из нас, программисты довольно средние и то, что получается у тебя, у многих может не получиться. Ты ведь новичкам советы даешь, так почему же не учитываешь их уровень?

      Удалить
    2. Мой пост ни на кого не рассчитан. Это просто мое мнение по поводу ряда аргументов, которые я считаю плохими ("делай так потому что..."). Аргументы реальные, к сожалению.

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

      Я тут по одной простой причине - это мой блог. Я не считаю этичными аргументы карьерного характера. Я не считаю этичным resume driven development. Мягко говоря я таких людей очень не люблю.

      Еще вопросы?

      Удалить