Dodo Mobile
4.59K subscribers
193 photos
45 videos
17 files
397 links
Канал о мобильной разработке в Dodo Brands. Канал ведёт Михаил Рубанов: @akaDuality

Вакансии https://dodobrands.notion.site/Dodo-Brands-a0e9e9ad779442a2aa322ddb52543d0a
Download Telegram
Названия релизов

На самом деле почти все версии Додо Пиццы имеют внутренние названия.

Мы их придумываем, вписываем в табличку, а потом никак ими не пользуемся — в обсуждениях обращаемся по цифровому названию.

А какие у вас ритуалы для разбавления рутины?
В 20:00 по Мск рассказываю про тесты:
- как прошли наши 4 года с тестами
- какие типы тестов сейчас пишем
- как тесты помогают на ревью
- посмотрим на настоящие примеры

Приходите, сессия открытая
Forwarded from QA.GURU | Новости
🔥 Рецепты пиццы и кода от QA.GURU – уже в 20:00 по МСК!

Сегодня у вас есть уникальная возможность прокачать свои навыки в автотестировании! Хотите писать код, который работает без багов и масштабируется, как идеальная пицца с каждым новым слоем? Тогда обязательно приходите на открытый урок "Стратегия автотестирования для iOS-приложений", где мы на примере Додо Пиццы покажем современный подход к автотестам. Будет вкусно и продуктивно 😋

Михаил Рубанов – эксперт по accessibility, автор книги "Про доступность iOS" и Head of mobile в Dodo Engineering, раскроет все секреты, а вы:

• узнаете, какие задачи существуют в приложении и как они покрываются разными тестами (юниты, интеграционные, скриншот- и снепшот-тесты, UI-тесты);
• посмотрите живые примеры разных тестов;
• разберете, что именно помогает в написании тестов со стороны процессов, какие неожиданные свойства можно получить и как добиться того, чтобы тесты ускоряли разработку.

Не упустите шанс сегодня в 20:00 по МСК научиться готовить качественный код так же легко, как пиццу!
Вот и запись. В конце много вопросов на разные темы про тестирование
Forwarded from QA.GURU | Новости
Отличные новости!

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

И мы рады сообщить, что запись встречи уже доступна для просмотра на YouTube 📱, на Rutube 👀 и на Платформе школы 🎓

🔥 Кроме того, у вас есть возможность записаться на продвинутый курс по автоматизации тестирования
"Java Advanced 2.0" со скидкой 5%!

Это отличная возможность прокачать свои знания на новом уровне и разобраться в более сложных проектах автоматизации тестирования.

⚡️ Успейте воспользоваться предложением и сделайте шаг к своему профессиональному росту!
Please open Telegram to view this post
VIEW IN TELEGRAM
Почему мы отказываемся от Quick

Никогда так не делал и не фанат публичной критики, но раз уж много начали про тесты, то хочется рассказать о важном разочаровании — фреймворк Quick.

Сначала про плюсы и идею. Есть подход BDD – описываете сценарии, потом пишите под это тесты. Т.е. у вас есть спецификация того что и как должно работать, а где-то рядом с описанием и код вызывается. В итоге и документация и код в синхронизации, все довольны. При запуске он разложит дерево во все возможные кейсы и склеит шаги в одно большое название. Выглядит примерно так:
Такие описания хорошо ложатся на сценарии для мобилы. Вот я сделал запрос, он может прийти успешно, тогда одно поведение, а может завалиться, тогда другое и все это рядом. В итоге тесты превращаются в дерево ветвлений, что довольно понятно пишется. Обычно негативные сценарии тестируешь раньше, потому что они короче, смысл такого порядка примерно как у guard в Свифте.

Но все это очень сильно разбивается об реализацию и проблемы поддержки. Каждая из них может показаться незначительной, но иногда стреляет ВСЕ РАЗОМ.

⁃ Спецификация описывается через кложи, а они медленно компилятся. В итоге очень большую спецификацию не написать — в какой-то момент просто отваливаются на вложенности. И это вроде даже хорошо, потому что слишком большие спеки писать не стоит, но вы не сможете спрогнозировать скорость компилятора и отломается тогда, когда вам осталось написать пару строчек. И что, в такой момент все переписывать?
⁃ Так же и в обратную сторону: если вы вдруг ошиблись в коде, то компилятору будет очень сложно сказать где именно ошибка и вы останетесь наедине с буквами, будто работает не в умной среде разработки, а прям в блокноте. Поспрашивал коллег — все дружно кивают на этом пункте.
⁃ Писать спеку удобно, а вот работать с ней — нет. При отладке вам нужен коротки воспроизводимый тест на 10 строк, но в спеке для одного кейса приходится работать со всем файлом строк на 300-500 минимум, дебажить это неудобно, постоянно скачите из одного места в другое.
⁃ Интеграция в хкод никакая. Чтобы прогнать один тест из спеки надо писать префикс f, это приводит к рекомпиляции, которая долгая (смотри пункт 1). Но даже с префиксом неудобно, потому что файл очень большой, его легко забыть и без дополнительного тулинга в виде линтера или мониторинга количества тестов вы постоянно на это будете напарываться.
⁃ В снепшотах-тестах сталкивались с тем, что суммарное название теста получается длиннее максимального размера названия файла :DD
При этом подлость в том, что писать на Quick действительно удобно! На графике видно, как быстро мы начали наращивать количество спек в Quick, но уже через пару лет энтузиазм пропал и мы стали отказываться. Переписываем тесты через ChatGPT: иногда срабатывает так, что ничего править не надо (иногда и полная чушь, я тут без AI-оптимизма).
SwiftTesting тоже клевый по синтаксису (можно отделить интеграционные и скриншот-тесты!), но очень медленный из-за макросов. Не везет iOS с фреймворками для тестирования.

После этого остается вопрос «а как быть то», но про хороший DSL как-нибудь в другой раз
Ближайшая Android-подлодка про инструменты, на ней Григорий Шимичев из Дринкита расскажет про detekt, приходите послушать!
This media is not supported in your browser
VIEW IN TELEGRAM
Genshin Impact

Вчера началась наша самая большая коллаборация — с Геншином. В пиццериях есть особенные пиццы, напитки, коробки, стенды и брелоки с персонажами.

В приложении мы стилизовали карточку продукта, добавили большую AR-сцену и впереди еще один большой секретик. Смотрите как красиво!
Как мы запуск приложения в два раза ускорили

Если сильно упрощать, то приложения делают две вещи — работают с сетью и выводят их на экран. Статей про интерфейс много, а вот сеть и ее особенности почти не обсуждается. А вопросов там можно насобирать:

⁃ Нужно ли переиспользовать URLSession?
⁃ Почему первые простые запросы в приложении выполняются дольше остальных?
⁃ Что за HTTP/2 и как он влияет на приложение?
⁃ Сжимается ли джейсон в запросе?
⁃ Как снять метрики запросов?
⁃ Как в целом посмотреть на картинку того, что происходит с запросами в приложении?

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

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

https://habr.com/ru/companies/dododev/articles/846662/
Вакансия iOS в Дринкит

Ищем iOS-разработчика работать над Дринкитом — приложение уже клевое, уже в 40 кофейнях и нескольких странах, в команде пока всего 3 других иосника, Руслан Кавецкий руководит, команда на SwiftUI нацелилась и ваще лучшее время присоединиться!

Вакансия
Media is too big
VIEW IN TELEGRAM
Честный Дринкит

В Дринкит сделали прикольную фичу — при кастомайзе напитка честно рассчитывается сколько килокаллорий содержит напиток. Признаюсь — не очень верил в ценность фичи, но после запуска удивился. Оказывается, можно сделать напиток на 60 ккал, а можно насобирать сахарную бомбу на тысячу! Пару таких напитков и вы получили всю энергию, что нужна на день работы.
This media is not supported in your browser
VIEW IN TELEGRAM
Отдельно нравится то, как панелька дружит с кнопкой: во время кастомизации кажется, что КБЖУ это часть нижней панели, но на самом деле панель скролится, просто все так подогнано, что она встает ровно на нужное место.
Как мы 3д-пиццу запекали

Весной выступал на Мобиусе, теперь выступление есть и на ютубе. Рассказ состоит из двух частей: как мы готовили модели и как в приложение добавляли. Прошло несколько месяцев с доклада, интересно сравнить то, что говорил и то, в каком состоянии AR сейчас.

⁃ Вышло 3 крупных релиза: AR в карточке продукта для нескольких пицц, изменение размера внутри AR и Геншин.
⁃ Рассказывал как готовить модели и что это все потенциально автоматизируемо — сейчас уже есть приложение для производства моделек, которое умеет генерировать превью, в котором модель можно подтюнить после генерации по размеру и положению, сгенерировать качественную модель и экспортировать в .usdz и .glb
⁃ Рассказывал как сделать модельку пиццы с коробкой — в сентябре запустили AR для Геншина, где еще и сцену добавили, анимаций разных, шейдеров прикрутили, музычку включили и показали сотне тысяч человек.

После нескольких месяцев в продакшене остался только один вопрос — почему-то конверсия из открытия AR в плейсмент модельки на столе всего 30%. Для телефонов помощнее она выше, но не больше 50%

Если пробовали и столкнулись в проблемами — расскажите в комментариях
This media is not supported in your browser
VIEW IN TELEGRAM
В итоге за год прошли путь от «а как ваще создавать 3д-пиццы» до вот такой вот сцены
Async/await

Часто встречаю на интервью, что мало кто работал с async/await и не понимаю почему. Впервые за долгое время Apple что-то бэкпортнуло, что не мешает внедрению, у чего есть понятный флоу миграции, на него подвязываются новые версии языка, которые собираются устранить самые популярные причины крешей от одновременного доступа…

Расскажите какое состояние относительно стракчед канкаренси у вас в проекте и что не дает переехать на него, очень уж интересно стало