понедельник, 2 декабря 2013 г.

Яндекс. Тестовая среда 2013

В эти выходные ездила в Питер, на конференцию Яндекса под названием "Тестовая среда". Раньше Яндекс устраивал более общие конференции, выделяя тестированию одну секцию, а тут, бац, — и полностью для тестировщиков, круто же Smile :)



Правда, мест было мало, и пригласили туда далеко не всех. Но вот мне повезло, меня пригласили! Так что подъем в 5 утра и здравствуй, Сапсан!

Последний бесплатный автобус на мероприятие отходил в 10.30, как раз, когда Сапсан приезжал на вокзал. Успеть за 5 минут проехать 2 остановки как-то сомнительно, так что взяли такси. Таксист поразвлекал нас разговорами, показал несколько достопримечательностей и указал на то, что здание, куда мы едем, все такое красивое, на нем выложены варианты костюмов к балету Стравинского "Петрушка", которые рисовал Бенуа. И правда, очень красивое здание!




А еще в нем есть банкомат Альфа-банка, что нас с коллегой очень обрадовало в связи с закрытием Мастер-банка, — не пришлось голову ломать, где теперь обналичивать...

Поднялись на 5 этаж, а там уже вовсю проходило открытие! Когда мы зашли, как раз всех докладчиков пригласили на сцену, чтобы они рассказали, кто о чем будет говорить, а зрители заранее поняли, кого им искать в кулуарах. Очень удобная схема, кстати. Конечно, для больших конференций типа SQA Days она не прокатит — все равно всех докладчиков не запомнишь, но для маленьких — самое то!

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


А потом начались сами доклады!

1. Прочная основа для автоматизации тестирования
Артем Кошелев, Яндекс


Артем рассказывал о работающей у них связке для автоматизации - Maven, Git, Jenkins.
Что будет, если мы собираем все через ant? Знаете, как там настраивать зависимости? Все складываем в некую папочку /lib, которая в итоге становится одной большой помойкой.

Решили перейти к maven. Он в этом плане удачнее, так как является, помимо всего прочего, еще и репозиторием артефактов. У тебя есть артефакты на локальной машинке, есть некое Community твоей фирмы и есть еще одно большое общее хранилище. Так что, если чего-то нет у тебя, идет обращение выше, а если нет и там, то еще выше.

Таким образом, весь утилитный код отделяется, остается только самое главное, самое основное. Профит!

Теперь посмотрим на систему версионирования. Кто знает про svn? Ага, в зале есть сочувствующие Smile :) Как создавать бранч в svn?

Это когда у тебя ангел на одном плече появляется и говорит "Надо создать ветку", а на другом демон шепчет "Нет! Ты же помнишь, чем это обычно заканчивается!!". Очень, кстати, правдоподобно...

А git - он просто провоцирует хорошие практики, потому что придерживаться их в нем очень просто и удобно!

Ну и, наконец, сама настройка CI с помощью Jenkins. Наколбасил у себя на компе, отправляешь pull-request. Твой код начинает анализировать Sonar:
  • На сложность кода (чем проще код, тем сложнее в нем ошибиться!).
  • На соответствие правилам кодирования.
  • На дублирование кода.
И если все ок, то запускаются тесты, все прогоняется и дальше уже или все ок, или нотификации заинтересованным лицам.

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

2. Как найти общий язык с результатами тестов
Второй докладчик поднял тему понимания результатов автотестов. Конечно, хорошо, когда их умеет читать только тот, кто писал тесты, но все же как-то не очень. И вот ребята придумали сделать свой продукт с блекджеком и преферансом. Open-source, так что you are welcome в помощь! Главная цель продукта — чтобы результаты читал не составить тестов, а другой человек.

Фактически их продукт, Allure являет расширением стандартного xUnit, к которому они прикрутили шаги и аттачменты.
  1. Аттачменты — возможность вставлять аттачи: json, txt, png и тому подобные.
  2. Шаги — тут важна возможность вложенности. Потому что бывает шаг "регистрация", который имеет подшаги "зайти туда, кликнуть сюда", но нам бы хотелось понимать в целом, на чем упал автотест, шаг верхнего уровня. Теперь это возможно!
Ну и прочие технические подробности можно послушать в докладе Smile :)

После двух докладов был перерыв, во время которого гостей угощали вкуснейшими плюшками с мясом, творогом и прочими начинками. Оооо, как это было кстати голодному желудку, который уже 7 часов на ногах и не емши! Опять же, народу мало, очередей нет, супер ) Но вернемся к докладам.

3. Анализ данных для поиска ошибок

Илья — начальник в исследовательском отделе. Он считает, что всю нудную работу должен делать робот, а человек просто получать свою зарплату тестировщика Smile :)

И они уже сделали проект с роботом, который даже выкладывали на хабре. И вот снова делают робота, которому можно скормить N примеров, он их научится парсить "вот тут должно быть то, вот тут се" и потом сможет тестировать и выдавать проблемы.

Как его делали? Ну как вообще тестируют верстку? На что обратит внимание человек? Что вот тут магазин упоминается дважды, дублируется, вряд ли это правильное поведение, а тут поиск выдал пустую страницу, что-то не то...

Вот и сделали робота, который строит некую модель по полученным примерам и потом уже сам понимает, что дублирование — это плохо. Что пустая цена тоже не ахти.

Модель — это набор правил, например:
  1. Блок А есть всегда.
  2. Если есть блок Б, есть и блок В.
Конечно, не без ошибок и ложных срабатываний. Но это все решается скармливанием роботу дополнительных примеров. А так все просто! Вот, например, тестировали турецкий маркет. А это простой маркет. Просто турецкий...

А еще такой робот находит ошибки, которые человек мог бы и не заметить. Вот например...


Забавно, что пример был на книге "Лечение водкой и самогоном" Smile :)

Вообще хочется отметить, что первые три докладчика были просто шикарны. И по стилю презентации, и по стилю ее подачи. Так ярко, задорно! Я прямо даже прониклась и поняла, почему к ним люди работать приходят. Слушаешь ребят, у которых глаза горят, которые с шутками-прибаутками рассказывают о чем-то сложном и думаешь: "Вау, классно, наверное, с ними работать!". Так что конференция еще и пиар-ход компании)))

Кстати, на заметку программному комитету SQA Days, видите эти фамилии в списке участников, знайте, надо брать!

4. Матчеры: маленький шаг для вас и огромный для ваших автотестов

Кирилл рассказывал о том, что когда мы пишем тест, мы хотим, чтобы он был простой и понятный, а все остальное куда-то прячем. Получается такой айсберг, маленький простенький над водой и огроменная глыбина под водой... Как-то нехорошо... А как сделать проще? Добавив матчеры!

Матчер = описание + логика.

Есть библиотечка hamcrest — в связке java + maven подключается в 5 строк. И сильно упрощает читабельность вашего кода! Ну а коллеги из Яндекса ее дополнили и сделали свою клевую версию))

После этого доклада был обед, во время которого устраивали экскурсии по офису. Очень симпатичный офис, надо сказать! Обои в виде библиотеки, книги, книги... Уютные уголочки, где можно сесть с коллегой и обсудить за кофе какие-то рабочие моменты...



Своя кухня в каждом крыле, душ в туалете, эх... Но вернемся к докладам!

5. Генерация тестовых данных. Библиотека ObjectBuilders

Денис поднял интересную тему. То, что вы нафигачили автотестов — еще полбеды. Но ведь вам их потом придется поддерживать! А это уже посложнее будет...

Для простой и легкой поддержки (а мы ведь ценим свое время!) нам нужна независимость, легкий перезапуск и прозрачность.

Правда, в тему независимости Денис высказал пример, который наглядно показал, что речь идет о GUI тестах, хнык. У нас не GUI...

Но продолжение меня заинтересовало. Вместо набора связанных объектов делаем граф. И в тестах мы описываем свойства графа! А не объектов. Делаем один дефолтный граф и в тесте его частично перекрываем...

У нас все немного по-другому, но чем-то похоже. Делаем дефолтное, потом в тестах перекрываем. Потом мы пришли к тому, что все эти перекрытия можно выкинуть нафиг, немного доработав сам фреймворк. А еще столкнулись с другой проблемой, с которой ребята из Яндекса не сталкивались (я уточнила во время сессии ответов и вопросов).

Но в любом случае, доклад натолкнул меня на мысль очередной статьи-размышлизма на конфлюенс по рабочим моментам. Это уже третья в очереди, теперь бы их еще все написать Smile :)

6. Автоматизация в мобильном тестировании

Мобильные приложения я не тестирую, поэтому слушала для общего развития. Интересно. Ребята решили пойти на риск и проводить тестирование на эмуляторах, а не на реальных устройствах. Моя коллега, которая работает с мобилками, этому немного удивилась. Но докладом прониклась, долго пытала рассказчика в кулуарах и ходила потом счастливая, "вот бы и мне тут работать, тут так клево и интересно!".

Ох, смотрите, ребята из Яндекса, не прозевайте свой шанс Smile :)

7. Графики и Яндекс.Танк

8. Автоматизация нагрузочного тестирования
Я объединила эти доклады в один, потому что рассказчики сами так планировали, сначала Алексей рассказывает концепцию, потом передает слово Григорию. Правда, организаторы уговорили его ответить на вопросы ))

Ребята рассказывали о своей программе нагрузочного тестирования - яндекс танке. Показывали, какие графики она умеет строить, как по ним что-то понять, как это все заавтоматизировать и прочая прочая... Очень хорошая вводная!

Графики строятся с помощью инструмента Graphite, а метрики сервера собираются для графита демоном diamond.

9. Игровые механики в тестировании

Закрывал конференцию Олесь с рассказом о том, какие фишечки они внедрили для игры внутри работы. Они сделали личные страницы сотрудников и там уже...
  • Главная страница — зал славы. Попадают все, кто хоть как-то когда-то стрелял из танков. Один раз пострелял — и уже навсегда в зале славы! Есть, конечно, проблема, что страница уже большая, но зато прикольно))
  • Рядом с людьми нарисованы звездочки — это звания. Капитан, адмирал и пр.
  • Спасибки!!! О, я уже не в первый раз слышу про эту технику, и она мне очень нравится Smile :) Тыкаешь на любого человека и тебе предлагают отправить ему сообщение: "Я хочу сказать тебе спасибо за что, что...". А человек получает в личку такую спасибку и тихо радуется. Это всякие там "спасибо, что ты у нас есть, спасибо за помощь" итд. А грустными зимними вечерами можно открыть свои спасибки и получить заряд позитива. Классная тема!!
  • Командир танка — как в Foursquare, там можно стать мэром, а тут — командиром танка.
  • "Красивые номерки" — номер запуска тестов. Тут есть печалька — красивые номерки часто уходят роботам Sad :(
  • Личная "стата".
  • Бейджики — ачивки, ачивки!!! Всего около 20 штук самых разных.
Рассказал Олесь и о проблемах, связанных с таким подходом. Главное, чтобы это была просто игра! Если от этого зависит зарплата, то все, пиши пропало, люди будут работать ради ачивки, а не ради работы как таковой. Так что нет, у них нельзя поискать по некому фильтру, кто умеет то, кто се. Это просто игра.

И да, прежде чем внедрять геймификацию, подумайте, а правда ли она вам нужна. Это тоже затраты на разработку и поддержку... Может, в маленьком компании оно и нафиг не сдалось, только потеря времени. И об этом не стоит забывать, просто кидаясь внедрять "прикольную новинку"!!!

На такой веселой ноте и закончилась конференция. Потом был небольшой перерыв и секция ответов на вопросы, а затем ребята разбрелись кто куда.

Я с конференции унесла несколько светлых идей, встретила знакомых людей, москвичей, с которыми видимся только на конференциях в других городах, питерцев, которых знаю только по скайпу, ну и прочая. Так что и позитив и знания. Здорово! Спасибо ребятам, будем через годик ждать продолжения!! Надо же хоть где-то видеться с коллегами Smile :)

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

  1. Интересно, будет ли видео с конференции :)

    ОтветитьУдалить
    Ответы
    1. Этот комментарий был удален автором.

      Удалить
    2. Лена, да, видео опубликуем недельки через 2.

      Удалить
  2. Для восстановления исторической справедливости таки нужно сказать, что таксист немного не угадал -- картинки на фасаде БЦ Бенуа это эскизы костюмов к балету Стравинского "Петрушка", а рисовал их, естественно, Бенуа :)

    ОтветитьУдалить
    Ответы
    1. Как же много Вы знаете, Алексей :)
      Спасибо))

      Удалить