Исследование того, как в разных компаниях подходят к автотестам
Женя Мацюк, автор библиотеки Kaspresso и бесконечности докладов про автоматизацию тестирования, провел интервью с 30 командами мобильной разработки и подбил аналитику по тому, что там по автотестам в 2022 году.
- У 30% команд написано больше 1000 UI тестов.
- У большинства команд соблюдаются пропорции стандартной пирамиды тестирования, и unit-тестов больше, чем end-to-end.
- 60% команд гоняют UI тесты на каждый PR, а 25% – на ночных сборках.
- У половины команд время на прогона сьюта тестов на PR – больше 25 минут.
- Больше половины респондентов запускают в паралелль не больше пяти эмуляторов.
Конечно, в исследовании явно есть перекос в сторону больших команд, поэтому учтите это при прочтении статьи.
Женя Мацюк, автор библиотеки Kaspresso и бесконечности докладов про автоматизацию тестирования, провел интервью с 30 командами мобильной разработки и подбил аналитику по тому, что там по автотестам в 2022 году.
- У 30% команд написано больше 1000 UI тестов.
- У большинства команд соблюдаются пропорции стандартной пирамиды тестирования, и unit-тестов больше, чем end-to-end.
- 60% команд гоняют UI тесты на каждый PR, а 25% – на ночных сборках.
- У половины команд время на прогона сьюта тестов на PR – больше 25 минут.
- Больше половины респондентов запускают в паралелль не больше пяти эмуляторов.
Конечно, в исследовании явно есть перекос в сторону больших команд, поэтому учтите это при прочтении статьи.
Android Good Reads pinned «Вышло ежегодное исследование популярности команд Android разработки В этом году мы опросили 660 Android-разработчиков, на 40% больше, чем в прошлом! Посмотрите отчет, чтобы узнать: 💰В каких сферах предпочитают работать Android разработчики (спойлер – топ…»
Переезд с Java на Kotlin в Meta
🤔Про переезд:
- Основные причины переезда: nullability, поддержка функциональщины, более лаконичный код, поддержка DSL и type-safe билдеров.
- При планировании переезда команда выбирала между двумя подходами – сконвертировать всю кодовую базу на Kotlin, или заморозить ее в текущем виде и писать на Kotlin только новый код. Выбрали первый вариант.
- При переезде активно использовался J2K. Чтобы улучшить результат его работы, команда дописала свои конвертеры с обеих сторон от J2K. Это помогло получить более идиоматичный и подходящий к стайлгайдам компании код.
🔥Результаты:
- Сейчас в монорепе 10 миллионов строк кода на Kotlin.
- Объем кодовой базы уменьшился всего на 11%.
- Runtime перфоманс не изменился.
- Время билда выросло. Чтобы решить эту проблему, команда улучшает поддержку Buck и переезжает с KAPT на KSP.
🤔Про переезд:
- Основные причины переезда: nullability, поддержка функциональщины, более лаконичный код, поддержка DSL и type-safe билдеров.
- При планировании переезда команда выбирала между двумя подходами – сконвертировать всю кодовую базу на Kotlin, или заморозить ее в текущем виде и писать на Kotlin только новый код. Выбрали первый вариант.
- При переезде активно использовался J2K. Чтобы улучшить результат его работы, команда дописала свои конвертеры с обеих сторон от J2K. Это помогло получить более идиоматичный и подходящий к стайлгайдам компании код.
🔥Результаты:
- Сейчас в монорепе 10 миллионов строк кода на Kotlin.
- Объем кодовой базы уменьшился всего на 11%.
- Runtime перфоманс не изменился.
- Время билда выросло. Чтобы решить эту проблему, команда улучшает поддержку Buck и переезжает с KAPT на KSP.
KotlinConf 2023 в вашем городе
KotlinConf 2023 пройдет 13-14 апреля. Если вы хотите захостить митап с его просмотром в своем городе, обратитесь за помощью к команде Kotlin:
- Вам подгонят стикеры, футболки и другой мерч.
- При необходимости помогут с финансированием.
- Ваше событие поместят на общую карту всех ивентов.
KotlinConf 2023 пройдет 13-14 апреля. Если вы хотите захостить митап с его просмотром в своем городе, обратитесь за помощью к команде Kotlin:
- Вам подгонят стикеры, футболки и другой мерч.
- При необходимости помогут с финансированием.
- Ваше событие поместят на общую карту всех ивентов.
Визуальный гайд по основным операциям над коллекциями в Kotlin
Отличная визуализация функций работы с коллекциями из стандартной библиотеки:
🗺️Mapping
🤐Zipping
🔗Association
🤌Flattening
📙String representation
Отличная визуализация функций работы с коллекциями из стандартной библиотеки:
🗺️Mapping
🤐Zipping
🔗Association
🤌Flattening
📙String representation
This media is not supported in your browser
VIEW IN TELEGRAM
Compose Gradle BOM
Gradle Bill of Materials – конфигурационный файл, в котором зафиксирован список связанных друг с другом зависимостей и их версии. Команда Compose начала использовать BOM для того, чтобы было проще обновляться на актуальные версии всех связанных с Compose библиотек, не разбираясь, какие конкретно версии для каждой надо выставить.
Gradle Bill of Materials – конфигурационный файл, в котором зафиксирован список связанных друг с другом зависимостей и их версии. Команда Compose начала использовать BOM для того, чтобы было проще обновляться на актуальные версии всех связанных с Compose библиотек, не разбираясь, какие конкретно версии для каждой надо выставить.
Podlodka Android Crew про архитектуру
14-18 ноября пройдет новый сезон Podlodka Android Crew с кучей сессий про архитектуру. Вот несколько кайфовых тем:
🧱Почему Backend Driven UI не нужен
🔃Elm и Redux с Compose
📝Публичное собеседование по System Design в Android
💉Эволюция подходов к DI в Lyft
👉Подключайтесь и вы!
14-18 ноября пройдет новый сезон Podlodka Android Crew с кучей сессий про архитектуру. Вот несколько кайфовых тем:
🧱Почему Backend Driven UI не нужен
🔃Elm и Redux с Compose
📝Публичное собеседование по System Design в Android
💉Эволюция подходов к DI в Lyft
👉Подключайтесь и вы!
История дебага TransactionTooLargeException
- Что такое Binder и для чего он нужен
- Как происходит сохранение состояния Activity при
переходе в бэкграунд
- Как дебажить происходящее в Binder транзакциях с помощью toolargetool
- Что такое Binder и для чего он нужен
- Как происходит сохранение состояния Activity при
переходе в бэкграунд
- Как дебажить происходящее в Binder транзакциях с помощью toolargetool
This media is not supported in your browser
VIEW IN TELEGRAM
Бегущая строка на Compose
Статья с разбором реализации компонента, который для коротких строк ведет себя как Text, а для длинных включает анимацию бегущей строки и добавляет градиент по краям.
Статья с разбором реализации компонента, который для коротких строк ведет себя как Text, а для длинных включает анимацию бегущей строки и добавляет градиент по краям.
Android Developers Backstage: Performance
Выпуск подкаста ADB с разработчиком из команды перфоманса в Android. В выпуске разбираются R8, Perfetto, baseline profiles, различные инструменты и метрики перфоманса, библиотеки Jetpack Tracing и JankStats.
Выпуск подкаста ADB с разработчиком из команды перфоманса в Android. В выпуске разбираются R8, Perfetto, baseline profiles, различные инструменты и метрики перфоманса, библиотеки Jetpack Tracing и JankStats.
Baseline Profiles – реальность сложнее, чем кажется
Твиттер-тред инженера из Square про то, как работают Baseline Profiles, про реальный перфоманс буст и про сложности их создания. Обязательно плолистайте и реплаи, там много ценного.
Твиттер-тред инженера из Square про то, как работают Baseline Profiles, про реальный перфоманс буст и про сложности их создания. Обязательно плолистайте и реплаи, там много ценного.
Twitter
Let's talk about Android Baseline Profiles!
Android team is pushing hard for their adoption. GMaps startup had 40% perf improvements, why isn't everybody jumping on that?!
Reality is a bit more complex...
#AndroidDev #performance
Android team is pushing hard for their adoption. GMaps startup had 40% perf improvements, why isn't everybody jumping on that?!
Reality is a bit more complex...
#AndroidDev #performance
📱Android-разработчик VK Видео (middle)
VK Видео - это один из самых крупных сервисов потокового видео в России. Ежедневно им пользуются десятки миллионов людей и перед командой стоит амбициозная задача - стать видеосервисом 1 в РФ.
Чтобы сделать сервис еще более полезным и увлекательным для зрителей и помогать авторам находить свою аудиторию, они ищут Android-разработчиков
🎯Задачи:
📌Разрабатывать приложение ВКонтакте (продукт видео) для Android;
📌Создавать новые возможности продукта, реализовывать смелые UX-эксперименты;
📌Следить за работоспособностью сервиса и устранять технический долг;
📌Взаимодействовать с командой менеджеров, дизайнеров, аналитиков и тестировщиков;
📌Принимать участие в планировании, обсуждении проектов.
🔥Требования:
💎Отличное знание Java и Kotlin;
💎Хорошие знания платформы Android;
💎Знание классических алгоритмов и структуры данных;
💎Навыки профилирования;
💎Опыт написания Unit-тестов;
💎Опыт работы с аудио или видео на мобильных устройствах (желательно);
💎Готовность активно участвовать в ревью кода.
🛠Стек:
Kotlin — весь новый функционал; Java — legacy части, постепенно переписываемые на Kotlin; RxJava; Room; Coroutines; Jetpack Compose.
🤩Почему у них круто:
ДМС для сотрудника и его детей с первого месяца работы;
100%-ная оплата больничного в течение 30 дней;
Компенсация занятий спортом;
Компенсация питания;
Конкурентный уровень заработной платы.
И многое другое, скорее пиши в рекрутеру - @bxnmx
VK Видео - это один из самых крупных сервисов потокового видео в России. Ежедневно им пользуются десятки миллионов людей и перед командой стоит амбициозная задача - стать видеосервисом 1 в РФ.
Чтобы сделать сервис еще более полезным и увлекательным для зрителей и помогать авторам находить свою аудиторию, они ищут Android-разработчиков
🎯Задачи:
📌Разрабатывать приложение ВКонтакте (продукт видео) для Android;
📌Создавать новые возможности продукта, реализовывать смелые UX-эксперименты;
📌Следить за работоспособностью сервиса и устранять технический долг;
📌Взаимодействовать с командой менеджеров, дизайнеров, аналитиков и тестировщиков;
📌Принимать участие в планировании, обсуждении проектов.
🔥Требования:
💎Отличное знание Java и Kotlin;
💎Хорошие знания платформы Android;
💎Знание классических алгоритмов и структуры данных;
💎Навыки профилирования;
💎Опыт написания Unit-тестов;
💎Опыт работы с аудио или видео на мобильных устройствах (желательно);
💎Готовность активно участвовать в ревью кода.
🛠Стек:
Kotlin — весь новый функционал; Java — legacy части, постепенно переписываемые на Kotlin; RxJava; Room; Coroutines; Jetpack Compose.
🤩Почему у них круто:
ДМС для сотрудника и его детей с первого месяца работы;
100%-ная оплата больничного в течение 30 дней;
Компенсация занятий спортом;
Компенсация питания;
Конкурентный уровень заработной платы.
И многое другое, скорее пиши в рекрутеру - @bxnmx
This media is not supported in your browser
VIEW IN TELEGRAM
Релиз Appyx 1.0.0
- Вышел первый стабильный релиз Appyx – библиотеки навигации от Bumble.
- Вместе с релизом выпустили три туториала: Basics, Navigation и Custom animation.
- Вышел первый стабильный релиз Appyx – библиотеки навигации от Bumble.
- Вместе с релизом выпустили три туториала: Basics, Navigation и Custom animation.
Как нарисовать тени в Android
- Чаще всего достаточно использовать системные тени, определяемые через параметр elevation.
- Если дизайн требует кастомной тени, можно попробовать MaterialShapeDrawable из Material.
- Автор в статье разбирает эти и другие способы создания теней и оптимизирует производительность получившегося решения.
- Чаще всего достаточно использовать системные тени, определяемые через параметр elevation.
- Если дизайн требует кастомной тени, можно попробовать MaterialShapeDrawable из Material.
- Автор в статье разбирает эти и другие способы создания теней и оптимизирует производительность получившегося решения.
Недооцененные хоткеи в IntelliJ
1️⃣⌥ “x” or Alt+“x” – закрыть все неактивные табы
2️⃣⇧⌘V or Shift+Ctrl+V – управление буфером обмена
3️⃣⌥/ or Alt+/ – специальный режим автокомплишна, который предлагает слова без учета контекста
4️⃣⌥⌘L or Ctrl+Alt+L – применение к коду настроек форматирования
5️⃣⌘F12 or Ctrl+F12 – навигация по структуре файла
6️⃣⌃G or Alt+J – выбор нескольких вхождений поисковой строки в файле для их одновременного редактирования
7️⃣⌘⇧↑/↓ or Alt +Shift+↑/↓ – реордеринг строк в файле
8️⃣⌘D or Ctrl+D – дублирование строки
1️⃣⌥ “x” or Alt+“x” – закрыть все неактивные табы
2️⃣⇧⌘V or Shift+Ctrl+V – управление буфером обмена
3️⃣⌥/ or Alt+/ – специальный режим автокомплишна, который предлагает слова без учета контекста
4️⃣⌥⌘L or Ctrl+Alt+L – применение к коду настроек форматирования
5️⃣⌘F12 or Ctrl+F12 – навигация по структуре файла
6️⃣⌃G or Alt+J – выбор нескольких вхождений поисковой строки в файле для их одновременного редактирования
7️⃣⌘⇧↑/↓ or Alt +Shift+↑/↓ – реордеринг строк в файле
8️⃣⌘D or Ctrl+D – дублирование строки
The JetBrains Blog
Top Underrated Shortcuts in IntelliJ IDEA | The IntelliJ IDEA Blog
Shortcuts are in IntelliJ IDEA’s DNA: every possible action is at your fingertips – even those you didn’t think you needed. We share helpful shortcuts with you quite frequently, so by now, you may
This media is not supported in your browser
VIEW IN TELEGRAM
Profileable сборки приложений
- В Android 10 появилась возможность собирать релизные билды со специальным тегом profiliable. По сравнению с дебажными сборками, их перфоманс приближен к релизному.
- Такую сборку можно создать как из интерфейса Android Studio, так и вручную, указав тег в AndroidManifest.xml.
- В Android 10 появилась возможность собирать релизные билды со специальным тегом profiliable. По сравнению с дебажными сборками, их перфоманс приближен к релизному.
- Такую сборку можно создать как из интерфейса Android Studio, так и вручную, указав тег в AndroidManifest.xml.
Open-Obfuscator – новый обфускатор мобильных приложений
- Автор проекта увлекался поиском уязвимостей в существующих обфускаторах, но ему не были рады. Поэтому он решил написать свой, с упором на открытость к разработчикам и рисерчерам. Даже для первого релиза большую часть времени разработки автор вложил в понятную документацию.
- Open-Obfuscator поддерживает обфускацию нативного кода с помощью специального LLVM плагина, и обфускацию Kotlin/Java кода поверх ядра Proguard.
- Нативный обфускатор называется O-MVLL, обфускатор для Kotlin – dProtect.
- Автор проекта увлекался поиском уязвимостей в существующих обфускаторах, но ему не были рады. Поэтому он решил написать свой, с упором на открытость к разработчикам и рисерчерам. Даже для первого релиза большую часть времени разработки автор вложил в понятную документацию.
- Open-Obfuscator поддерживает обфускацию нативного кода с помощью специального LLVM плагина, и обфускацию Kotlin/Java кода поверх ядра Proguard.
- Нативный обфускатор называется O-MVLL, обфускатор для Kotlin – dProtect.
Туториал по работе с жестами в Compose
🕵️Отслеживание тапов
🌟Реализация двойного тапа
👆Жест скролла
👉Жест закрытия по свайпу
🕵️Отслеживание тапов
🌟Реализация двойного тапа
👆Жест скролла
👉Жест закрытия по свайпу
kodeco.com
Gestures in Jetpack Compose: Getting Started
Learn how to implement different gestures in Jetpack Compose and provide your app an intuitive user experience.