• Прямой эфир: СI/CD в iOS и Android
    +4
    На все вопросы из комментариев постараемся ответить во время прямого эфира
  • Ask me anything. Avito. Android
    +2
    1. Все занимаются. У меня нет под рукой статистики, но очень грубо треть всех автотестов под андроид написали функциональные тестеровщики, треть андроид разработчики, треть QA-dev, видел немного тестов от бекендеров и фронтендеров (изучали видимо как у нас оно устроено). Есть еще порядка шестисот компонентных UI тестов(больше изоляции чем у end-to-end), они почти все написаны разработчиками

    2. У нас для этого отдельная команда, вот мы как раз с nnesterov оттуда. На нас релиз продукта и инфрастуктура вокруг этого.

    3. Да, автоматизация тестрования есть почти во всех проектах. У каждой команды свой набор сценариев, хотя iOS и Android очевидно сильно пересекаются. Мы наоборот ушли от унификации всего автотестирования к решениям которые затачиваются под платформу.

    4. Все возможные тесты запускаются на каждый пуш в рамках PullRequest. Работаем над оптимизацией при помощи Impact анализа на основе диффов: это уже работает в юнит тестах, в ближайшее время сделаем для UI

    5. Все запускается автоматом, периодически появляются issue на ручной запуск, но я старательно резолвлю их с Won't Fix :), т.к. считаю что это плохая практика
  • Ask me anything. Avito. Android
    0
    Мы форкнулись еще до появления отчетов, и сразу пошли путем «решаем свои текущие задачи». Сейчас это вряд ли уже можно хоть как-то замерджить обратно.
    Если мы в конце концов выложим форк к себе на github, можно будет обсудить предметно что делать со всем этим, возможно я преувеличиваю проблемы

    Я не говорил что апдейт имаджей не проблема :) Однако если с образом все хорошо собралось, то нестабильности в дальнейшем не наблюдаем.
    В подкаст зовите, с удовольствием поучаствую
  • Ask me anything. Avito. Android
    +4
    У нас своя обертка (набор костылей), вокруг espresso + uiautomator2 одновременно. Я надеюсь что в феврале доберусь и опубликую ее на github.com/avito-tech.
    Для запуска тестов мы используем внутренний форк github.com/gojuno/composer, правда переписанный уже до неузнаваемости. Там например реализован динамический шардинг и запуск всех тестов в отдельных instumentation процессах. Тоже подумаем над публикацией.
  • Ask me anything. Avito. Android
    +2
    1. Эмуляторы достаточно стабильны уже! Удивительно сколько работы проделал google за последнее время в этом направлении.
      Чтобы избавиться от потенциальных проблем мы запускаем эмуляторы перед самим тестированием и роняем контейнеры после. Никакого специального тулинга для стабилизации здесь не требуется на данный момент. У нас есть программа на питоне, которая принимает yaml конфиг и стартует особым образом эмуляторы.
      конфиг выглядит например вот так:


      configuration:
      network: CI
      image: <local-registry>/android-emulator:<tag>
      environments:
      default:
        - 'animations_disabled'
        - 'spell_checker_disabled'
        - 'ime_hard_keyboard'
      
      functional-19:
          api: 19
          replicas: 10
      
      functional-22:
          api: 22
          replicas: 10
      
      functional-23:
          api: 23
          replicas: 10
      
      functional-24:
          api: 24
          replicas: 10

    2. в 2017ом мы в основном тестировали на FirebaseTestLab, но на наших масштабах это дорого, долго (очереди на популярные девайсы), нестабильно (черный ящик и непонятные сроки решения проблем). В конце года мы полностью переехали на свои мощности. Тестируем только на эмуляторах (см конфиг для регресса выше). API выбрали как 4 самые популярные у юзеров.


    3. На всякий случай не буду ничего подробно расписывать (sensitive инфа как никак), скажу только что вся процедура происходит автоматически.
  • Ask me anything. Avito. Android
    +2
    Набор сервисов у нас довольно типичный: JIRA/TeamCity/BitbucketServer

    Как только происходит открытие PullRequest инициируется параллельная серия проверок (скриншот) и ревью кода. Как только все это окрасится в зеленый цвет — происходит мердж в ветку синхронизации (develop)



    Все task'и на CI — это скрипты (bash / python), лежащие в репозитории с проектом.
    Скрипты запускают команды в docker контейнерах. Эмуляторы для instrumentation-тестов также живут в контейнерах.

    Выполняется все это в kubernetes кластере по соседству со всем остальным CI Avito.

    Для того чтобы избежать проблем со сломанным кодом после мерджа мы предварительно подмердживаем первым шагом код из develop.
    Если за время проверок кто-то успел смерджится — проверки стартуют заново.
    Реализовано это при помощи самописного плагина для Bitbucket Server, он стартует билды в TeamCity, отменяет неактуальные, а также может автоматически замерджить твой PR при достижении нужных кондиций (если ты его об этом попросишь)
  • Встреча Android-разработчиков, посвящённая языку Kotlin
    +1
    https://www.youtube.com/watch?v=8u4fZ1z4X-w
    Но с ужасным звуком. простите :(
  • Встреча Android-разработчиков, посвящённая языку Kotlin
    0
    Изначально не планировали, хотелось именно “встретиться”, но если будут ещё заявки на трансляцию, то попробуем организовать! Запись докладов сделаем.
  • Доступна IntelliJ IDEA 15 Preview
    0
    а Kotlin?
  • I/O Schedule 2014: плохой пример для обучения
    0
    github.com/chrisbanes/philm неплохо написан. Мне не очень нравятся его god-контроллеры, но в целом разбор кода этого приложения неплохо помог понять некоторые архитектурные решения.
  • Реактивное программирование под Android
    0
    все работает. lambdas, rxjava, retrolambda, AS 0.8.1

    вот тут есть работающий пример, из которого я брал конфиг
    github.com/fs/android-base
  • Реактивное программирование под Android
    +1
    github.com/evant/rxloader попробуйте это
  • Создание оффлайн карты для iOS приложения
    +1
    так сколько в итоге приложение весит?
    точнее интересуют именно тайлы
  • Android компонент с нуля
    0
    Хендлер и меседжи вместо runOnUiThread — велосипед, незнание основ.


    public final void runOnUiThread(Runnable action) {
            if (Thread.currentThread() != mUiThread) {
                mHandler.post(action);
            } else {
                action.run();
            }
        }
    


    на самом деле не все так страшно, в остальном жирный плюс
  • Android компонент с нуля
    +3
    думаю будет лучше оставлять в тексте «activity» в таком случае
  • Android компонент с нуля
    +4
  • Android компонент с нуля
    +8
    Это совсем не исключает наличие кастомных компонентов, и уж точно не означает что девелоперы не должны уметь их писать.
    Вы же против крайностей?
  • Технология CORE
    0
    Чем больше в интернете разных подходов описать одну и ту же проблему — тем проще новичкам будет учиться.
    Задача опытных девелоперов тут — не допустить в статьях откровенных ошибок в решении проблемы.

    и да, хорошо если в решении будут линки на хрестоматийную литературу

    p.s. сори чет не прикрепилось куда надо, это ответ для maxatwork
  • Опрос о специфике тестирования при разработке приложений для Android?
    0
    если в штате есть тестер, а тем более «не выделяют». и к тому же приложение все из себя сложное с кучей состояний и сложной логикой обещния с сервером, то интеграционные тесты могут обойтись по времени больше чем само приложение, тестер же пройдет на каждый билд по основным сценариям — и ок.
    да простит меня гугл…
  • Во Львове просят предоставить Java статус регионального языка *
    +3
    Подписался! Сколько абсурдных проектов продвигаются ежегодно, этот выглядит абсолютно разумным. Я тоже java developer, и мои чувства также задеты!
  • В MIT разработали систему построения карт в реальном времени для спасателей
    +2
    топографические кретины вздохнут с облегчением!
  • Как раздавать инвайты на Google+
    0
    dsvoronin@gmail.com
    пришлите, кому не жалко.
    спасибо
  • Цифровая подпись и электронные закупки
    +2
    www.sinergi.ru/p1166aa1.html
    тут попытка доступно пояснить процесс

    # Установка сертификатов, полученных в казначействе
    www.sinergi.ru/DswMedia/doc1022.doc

    # Инструкция по регистрации личного кабинета
    www.sinergi.ru/DswMedia/doc1023.doc
    это округ делал для школ наших.

    все получилось
  • Исследование факторов, влияющих на выбор видеокарты
    +1
    отправил. памяти у меня 768, а варианты только 512(строго) и 1024+. Неважно, но напрягло
  • Lightworks доступен для публичного beta-тестирования
    0
    A lot of posts ask about why certain codecs don't work with the free Lightworks Beta. Most of the time, it's because the codecs concerned need to have a license fee paid to use them. We obviously can't supply an unlimited quantity of something that costs us money. We are looking at ways to integrate or invoke Open Source codecs — so if your codec isn't supported now, it may be in the near future.
    ©ForumAdmin
  • В Турции разбанили видеосервис YouTube
    0
    рад за Турков
  • Neverhood Songs
    +1
    ooo klayman's theme

    туду-дудум ту-дудум
    таба-дадам та-дадам

    \m/
  • Легальный лунапарк с шахматами и библиотекаршами
    0
    www.azbukavkusa.ru/index.aspx?sPage=3063
    дороговато, но понастольгировать самое то
  • ВКонтакте купил домен VK.COM и начинает расширение на запад
    +4
  • ВКонтакте купил домен VK.COM и начинает расширение на запад
    +6
  • Бесплатная лицензия для Acronis True Image 10 Personal Edition
    +3
    это что-то на пиратском? переведите плиз :)
  • Будущее за роботами
    +1
    и что, с этими червяками ты собрался захватить мою звезду смерти? ха!
  • Культура сна
    0
    мой будильник можно ставить на нон-стоп. Убийственно :)
  • Культура сна
    +5
    atri, у меня впечатление, что Вы пали жертвой агрессивного фитнесс маркетинга, который нашу страну с 80-х еще помоему мучает

    Фитнес зал — это хорошо, правильно, и очень нужно, но это не необходимость. Держать себя в форме можно занимаясь дома и во дворе(турник и брусья надеюсь есть?)
  • Культура сна
    +3
    и то и другое!
  • Hardware Brainfuck Interpreter
    +1
    он ничего не потребляет, а при включении плагина fireplace 0.2b даже сам может произвести немного световой и тепловой энергии: D
  • Hardware Brainfuck Interpreter
    +6
    вообщето он позиционируется, как мобильное решение
  • Firefox 3.1 с TraceMonkey будет быстрее, чем Chrome
    +2
    привязать определенный движок к определенному ресурсу… ммм
  • Качаем с Народ.Диска без капчи и без яндекс.бара
    0
    коммент от яндекс-девелоперов видимо ждут :)
  • Качаем с Народ.Диска без капчи и без яндекс.бара
    +1
    на megaupload.com видимо таже схема