Исследование того, как в разных компаниях подходят к автотестам
Женя Мацюк, автор библиотеки 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 минут.
- Больше половины респондентов запускают в паралелль не больше пяти эмуляторов.
Конечно, в исследовании явно есть перекос в сторону больших команд, поэтому учтите это при прочтении статьи.
👍9💩7🔥1
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.
🤡10👍8💩2🖕1
KotlinConf 2023 в вашем городе
KotlinConf 2023 пройдет 13-14 апреля. Если вы хотите захостить митап с его просмотром в своем городе, обратитесь за помощью к команде Kotlin:
- Вам подгонят стикеры, футболки и другой мерч.
- При необходимости помогут с финансированием.
- Ваше событие поместят на общую карту всех ивентов.
KotlinConf 2023 пройдет 13-14 апреля. Если вы хотите захостить митап с его просмотром в своем городе, обратитесь за помощью к команде Kotlin:
- Вам подгонят стикеры, футболки и другой мерч.
- При необходимости помогут с финансированием.
- Ваше событие поместят на общую карту всех ивентов.
👍17💩10
Визуальный гайд по основным операциям над коллекциями в Kotlin
Отличная визуализация функций работы с коллекциями из стандартной библиотеки:
🗺️Mapping
🤐Zipping
🔗Association
🤌Flattening
📙String representation
Отличная визуализация функций работы с коллекциями из стандартной библиотеки:
🗺️Mapping
🤐Zipping
🔗Association
🤌Flattening
📙String representation
👍21🔥2💩1
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 библиотек, не разбираясь, какие конкретно версии для каждой надо выставить.
🔥10
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
👉Подключайтесь и вы!
👍7💩4🤡1
История дебага TransactionTooLargeException
- Что такое Binder и для чего он нужен
- Как происходит сохранение состояния Activity при
переходе в бэкграунд
- Как дебажить происходящее в Binder транзакциях с помощью toolargetool
- Что такое Binder и для чего он нужен
- Как происходит сохранение состояния Activity при
переходе в бэкграунд
- Как дебажить происходящее в Binder транзакциях с помощью toolargetool
👍9
This media is not supported in your browser
VIEW IN TELEGRAM
Бегущая строка на Compose
Статья с разбором реализации компонента, который для коротких строк ведет себя как Text, а для длинных включает анимацию бегущей строки и добавляет градиент по краям.
Статья с разбором реализации компонента, который для коротких строк ведет себя как Text, а для длинных включает анимацию бегущей строки и добавляет градиент по краям.
👍1
Android Developers Backstage: Performance
Выпуск подкаста ADB с разработчиком из команды перфоманса в Android. В выпуске разбираются R8, Perfetto, baseline profiles, различные инструменты и метрики перфоманса, библиотеки Jetpack Tracing и JankStats.
Выпуск подкаста ADB с разработчиком из команды перфоманса в Android. В выпуске разбираются R8, Perfetto, baseline profiles, различные инструменты и метрики перфоманса, библиотеки Jetpack Tracing и JankStats.
👍7
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
👍5🤔2
📱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
🤮40👍9💩4👎1
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.
👍7🤔7🔥5❤1
Как нарисовать тени в Android
- Чаще всего достаточно использовать системные тени, определяемые через параметр elevation.
- Если дизайн требует кастомной тени, можно попробовать MaterialShapeDrawable из Material.
- Автор в статье разбирает эти и другие способы создания теней и оптимизирует производительность получившегося решения.
- Чаще всего достаточно использовать системные тени, определяемые через параметр elevation.
- Если дизайн требует кастомной тени, можно попробовать MaterialShapeDrawable из Material.
- Автор в статье разбирает эти и другие способы создания теней и оптимизирует производительность получившегося решения.
🔥13
Недооцененные хоткеи в 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
👍13🔥6❤1
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.
🔥15
Open-Obfuscator – новый обфускатор мобильных приложений
- Автор проекта увлекался поиском уязвимостей в существующих обфускаторах, но ему не были рады. Поэтому он решил написать свой, с упором на открытость к разработчикам и рисерчерам. Даже для первого релиза большую часть времени разработки автор вложил в понятную документацию.
- Open-Obfuscator поддерживает обфускацию нативного кода с помощью специального LLVM плагина, и обфускацию Kotlin/Java кода поверх ядра Proguard.
- Нативный обфускатор называется O-MVLL, обфускатор для Kotlin – dProtect.
- Автор проекта увлекался поиском уязвимостей в существующих обфускаторах, но ему не были рады. Поэтому он решил написать свой, с упором на открытость к разработчикам и рисерчерам. Даже для первого релиза большую часть времени разработки автор вложил в понятную документацию.
- Open-Obfuscator поддерживает обфускацию нативного кода с помощью специального LLVM плагина, и обфускацию Kotlin/Java кода поверх ядра Proguard.
- Нативный обфускатор называется O-MVLL, обфускатор для Kotlin – dProtect.
🔥18
Туториал по работе с жестами в 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.
👎6