TOП-10. Разбор лучших докладов в свободном доступе. Heisenbug 2017 Moscow

Действуем по старой схеме: я для вас отсматриваю подряд 10 докладов, делаю краткое описание содержимого, чтобы неинтересное можно было выбросить. Кроме того, с сайтов собираю ссылки на слайды и описания. Полученное сортирую и выдаю в порядке увеличения рейтинга — то есть в самом низу будет самый крутой доклад. Оценки — это не лайки на YouTube, а собственная оценочная система, она круче лайков.


Предыдущие части: JBreak 2017, JPoint 2017 (обе конференции были про Java).


На этот раз объектом изысканий будет Heisenbug 2017 Moscow — известная конференция для тестировщиков (а также программистов и менеджеров команд, как написано на главной странице сайта).


В посте присутствует зашкаливающее количество картинок и ссылок на YouTube. Осторожно, трафик!


Disclaimer: Все описания являются моим личным мнением. Всё написанное является плодом моего больного воображения, а не искажёнными цитатами докладчиков (это предостережение написано для того, чтобы докладчики меня не побили). Если кого-то случайно обидел — пишите в личку, разберёмся. Но в целом, давайте думать так: если бы BadComedian каждый раз спрашивал у Фонда Кино, что ему стоит говорить или не говорить — снял бы он хоть один ролик?


dlrnacdkbtpllajfxpgwukd7m-i.jpeg


10. Selenide Puzzlers

Спикер: Алексей Виноградов, Андрей Солнцев; оценка: 4,31 ± 0,14. Ссылка на презентацию.



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


Тема этого паззлера — фреймворк для UI-тестирования Selenide. Вопросы доступны для новичков с поверхностными знаниями фреймворка, но об некоторые из них сломают зубы даже профессионалы.


Кстати, Андрей Солнцев — это создатель Selenide, а Алексей Виноградов — это тот самый Виноградов из Radio QA, что само по себе доставляет.


qr7fpvshgjlh-jnnhw1k0krmr0y.png


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


Самый первый паззлер довольно простой (если видел ответ):


arttwljbv6c2gm04h6ummed_ulg.png


А вот здесь уже не всё так очевидно:


5irw-pjrejv9lk-o0fx43tunzye.png


С удовольствием дослушал всё до конца. Забавно, что если на конференциях по программированию паззлеры зачастую бесполезны (но знание магии доставляет программистам неимоверное наслаждение), то вот этот доклад имеет прямую практическую ценность. Сразу видно, что авторы не просто нагуглили топ-10 самых странных вопросов со StackOverflow, а просто взяли задачи из своей практики.



9. Scaling Selenium

Спикер: Simon Stewart; оценка: 4,33 ± 0,13. Ссылка на презентацию.



Саймон Стюарт — это, мягко говоря, известная личность. Именно он изначально создал WebDriver и продолжает тащить на себе Selenium.


Начинается доклад с каких-то довольно базовых вещей о локаторах, длинных XPath и слипах. Саймон рассказывает, как писать тест и приложение таким образом, чтобы избежать типичных проблем.


qpgdsfklyz3w7sumvyrqkqk89tw.png


Но сразу после этого (где-то на 24 минуте) рассказ конденсируется вокруг основной темы доклада — масштабирования.


Он рассказывает, почему static и ThreadLocals — это плохо, а также почему код должен быть немутабельным и stateless. Причем эти объяснения идут не от стандартного подхода к программированию высокопроизводительного кода (в котором, если сильно постараться, можно и доказать пользу статиков), а именно от тестов.


Всё это подкрепляется живыми демонстрациями на его макбуке.


7socf6ascskyooefh5qjuduwu2i.png


Автор подходит к вопросу системно, рассматривает запуск тестов из независимых местоположений. Вообще, мне кажется, что такой вопрос отлично подойдёт для собеседования, чтобы сразу определить, человек только хэлловорлды писал или работал :-)


dvl_l9t2htgpv9bnu2zsqib36de.png


На примере типичного веб-приложения рассматриваются ситуации, когда тесты могут падать, но совершенно не по тем причинам, которые мы собирались поймать.


h7onplpnxqi42bnvof7nng2thps.png


По ходу дела Саймон совершенно не гнушается опускаться в детали применимости архитектуры Selenium. Неудивительно, он же её и разрабатывал.


qu9gttwurjsafuzrcdonc1socoo.png


Так он подводит нас к использованию Selenium Grid и показывает это на реальных демках.


2xdc6retbkgh2ka5yjh-_-d2cvi.png


Ну и Докер, конечно. Первое правило Докера: всегда говори о Докере!


48adchzynasfptk1kkxd3fr-x24.png


И заканчивается всё облачными провайдерами.


Под конец доклада идёт обсуждение стандартных ошибок, которые можно при этом наделать.


9rkhly0oz64glafrjtkzav73pae.png


В прошлом я внедрял DevOps, и описанные в докладе «фуллстековые» проблемы показались мне очень близкими и знакомыми. Для себя я забрал отсюда официальную позицию Саймона (по сути — позицию команды Selenium) по ряду основополагающих вопросов масштабирования тестирования, и это в будущем позволит корректней обращаться с их инструментами.



8. Белый ящик Пандоры

Спикер: Никита Макаров; оценка: 4,34 ± 0,07. Ссылка на презентацию.



Никита Макаров — руководитель группы автотестирования в Одноклассниках. А ещё он — член Программного комитета Heisenbug. Время от времени мы общаемся в интернете, и посмотреть его доклад было особенно интересно.


Во-первых, доклад начинается с того, что Никита уже выложил презентацию и дал QR-код на неё. Сказать, что это офигенно — это ничего не сказать. Имхо, так нужно делать вообще каждому докладчику. Хотя нам, просматривающим запись конференции на YouTube, это уже не столь важно.


Если коротко, то в отрасли тестирования очень много говорится про «черный ящик», но изредка и вскользь упоминается «белый». Связано это в том числе и с тем, что тестирование «белого ящика» всегда считалась прерогативой программистов.


Этот доклад отвечает на несколько животрепещущих вопросов:


  • Как не давать программистам писать неправильный код?
  • Как внедрять падения в код так, чтобы не было мучительно больно?
  • Зачем вам может понадобиться парсинг исходного кода и что вы можете с этого получить?
  • Социальный анализ кода и покрытие — почему и зачем ?


i0tuw_ftnw5dbltgkvmczxl8low.png


В самом начале Никита задаётся вопросом, почему так мало информации про белый ящик? Рассказывает о соответствующем историческом контексте и своих изысканиях на эту тему.


vclncibeutadq0fgz2xc9ltilqm.png


После этого мы переходим к конкретике. Забавно, что Никита использует тот же самый скриншот стека вызовов, что и я на моём прошлом выступлении про DevOps:


fkdah-v9jy1vfhp7ajja5l6xkjw.png


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


Это была мотивационная часть. Дальше идёт практика. Никита заранее предупреждает, что готовых решений не будет, и начинает рассказывать принципы.


nhjimyomvpuay9wkpoozan1bacy.png


Разбираемые вопросы иллюстрируются на конкретных примерах в Java-коде:


me1naomrs_q3w-qbfbr4mhdjdbs.png


В какой-то момент он даже открыл Идею и начал всё это показывать:


ebljslqawmcsuwuryo7wkdauwxe.png


В докладе рассматривается очень много разных видов тестирования и инстурментов для них:


wobtc0ohquc-3gh8mzuzhiw6lbg.png


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


По сути, доклад делится на некие «уровни погружения» в тему. Он начинается с самого простого и заканчивается наиболее кошмарным. Например, там будет даже про парсинг исходников и Abstract Syntax Tree.


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


И что мне особенно понравилось, доклад заканчивается на жизнеутверждающей ноте: нужно читать код! (Как заставить это делать тестировщиков, я пока не понял, впрочем).


inphio-h4cqvnfyy-idmdvk0tqg.png



7. Ваши A/B-тесты сломаны

Спикер: Роман Поборчий; оценка: 4,36 ± 0,13. Ссылка на презентацию.



С Романом мы познакомились во время подготовки к конференциям JBreak и JPoint. Роман помог сделать мои слайды (и доклады вообще) не такими отстойными, как это получилось бы у меня в одиночку. Там же выяснилось, что Роман обладает просто невероятной глубиной знаний по темам типа A/B-тестирования, и я с нетерпением ждал, когда он тоже сделает доклад. Итак, вот он.


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


Замечали, что обычно люди, ответственные за эксперименты, в итоге говорят, что данных недостаточно для решения? Часто это действительно так, но нередко всё дело в поломках системы экспериментов и учёта пользовательской статистики.


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


Вообще, я очень плохо разбираюсь в математике, и тем более — в матстате, и я боялся, что из доклада Романа мне не удастся вынести вообще ничего. Просто потому, что не хватит IQ. Но нет, каким-то непостижимым образом содержание доклада оказалось вполне понимаемым и применимым на практике.


Начинается доклад с рассказа про один из тестов Microsoft во времена, когда трава была зеленее:


bta-k9yb15p3k3b-lmeprb0rbau.png


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


dl4qy1t3zilc-drfjcng-hip1b0.png


Зачастую люди не понимают, что там может быть сложного — разбил по юзерам, показал каждому своё, посчитал результат — и готово!


gbm-jwfaa4tqv6jquhc9fx6mpr0.png


Собственно, весь доклад Романа про то, что сложного там может быть более чем дофига.


Например, человек от своих собственных привычек зависит больше, чем от каких-то мелких изменений на нашем сервисе.


Поэтому картинка разделения получается не такая:


d2dq_wnmn6g2y3hohovcurzqihw.png


А вот какая-то такая:


cekumdey00e68qcw8rlzexjhhly.png


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


Центральная линия доклада — это несколько основных ошибок:


  • Вообще не проводить экспериментов
  • Перебирать параметры руками пользователей
  • Провести слишком много плохих экспериментов
  • Не сохранять логи экспериментов с возможностью перерасчёта
  • Не учитывать, что измеряемый показатель сам собой меняется во времени (это называется сезонность)


Итоги примерно такие (и они следуют из заявленных проблем):


qlsjn487i5lqmyitnzchafhtupg.png


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


Ну и конечно, математику всё равно нужно подтягивать.


cmhg42mlhj7dhfpvbjyrunh9eoy.png


Если попробовать выразить весь доклад в одном слайде, он, наверное, будет выглядеть как-то так:


isk3tdsbm53kfdcatmiguzag6xe.png



6. Тестирование телефонов с помощью Arduino

Спикер: Алексей Лавренюк, Тимур Торубаров; оценка: 4,38 ± 0,14. Ссылка на презентацию.



Следующий доклад ведут два разработчика из Яндекса. Алексей причастен к таким вещам, как Яндекс.Танк, Pandora и Overload. Тимур 4 года отработал в телекоме и последние 4 — в Яндексе.


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


Грубо говоря, раньше мы умели тестировать только производительность серверных приложений, а теперь весь мир перешёл на мобилки. В том числе, в Яндексе измеряют энергопотребление телефонов. Алексей и Тимур рассказывают, как научились собирать метрику энергопотребления хардверным способом: собрали небольшую схему на базе Arduino, которая измеряет ток, и написали библиотеку для работы с ней. Библиотеку они выложили в open source. Кроме того, в докладе рассказывается, как подготовить телефоны, собрать коробочки для замеров и как использовать библиотеку.


Конечно, всё это интересно в первую очередь тем, у кого в наличии прямые руки. Я за себя не уверен, что смог бы действительно заниматься таким в проде. Для этого нужно недюжинное упорство и талант. Но вот подивиться, как это делают профессионалы — всегда интересно.


Доклад начинается с того, как всё непросто, если тест происходит с настоящими телефонами.


wovkmd1eir2rxvw2yjoikclekju.png


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


elgnxagjqlfypwzgw2x-tie8ovg.png


Общий план доклада примерно следующий:


xdzunl0avn8_xzsukczvk04hc4s.png


То есть вначале рассказывается, почему они не взяли мультиметр, а потом выходит Тимур, показывает, что есть в опенсорсе и как этим пользоваться.


Даётся некая проблематика того, что умеет и не умеет телефон (и что значит метрика 1/20 применительно к iPhone)


ffkzxeelklntdafd211l2ucnm48.png


zlctboqd3jpyck1dhzj--qy_8wo.png


Обсуждается, как они изучали готовые решения.


yndmdhdd0txubjzakafqc76gqzs.png


Поэтому они взялись за дело сами!


5l5bcbshxmia7dgx7gdibu7bo5o.png


ro-5goe87wynsi7xjbpo5lh9ky0.png


Обсуждаются не только чисто аппаратные мелкие вопросы, которые возникали по ходу работы:


evtkrd7kctglnaadlulhrw_urfc.png


5tfdv03wwdgkkhmpbihwg9ikgsu.png


Но и проблемы разработки софта:


vu51f4ljsnmzy__hogw-a9-hyu8.png


ljrmidl3dspypiz2rbnjd_uw7-m.png


Вторая часть доклада посвящена готовому решению — Volta и VoltaBox.


p65xtb2il81fi6spp6t98-dllow.png


tiqmfghahfhanecbljdv8iomgxu.png


Софт устанавливается с помощью pip install volta. Вот так софт выглядит под капотом:


z0iwkd6hcnhhn-6tc8qrznkilbo.png


Собственно, диаграммка тут только затем, чтобы показать, что там внутри всё очень хорошо продумано.


Тимур рассказывает, как это всё реально конфигурить и использовать. Всё работает просто на Jupyter Notebook, а дальше — следите за руками!


serucy0-39mdqoi6otrsqztzoma.png


6pjnz8xdayszh7pi5n-_buaudyu.png


В общем, результаты выглядят как-то так:


-a-brchhvqpp4wjrphn643divca.png


Доклад оставляет ощущение того, что измерение энергопотребления — это не какая-то фантастика и отдалённое будущее, а это можно сделать прямо сейчас. И всё это не требует быть доктором физико-математических наук. Конечно, это возможно только потому, что такие люди, как Алексей и Тимур, всё сделали за нас, а нам остаётся только использовать готовенькое.



5. Как сообщать пользователю, если «Упс, что-то пошло не так»

Спикер: Антонина Хисаметдинова; оценка: 4,40 ± 0,10. Ссылка на презентацию.



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


Многие просто создают однотипные интерфейсные окна вроде «Ошибка № 392904» или «Упс, что-то пошло не так», не задумываясь, что почувствует пользователь. А ведь он может расстроиться, потерять доверие к продукту. Ну, или догнать на улице и побить.


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


Рассказ начинается с обзора сценариев с ошибками.


zp-qp4a-_ynwuxdmnsssx2djv2m.png


Немного про то, как обосновывать бизнесу обработку таких сценариев:


mop0grzweqhtsiva9mno5i1kel0.png


Всё это выливается в реальные деньги:


wjrrvnnxrnw2ocmn5knkqik5jdy.png


То есть хорошее сообщение об ошибке:


  • Снижает нагрузку на поддержку
  • Помогает пользователю не потеряться в воронке конверсии
  • Быстро обучает работе с продуктом
  • Помогает сохранить доверие к сервису в трудную минуту


Дальше системно обсуждаются разные типы ошибок, реакции пользователя на них (в т.ч. на примере World of Tanks!) и то, какие нюансы всё это вносит в формирование сообщения об ошибке.


qwzrvx3gbn533kwyn93kpkh39ui.png


iowvlunntcdbmoxwdub0day6svc.png


Есть немного о каналах обращения пользователей и способах грамотного информирования пользователей об ошибках:


uoen89hbdwox2hmoac297gfknpw.png


Даются вполне конкретные советы по улучшению приложений в виде чеклистов.


jephc6i00ui3nd3hoqubzq7b308.png


Всё это иллюстрируется на безумном количестве живых примеров:


f3s49buwiecddlk3v_ojhdjq9iy.png


Рассматриваются даже такие достаточно необычные применения, как интерфейсы для слабовидящих:


7o4cdopmcyh7grfemhb91canofa.png


Вообще, доклад просто переполнен сконцентрированной информацией, и передать всё в виде этой выжимки, думаю, невозможно.


Но можно накидать некий центральный план:


  • Как сообщать о глобальных сбоях?
  • Специфические баги
  • Ошибки пользователей
  • Проблемы подключенного сервиса
  • Внешние проблемы
  • Крайне необычное поведение пользователей или сервиса


Ближе к концу поднимается главный вопрос вселенной жизни и вообще:


rjtwoul95cgppbuw8iboj4dmg4s.png


Там же имеется чёткий чеклист, что теперь со всем этим делать и что почитать по теме:


thqpnnb0bwcmvctl_904sxjje-8.png


1wmt-pchrwspw33mc1rqoxq1jww.png


Слайд про «Что почитать?» — девяносто третий. Девяносто три слайда, Карл!


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


Ну и да, абсолютно всё, что там было сказано — очень полезно, чётко и по делу. Один из немногих докладов, которые применимы на 146%.



4. Простота, доверие, контроль — три кита автоматизации веб-тестирования

Спикер: Артем Ерошенко; оценка: 4,45 ± 0,08. Ссылка на презентацию.



Артём известен тем, что является автором Allure и HtmlElements. Давно занимаясь проектами, связанными с автоматизацией веб-тестирования, он сформировал свод правил, которые обеспечивают комфортную работу ему и его команде на протяжении жизни всего проекта от первого теста до нескольких тысяч. Этот свод правил условно разделен на три группы: «Простота разработки», «Доверие к результатам» и «Контроль качества».


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


Самым правильным будет представить этот доклад в виде некоего плана.


Дело в том, что в докладе используется более 170 слайдов. Если начать описывать это подробно, то нужен будет отдельный хабрапост —, а возможно, и не один.


mrkjvf_qfmj3ygv3ncrtdzukmrg.png


Всё вместе это будет выглядеть как-то так (сорри, если где-то перепутал с уровнями вложенности, ибо разговор стелется плавно):


  • Простота
    • Инструменты разработки
    • Работа с браузером
      • PageElements
      • Структура элемента
      • Структура страницы
      • Как выглядит тест?
      • Недостатки HtmlElements
      • Боль с Ajax-страницами
      • Проверки сбоку
      • Отсутствие параметризации
      • Отсутствие логирования
      • Интерфейсы вместо классов
      • Параметризация
      • Проверки с перепопытками
      • Шаблоны страниц
      • Дескрипшн элемента
      • Степы практически не нужны
    • Подготовка данных
      • Обычный HTML-запрос
      • Path параметры
      • Query параметры
      • Тело запроса
      • Работа с заголовками
      • Описание, создание и использование в тесте UserService
    • Конфигурация тестов
      • Запуск тестов
      • Конфигурация тестов
      • Описание конфигурации
      • Примитивные типы
      • Расширенные типы
      • Списки и массивы
      • Несколько источников
      • Переопределение значений
      • Конфигурация WebConfig
      • Конфигурация ApiConfig
      • Инициализация конфигов
      • Использование в тестах
    • Инъекция зависимостей
      • Граф зависимостей
      • Базовый класс — плохо
      • Статические поля — плохо
      • Что нам реально нужно?
      • ПоставщикWebConfig
      • ПоставщикWebDriver
      • Поставщик MainPage
      • Конфигурация модуля
      • Поставщик User
      • Интеграция с JUnit
      • Как выглядит тест?
  • Доверие
    • Доверие команды к тестам
      • Короткие тесты
        • Пример на диаграммах
          • Как выглядит сервис
          • Как выглядит запуск тестов
          • Как на самом деле
          • Почему так происходит
          • Разные точки входа
          • Как действовать
      • Сервер «заглушек»
        • Как проверить объявление
        • Как проверить фильтры
        • Какие есть реализации
        • Как устроен сервис
        • Сервер «заглушек»
        • Режим прокси
        • Как устроено тестирование
        • Как выглядит код в тесте
        • А если в несколько потоков?
        • Идентификатор теста
        • Заголовок в HTTP-запросе
  • Контроль
    • Launches types
    • Grafana
    • Примеры графиков
    • Количество тестов
    • Статус запуска тестов
    • Статусы теста
    • Время запуска тестов
    • Количество перезапусков
    • Перезапуски и статус
    • Перезапуски и время
    • Проблемы запуска
    • Файл 'categories.json'
    • Категории проблем
    • Как настроить?
    • Как это работает?
    • Экспорт в InfluxDB
    • Формат данных InfluxDB
    • Allure Plugin


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




TOP-3


3. Тестирование геолокации в Badoo: шишки, камни, костыли и селфи-палка

Спикер: Александр Хозя, Николай Козлов; оценка: 4,57 ± 0,10. Ссылка на презентацию.



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


Вначале докладчики выкатывают набор понтов на тему, какие они крутые и большие в Badoo. Сам я этим сервисом не пользуюсь, так что циферки повергли меня в легкий шок:


zi4o9q0wrw3nlqxhstcgaefqw-0.png


И всё это хранится правильно, в защищённом виде.


Доклад вот о чём:


izeueqb3y6lnbge3licgdzafk5q.png


a-1rfj1f4znmzoij01dznskeuwa.png


Вначале даётся некая вводная о том, как работает современная геолокация:


8cwseuwnlrdriowszuh9scos2pe.png


Дальше ставится несколько задач (вроде «обработать тонну геоданных при как можно меньшем энергопотреблении») и показывается куча примеров, где эти самые геоданные используются.


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


-dtxqxceg0gefixait1jyh3n87a.png


Упоминается о том, что данные получаются не абсолютно точные, и что их нужно уметь тестировать. Для тестирования используется эмулятор андроида и симулятор Xcode, причём там везде есть баги.


-v1c250so2p4edqsn5bm9hezbfq.png


Разные интересные утилиты:


pffowyxfhwfwegzxbxyxxqp1hgw.png


Теперь система уже принимает данные (благодаря вышеописанному), и нужно определить, что она вообще хоть как-то работает.


qp04rskzlec6wcwotcrbvwdsjz4.png


Обсуждается проблема информационного шума, и что иногда даже непонятно, в какую сторону копать:


5kbnnzubipnix6tjdsu7htlpqgi.png


Естественно, тут приходит очередь логов. Формулируются критерии хороших логов:


i93eecrw4zpddvyke3kx4neerxe.png


gcej4hz2wnasr-a7kadp1dtfiwq.png


Дальше идёт целый блок рассуждений о том, как сделать хорошее отладочное меню.


awlxkylmmjflt-cx1sdu8ane2bu.png


А как же логи потребления электричества? Отличная отсылка к предыдущему докладу Яндекса!


wzamwtzdt8kfsysrhfwgoplxyww.png


Впрочем, у докладчиков есть и свои читерские приёмы. Например, в Badoo очень сильная команда мониторинга, и они очень хорошо умеют всё это делать.


mhvc9vfr_kgsgvwcad8ucvr_cgs.png


Рандомные забавные факты!


cgqqncjfswrmggomonf_2icmpxy.png


Из чего делается набор выводов по поводу минимизации потребления энергии.


wkftpamkew13my_dqxcfh44fd3c.png


Кроме этого, в докладе есть огромное количество разных интересных вещей, таких как уточнение локации в foreground, реакция на значительные изменения координат, таймауты при работе с сетью, fused location data и многое другое.


Отличный, живой и понятный рассказ о том, как можно и нужно работать с сервисами геолокации, если уж вы решились взяться за это всерьёз!



2. Flaky tests

Спикер: Андрей Солнцев; оценка: 4,57 ± 0,06. Ссылка на презентацию.



Flaky tests — головная боль автотестеров. Ещё вчера тест был зелёный, а сегодня он вдруг покраснел — ни с того ни с сего. Никто ничего не менял. Просто луна не в той фазе. У Андрея есть своя собственная коллекция таких тестов, о которых и пойдёт речь в докладе. Общий смысл доклада — научиться писать тесты так, чтобы они были стабильными и независимыми от кармы разработчика.


Когда-то я был адептом алкокодинга, поэтому очень котирую первый слайд:


agkajnyixk1jk8imllursblwd8m.png


Flaky-тест — это тест, который падает только иногда.


И такого непотребства у всех дофига. Чем, наверное, и объясняется популярность доклада и его попадание на второе место рейтинга.


2soopoqo2vnw2p8luogtk0xp6i4.png


Однако даже 1,5% тестов — это уже очень плохо. Нужно их перезапускать руками и изучать.


План доклада примерно таков:


u9kl7fjjmxrazkpgwuuu7t7asrg.png


Доклад изобилует примерами, выглядящими как паззлеры. Поэтому спойлерить я их не буду, а просто приведу пример:


c9co0x5fivpqnulma7j2gur9nbe.png


Ну и конечно, для каждого из примеров есть какие-то хорошие лекарства:


yr7bsbz7php0n2pv9wnclqkdfce.png


Будет пример про nbob (посмотрите сами, что там!), пример на фантомные числа, несоответствие версии Java, «проклятие зелёной кнопки» (нажимаем кнопку, а перехода на следующую страницу нет), зависания Chrome и многое другое.


Для некоторых вещей нужно глубокое понимание вопроса, а для кое-чего хватит обычной житейской мудрости:


a_tso5_2od1s6nxaaj8z4rteca4.png


odd6xynsorow-6jrzowuxugharw.png


Всё это заканчивается подробным подведением итогов и вот этой жизнеутверждающей мыслью:


p-ekw62xbikotq1_dlqwnmdyzza.png



1. Автотесты в World of Tanks: боты на страже качества

Спикер: Александр Шуков; оценка: 4,61 ± 0,11. Ссылка на презентацию.



У меня был некий соблазн для самого лучшего доклада вообще ничего не писать, а сказать: «Это сюрприз, идите смотреть сами». Но это как

© Habrahabr.ru