13 февраля 2017

Напочитать: Мобилизация автоматизированного тестирования


1. О том как расширять Calabash с помощью UIAutomator рассказывают ребята из Badoo
2. Что такое Robolectric и надо ли оно вообще - от eLegion.
3. Потестировать свой сайтик на соответствие представлениям гугла о верстке мобильных сайтов теперь можно за счет самого гугла. Детали тут.
4. LinkedIn выкинул в open source BluePill - свою приспособу для параллельного запуска тестов на IOS.
5. Подборка онлайн-курсов по мобильной разработке - врага надо знать в лицо.
6. Курсы яндекса по мобильную разработку, интерфейсы и дизайн - тут.
7. Про то как тестируют в Cloudera: mrunit  для unit-тестирования Map-Reduce Job и Fault-Injection Testing
8. Gremlin-ы для тестирования пользовательского интерфейса - старая идея Monkey Testing в новом обличии
9. Помните макросы в MS Word/Excel ? Google вмутил тоже самое у себя - Google App Script.
10. Пацаны из SpringTest окончательно упоролись (хотя казалось бы куда уж дальше, и так Spring) и начали писать вложенные друг в друга тесты. И все бы ничего, но эти же поцы причастны к JUnit 5 (Lambda), так что скоро это станет стандартом де-факто пойдет в массы .
11. Dex Test Parser или как LinkedIn борется с граблями Android разложенными в области тестирования. 

07 февраля 2017

Книга: Agile Ретроспектива

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


Вообще тема ретроспектив меня интересует очень давно - я даже и сам писал на эту тему.
Я действительно считаю ретроспективы сильнейшим инструментом.
Собственно, фундаментальным трудом в области ретроспектив проектов является книга Норма Керта, и волей-неволей любую книгу  на тему ретроспектив я буду сравнивать с ней.

Книга Дианы Ларсен и Эстер Дерби никак не претендует на звание фундаментального труда.
Скорее методичка для "отчаянных агилистов", которые забыли про ретроспективу .

Что смутило с самого начала и не отпускало до конца книги - пример ретроспективы которую команда проводит за час и каждый раз у команды новый ведущий.
Итак, что предложит вам книга:
1. Общее описание процесса ретроспективы
2. Каталог активностей (упражнений)  для каждого этапа, сопровождаемый комментариями а-ля "умелый фасилитатор-самоучка".
3. заключительные мысли.


За что книгу можно похвалить:
1. за хороший каталог активностей (упражнений). Действительно их там не мало, по сравнению с книгой Норма Керта. Особенно понравилось , ИПОЗ.
2. Мысль о том что "день рождения - это ваша ретроспектива которая всегда с вами"  - блеск.
3. Менять помещение для свежего взгляда - тоже очень хорошая мысль, проверял на практике сам.


За что книгу хочется поругать :
1. Утверждения о целях на ретроспективу - на мой взгляд, это скорее редкость. Обычно ретроспектива и служит для поиска цели, а не отталкивается от нее.
2. Примерные выкладки по времени ретроспективы, вида "недельная итерация -часовая ретроспектива" - бред. Существует нижний предел времени, меньше которого ретроспективу (качественно!) провести невозможно, и он, по моим наблюдениям, в районе 1,5-2 часов. Все что выше - вполне валидно, все что меньше - не возможно.

Итого: читать книгу если и стоит то только после того как прочтете книгу Норма Керта, она даст вам знаний больше.

17 января 2017

Напочитать: DEV-ственные Heap-стеры


1. нечеткие регулярные выражения - случайно попали в поле зрения (Осторожно, хипстеры! По ссылке sourceforge)
2. Netflix сливает в open-source очередную порцию своих проектов: Hollow и Conductor
3. jcmd прямо в коде. Прикрутил себе кое-куда, удобно чо.
4. О том как ByteBuddy может помочь в борьбе за SecurityManager да и вообше много про SecurityManager в этом бложике.
5. А вот тут можно заглянуть под юбку java разработке в Facebook - jcommons
6. Spring тоже решил ударится об реактивщину (на самом деле давно) - Reactor. Мне это все начинает напоминать JavaScript-мир - каждый задрот на коленке пилит свой новый велосипед, думая что ну вот в его-то исполнении колеса точно будут круглыми. А вот тут вот еще можно посмотреть примеров холодных и горячих  стримов.
7. Надоело наблюдать как все python-ируют на Machine Learning (привет, Coursera)? Не расстраивайтесь, на Java тоже можно. Ну и канальчик от Гугла на ту же тему - вот да.
8. Что  такое service images и executable images и чем они отличаются в Docker? Нет, не подумайте, у меня не докер головного мозга, но вот у некоторых  - да.
9. Конструктор дэшбордиков от NASA - OpenMCT. NodeJS, если что.
10. MutabilityDetector для ваших хипстерских POJO-ей.
11. Огромнейшая простыня про Nashorn - тут.
12. Про то как хипстота из гугла запускает Python на Go - Grumpy.
13. метод 3-I (Isolate-Improve-Inline)  или как правильно рефакторить. Руководство для начинающих хипстеров.
14. failsafe - не hystrix единым.
15. Ну и напоследок  набор хипстерских git alias-ов

28 декабря 2016

Напосмотреть: GTAC 2016

Каждый год я подаю заявку на GTAC и каждый год получаю отказ.
Я уже даже привык.
Но каждый год отсматриваю доклады.

Итак, мой личный рейтинг с GTAC 2016
1. How Flaky Tests in Continuous Integration - собственно говоря гугл решил привлечь математика к проблеме моргающих тестов. Словил несколько инсайтов, буду курить тему дальше.



2. Automating Telepresence Robot Driving - лидар, пластиковый стаканчик и другие трюки для тестирования системы телеприсутствия. В этом докладе нет большой технической жести, но именно так выглядит тестирование будущего (или будущее тестирования ? ). Таких доклады вдохновляют работать дальше.



3. Using Test Run Automation Statistics to Predict Which Tests to Run - доклад о том на какие ухищрения приходится идти когда запуск тестов длиться долго, а тестировать все равно нужно. В принципе ничего нового, гугл о таких практиках у себя рассказывал еще в 2012 году, но поражает масштаб - словить проблемы запуска всех тестов с которой гугл борется на масштабе 3,5 миллионов тестов и 125 миллионов выполнений тестов в сутки можно и на 30 000 тестов.  Понятно, что Unity  - не Google, финансовая и ресурсная база разные, но кто ж вам гарантирует что вы не окажетесь в подобной ситуации с 10000 тестов. It depends (c)




Ну и еще пара интересных докладов:
Finding Bugs in C++ Libraries Using LibFuzzer  - отличный рассказ про методики фаззинга, теоритическая часть очень понравилась.
OpenHTF - The Open-Source Hardware Testing Framework - ребята из гугла продолжают биться за автоматизацию, в том числе и на железе. Python (не, ну а что еще можно запихнуть в железяку? ), SL4A (про который Сергей Высоцкий рассказывал еще в далеком  2013 в Киеве), плагины.



Мысли по поводу конференции:
1. GTAC уже не торт Программный коммитет конференции налажал - некоторые доклады шваховые, подготовка некоторых спикеров оставляет желать  лучшего.
2. Проблемы которые были в индустрии 2-3 года назад не решены ни кем и ни чем, остаются на своих местах, ждут своих героев и инструментов.
3. Тестирование железяк как нараждающийся тренд.

Anyway GTAC остается самой значимой (лично для меня) конференцией  в мире в области автоматизированного тестирования.




Сайт конференции 
Плейлист со всеми докладами.

14 декабря 2016

Напочитать: про уродов и людей


2. Как правильно негативно фидбечить подчиненных - спорно по ряду моментов, но тем не менее.
3. Про недостаток скуки у подростков  и что из этого выходит.
4. Про наказания и как с этим быть менеджеру.
5. Серотонин снижает восприимчивость отрицательных явлений, эндорфины вызывают эйфорию бегуна и другое интересное про нейромедиаторы (1,2,3)
6.  Замечательная Camilla Fournier об обратной стороне (сторонах) инженерных организаций.



И ковыряя ее выступление наткнулся на описание карьерное лестницы инженера в ее компании.(тут вот еще документик и поясниловка, очень интересно да).

7. Об синдроме самозванца (impostor syndrome )


Ну и в качестве десерта мысль от Хенрика Книберга
Here’s the thing. Suppose you introduce a change X to your workplace, and then business improves noticably. That doesn’t mean X caused the business to improve. Well, MAYBE it did. Or perhaps business improved for other reasons, and X was actually detrimental, and business would have improved even more without it. So did things work out well because of the great X, or despite the lousy X? You’ll never know, unless you could rewind the clock and play out the same scenario without X. Correlation doesn’t imply causation.

So people like me who work with organizational change, we are in the business of pseudo-science. We get customer feedback and anecdotal evidence, but we can’t actually prove that we are doing any good, it’s just opinions and observations and guesswork. I think that’s fine, but let’s be honest about it 🙂

30 ноября 2016

Напочитать: Про разработку

Разгребаю скопившееся летом. 
1. Отличный доклад с обзором проблем распределенных систем.
2. В очередной раз про Property-Based Testing 
3. Как писать интеграционные тесты с ElasticSearch и LDAP рассказывает Micha Kops. Вообще, надо сказать, что его учетка на Bitbucket вызывает во мне чувство, которое можно передать только одной картинкой. Но молодец, да.


4. Отрелизили 20 версию Guava, в  которой появилась кучка нового, в том числе и пакетик с классами про графы.
5. Весьма интересный и крайне простой инструмент  - Architectural Decision Records. Только я бы не оформлял каждое  решение в отдельный документ, их надо слегка смантически структурировать.
6. Пространный набор предъяв к Docker. Обоснованно, чо.
7. О том как тестировать код с RxJava - тут.
8. Отличная байка от Тагира Валеева про лямбды и анонимные классы.
9. Тяжелая наркомания про генерацию исходного кода или диалекты Java - recaf
10. Рассказ про нюансы ProtoBuf
11. Бенчмарк (несмотря на то что Шипилев не велит) 114 алгоритмов хэширования.
12. Rocket Data и Falcor - два очень интересных проекта под IOS и Android от LinkedIn и Netflix соответственно которые представляют собой Middle-Tier для данных  в мобильных приложениях.
13. В Google уже совсем охуели в атаке перестали заморачиваться на тему вопроса "зачем оно надо?" и захерачили еще один фреймворк для DI - Tiger.
14. Yahoo (жив, курилка) заопенсорсил Pulsar - своя Kafka с преферансом и куртизанками.

Ну и напоследок - философское :
Probably the biggest problem is the state-space. Software is highly non-linear and discontinuous, unlike for example a bridge, or most other physical objects. If you change or remove a single bolt from a bridge, it is still the same bridge and its characteristics are largely the same. You need to remove quite a number of bolts for that to change, and the effects become noticeable before that (though they do get catastrophically non-linear at some point!). If you change one bit in a piece of software, the behavior is completely unpredictable. It could be the same, it could just crash, it could quietly corrupt data. That's why all those corner cases in the layers matter so much. Again, coming back to the bridge, if one beam has steel that has a slightly odd edge-case, it doesn't matter so much, you don't have to know everything about every beam, as long as they are within rough tolerances. And there are tolerances, and you can improve your odds by making things with tighter tolerances than required. Again, with software it isn't really the case, discrete problems are much harder than continuous ones.


16 ноября 2016

Напочитать: Автоматизация тестирования 18+


1. Запускать тесты c использованием Sikuli на гриде - Sterodium.
2. European Testing Conference озвучила даты и выложила видео с прошлого года.
3. Два очень похожих доклада про верификацию распределенных систем. Взгляд скорее академический, чем прикладной. Но интересно. Ines Sombra и Caitie McCaffrey.
4. JSONAssert - неплохо, но я бы стал пользоваться JSON Schema.
5. Facebook открыл то о чем они говорили еще в 2013 - инструмент для screenshot-based testing под iOS.
6.  Аналог BrowserMob Proxy только написан на Go и от Google - martian, и апишечка для управления ей в комплекте.
7. Продолжая тему управляемых проксей, мой (пусть уже бывший) коллега Николай Мазуркин запилил  проект NetCrusher - управляемая прокси на чистой джаве для интеграционного тестирования.  Тредик с доп.информацией и срачиком на фейсбучке.
8. Специфика тестирования IOS в исполнении LinkedIn
9. Зарелизился Watir 6.0 - интересно кто-то им (еще) пользуется интенсивно ?
10. Опыт Facebook о тестировании производительности клиентского кода. TL;DR: замокать и запроксировать все нахер и радоваться что находите регрессию на последней миле и пофигу что мультипликация ошибки может дать сильно больше.
11. Be prepared to allocate at least one week a quarter per test to keep your end-to-end tests stable in the face of issues like slow and flaky dependencies or minor UI changes - говорит нам Гугль.
12. Артем Кошелев про docker для тестирования на Android устройствах и фильтрацию устройств и эмуляторов.
13. Про то как в Netflix тестируют на реальных устройствах.
14. Про то как в Badoo патчили Selenium
15. LinkedIn опенсорснул  TestButler - тестовый агент который помогает жить на Android легче и веселее.
16. Цитирую
There, tests must demonstrate stability for at least one week before being promoted.
...
Once a test has demonstrated its reliability, it is promoted into one of two sets. The first set, BVSBlocker, contains tests that indicate whether a build is even worth further testing. A build which fails Blocker isn’t deployed to a testing environment, because either games aren’t starting or there are multiple severe crash bugs affecting the game. Its counterpart, BVSCore, is our core set of functional tests, including tests for every champion ability. - и другое про автоматизацию тестирования самой популярной игры 2016 на мобильных  устройствах от Riot Games.

Ну и на десерт - чем тестировщики в гуглях занимаются:
To give you an idea of what TEs (Test Engineers - прим.ред.) do, here are some examples of challenges we need to solve on any particular day:
  • Automate a manual verification process for product release candidates so developers have more time to respond to potential release-blocking issues.
  • Design and implement an automated way to track and surface Android battery usage to developers, so that they know immediately when a new feature will cause users drained batteries.
  • Quantify if a regenerated data set used by a product, which contains a billion entities, is better quality than the data set currently live in production.
  • Write an automated test suite that validates if content presented to a user is of an acceptable quality level based on their interests.
  • Read an engineering design proposal for a new feature and provide suggestions about how and where to build in testability.
  • Investigate correlated stack traces submitted by users through our feedback tracking system, and search the code base to find the correct owner for escalation.
  • Collaborate on determining the root cause of a production outage, then pinpoint tests that need to be added to prevent similar outages in the future.
  • Organize a task force to advise teams across the company about best practices when testing for accessibility.

31 октября 2016

Напосмотреть: Технический

1. Social hacking в действии или почему если вашу компанию захотят взломать - взломают.

2. Что такое machine learning и нейросети в примерах и картинках

3. Подробный рассказ о том что такое JUnit 5 (Lambda)


4. Артем Ерошенко про приготовление облачных тестовых стендов


5. Выученные уроки от Netflix про микросервисы. В принципе ничего нового, просто концентрированно. (А вот тут можно посмотреть откровения от Uber чтобы  понять что бывает когда учишься только своих  ошибках)

6. О том что интересного можно нарыть в вашем репозитории с кодом, коммитах и прочем.
MINE SOCIAL METRICS FROM SOURCE CODE REPOSITORIES from Øredev Conference on Vimeo.

7. Роман Поборчий о реальных и фундаментальных проблемах A/B-тестирования.

17 октября 2016

Badoo TechLeads Meetup

В субботу, 15 октября в Москве прошел Badoo TechLeads Meetup.
Я хотел было проанонсировать это событие, но на момент когда начал писать анонс регистрация уже была закрыта, так что он был бы излишним.

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

Место 

Москва, Цветной бульвар, д.2.
В этом здании находиться московский офис Badoo а на первом этаже в кафе было само мероприятие.
Места хватило всем.

Организация 

Все хорошо, ничего особенного сказать не могу.

Доклады 

"Мобильный веб: назад в будущее" Виталий Шароватов,Руслан Байрамкулов
Ребята рассказали о том как они ускоряли релизы в мобильном вэбе. Опыт лично мне был довольно близок, да и проблематика у нас с ними схожая.

"Багфиксинг процесса разработки в iOS: взгляд с двух сторон", Екатерина Николаенко, Катерина Трофименко

Интересный рассказ про модификацию процесса релиза iOS приложений. Очень удивила роль "Багфиксера", но потом вспомнил про целый "Stabilization team" в Facebook :).
Вообще  чем больше наблюдаю эпопею развития мобильный приложений, тем чаща на поверхность всплывают вот какие мысли:
1. Мобильные приложеньки - это тот же самый десктоп из 90-х, когда софт писали на болванку/дискеты и он ехал к потребителю, где ставился в совершенно непонятном и незнакомом окружении.
2. Инструментальные средства разработки мобильных приложений конечно эволюционируют, но до иниструментов отладки и диагностикти web-a и server-side им как до китая раком очень далеко. И ждать чудес не стоит - либо начинать строить инструменты сами, либо пользоваться webview, со всеми вытекающими отсюда.
3. Проблематика расширяющейся матрицы устройств - одинковая у всех, особенно в контексте Android и китайских телефонов. Думается мне что вендоры скоро подрежут открытость платформы.


“Технологии vs коммуникации: что важнее?", Альгис Фатеев
Доклад о неизбежной эволюции процессов в Avito.
Отличные формулировки мыслей - "занимайтесь своими процессами сами, если не хотите чтобы ими занимались аудиторы от акционеров".
Мне кажется многим организациям не хватает как раз той самой сборной аудиторов от акционеров, которая регулярно бы трясла их.


Был еще четвертый доклад, но я его не слушал - по ряду объективных причин.


Итоги

Любая большая конференция, которая будет посвящена процессам и организационным трансформациям обречена скатиться в унылое говно.
Поэтому не стоит делать больших конференций про процессы разработки и организационные изменения  - не нужно преумножать объем говна во вселенной, поверьте его и так достаточно.
Лучше сделать небольшой митап.
Badoo первые (насколько мне известно) кто ступил на этот путь. Молодцы, чо.

Презентация тут, видео воспоследует.

08 августа 2016

Напочитать: Психо



1. О том, что геймдеэв потерял всякую совесть и страх и манипулирует людьми.
2. Зачем вам нужна девочка на телефоне и что хотят все эти люди - социнжиниринг для атак на  офис.
3. Иерархия оказалась вредна для кооперации в группе - да,ладно ?!?!?
4. Тут пошла волна выступлений,  подкастов и статей  про то как быть программисту-тестировщику в возрасте. Тренд собственно туда и идет - отрасль взрослеет, как ни крути.
5. Зак Холлман, который раньше был в GitHub говорит нам следующее -
But look around: how many small, less-than-50-person startups are doing work like that? The dirty secret is most startups for the first few years are glorified CRUD apps, and finding well-rounded and diverse people who can have the biggest impact tend to be the ones who are comfortable wearing a lot of hats.
ну и далее, о том почему Startup interviewing is fuked.  И, да, бложек Зака попал в реестр блокировки РосКомПозора , но я думаю вы справитесь :)
6. О том что нужно нанимать личность, а не сборник навыков/ответов на вопросы.
7. Эффект IKEA - люди склонны переоценивать стоимость если они вложили туда немного своего труда.
8. О том что такое внутренние коммуникация и зачем оно надо.
9. То чаво не может быть - Open Salary. Очень интересно если кто-нибудь еще накидает ссылок на эту тему.
10. Google открыл свой курс для менеджеров.
11. Сет Годин про то что нужно делать/делают маленькие команды на ежедневной основе.
12. Как оценить что угодно методом Ферми.
13. Паттерны холакратии - посмотрите на свою орг.структуру в контексте этого, может чего узнаете.
14. Почему большинству студентов пиздец на рынке труда
Ну и самое главное - Бертран Рассел, о важном
Пассивное принятие знаний учителя легко даётся большинству молодых людей. Оно не подразумевает усилий независимого мышления и кажется разумным, ведь учитель знает больше учеников. К тому же, это способ завоевать благосклонность учителя. Однако привычка пассивного принятия имеет катастрофические последствия для дальнейшей жизни. Она заставляет людей искать себе лидера и принимать в качестве лидера любого, кто обосновался в этом положении. Она порождает власть церквей, правительств, партий и прочих организаций, посредством которых простых людей обманным путём заставляют поддерживать старые системы, губительные для страны и для них самих. Если бы целью было научить учеников думать, то вместо того, чтобы заставлять их принимать готовые выводы, образование осуществлялось бы по-другому: было бы меньше спешки в объяснении, больше обсуждения, больше возможностей для учеников выражать свои мысли. И, в первую очередь, было бы стремление возбудить любовь к интеллектуальному поиску.