Как стать автором
Обновить

Ask me anything! Задай вопрос команде мобильной разработки «Лаборатории Касперского»

Время на прочтение 2 мин
Количество просмотров 4.3K
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 88

Комментарии 88

Осторожно! Токсично!

Задаю вопрос не с 13, потому что это всё-таки рабочий день и с 13 до 20 я работаю.

Какую роль выполняет Каспрессо, я так и не понял, честно говоря. Посмотрел примеры отсюда github.com/KasperskyLab/Kaspresso и всё равно не понял. В пример много строчек (правда из-за скобок), которые делают в итоге полтора действия.

Вот код, который сейчас у меня под рукой:

    /**
     * Пин запрашивается после сворачивания по Home при включенном блоке на сворачивании
     */
    @Test
    fun pinLockByCollapse() {
        enablePin(withCollapse = true)
        mUiDevice.pressDeviceHomeButton(false)
        mUiDevice.clickPassphraseUnlockedNotification()
        mPinLockScreen.verifyEnterPinInLockScreen()
    }


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

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

При этом сопровождение будет несоизмеримо легче, потому что каждый дополнительный фреймворк тащит с собой дополнительные ошибки и проблемы обновлений. В случае ошибок частенько бывает так, что тестировщик напишет какой-то костыль, который её обходит. Через сколько-то времени выходит новая версия с исправлением, но никто не читает все изменения, потому что некогда, и костыли не убирают и так они остаются мусором. Сквозь этот мусор через несколько лет продираются совершенно другие люди со словами «ну и нафига, ведь и так всё работает нормально».
А ещё возникает проблема обновления, когда зависимости не обновляют по несколько лет, а потом ррраз! И ничего не работает, всё сдохло, нужно теперь разбираться с каждой отдельной проблемой, коих тут вагон. Каждый androidTestImplementation приносит свои проблемы и люди стараются в итоге как можно дольше не обновлять зависимости. Что в итоге выливается в полную неработоспособность системы, когда обновление всё-таки приходится делать.

В общем, я не понимаю сути Каспрессо, его преимуществ. Можете объяснить скептику? Только, пожалуйста, не нужно ставить в преимущества фреймворка Page Object, потому что это не является его заслугой.

Ну и вопрос общий. Как вы выбираете, тянуть какую-то библиотеку в проект или нет? Скажем, вот есть офигенный RxJava, давайте его тащить, без него жизни нет. А тут бах и корутины. Оставляем эрыкс? А зачем? Убираем? А зачем тащили? А не боитесь, что очередная библиотека притащит с собой уязвимость, о которой не предполагали? Притащили, скажем, библиотеку для отображения svg на Андроид 1.2, а потом выяснилось, что если на /sdcard/ лежит файл debug-template-lib-test.svg, то либа пытается вгрузить этот файл, чем бы он на самом деле ни был. Не боитесь такого?

Я выделил несколько основных вопросов:
1) Какую роль выполняет Каспрессо?
2) Зачем бы мне завязываться на внешний фреймворк, по которому нет вообще никаких гарантий?
3) Как вы выбираете, тянуть какую-то библиотеку в проект или нет?
Отвечу по частям.

1) Kaspresso – это многофункциональный фреймворк, который облегчает написание UI-автотестов для Android. Разработчики начинали с создания обертки над Kakao и Espresso для уменьшения количества флаков в тестах. По мере накопления опыта автотестирования у нас – развивался и Kaspresso. Получилось, например, ускорить в 10 раз работу с UI Automator. В планах – помощь с настройкой инфраструктуры для запуска тестов.
Более подробную информацию о фичах Kaspresso можно посмотреть в репозитории.

2) Фреймворк развивается несколькими людьми внутри компании, плюс сообществом разработчиков вне её. Код полностью open-source, поэтому его можно форкать, развивать, и использовать без завязки на наш репозиторий. Если вы сможете помочь нам в его развитии – Pull Request-ы приветствуются.

3) Уязвимости в используемых библиотеках, а также возможность их использования в соотвествии с лицензионным соглашением проверяются отдельными командами Лаборатории.
Первоначальное решение о необходимости затянуть библиотеку принимают разработчики. Если это достаточно узко специализированная библиотека, на которую не завязывается весь проект – тут всё просто.
На вашем примере перехода с RxJava2 на Coroutines расскажу про процедуру принятия решения.
Инициатор внедрения должен детально изучить новую библиотеку. После чего он предлагает команде рассмотреть плюсы от такого перехода и возможные проблемы. Если решение о внедрении принимается – мы стараемся подтянуть уровень знаний всей команды о ней. А инициатор становится неким "евангелистом", которому уходят наиболее сложные кейсы. Только после этого происходит переход.
В новом проекте без RxJava2 мы можем сразу начать использовать Coroutines.

В случаях, когда сторонняя библиотека втягивается в SDK, к ее выбору подходим значительно более тщательно, чем при принятии такого же решения для приложения.
Библиотека втягивается только в случае, если она несет значимый функционал, самостоятельная разработка которого сложна и займет длительное время. Примером тут может быть openssl, — самостоятельно данный функционал реализовать затруднительно, и подобная реализация неизбежно будет значительно хуже оригинала.
Библиотеки, предлагающие решение какие-либо архитектурные проблем, в SDK не затягиваем.
Причин на это несколько:
— Возможные конфликты между версиями библиотек, используемых в SDK, и аналогичными библиотеками в проектах, в которые данный SDK будет встраиваться.
— Увеличение объема бинарного кода SDK.
— Появление зависимостей на сторонний код, план развития которого в будущем нами не контролируется. В качестве примера могу привести недавний коммит в код библиотеки Sqlite, полностью убравший из новых версий данной библиотеки поддержку крипто кодеков. Чем больше подобных зависимостей в проекте, тем больше вероятность того, что часть из этих внешних библиотек в какой-то момент перестанут поддерживаться их авторами. В этом случае придется их поддерживаться самостоятельно или искать какую-то замену. В случае с SDK подобные замены могут приводить к нарушению обратной совместимости и вызывать дополнительные сложности по переходу на новую версию SDK у клиентов, которые его используют.
И ещё вопрос. Как вам SAF в 11? Делали замеры производительности? Будете ли удерживать до последнего таргет на 10, чтобы работал флаг легасистораджа?
К переходу на Target API 29, 30 уже готовы, в базовых компонентах SAF поддержан. Форсировать переход на данные Target API и, следовательно на SAF, необходимости пока нет. Но как только данный Target API станет обязательным для приложений в Google Play, готовы на него перейти. Производительно SAF в Android 11 стала лучше, чем в 10, однако, API у Google это получилось на мой взгляд достаточно корявым и неприятным.
На основе каких данных работает мобильный антивирус? Насколько я понимаю на мобильных платформах (в частности Android) нет возможности анализировать файлы, поведение, память, сетевой трафик, и никакого «антивирусного» API операционная система не предоставляет. Или это не так?
На Android дистрибутивы сторонних приложений, установленные на устройство, доступны на чтение для других приложений, имеется также возможность с согласия пользователя удалить эти приложения. Таким образом антивирусные приложения имеют возможность анализировать и детектировать вредоносный код в них.
Кроме того, исследовать поведение подозрительного приложения можно в специально созданной для этого контролируемой среде. Такую среду можно создать и на устройстве пользователя, но чаще дистрибутивы подозрительных приложений анализируются в специально предназначенной для этого облачной инфраструктуре.
На Android также есть API, позволяющий перехватывать трафик других приложений. С его помощью можно анализировать сетевую активность приложений, обнаруживать аномалии и сетевые атаки. Для использования этого API необходимы специальные разрешения пользователя, кроме того, одновременно его может использовать только одно приложение на устройстве. Из-за подобных ограничений используют этот API для обнаружения вредоносного ПО не часто, но, тем не менее, такая возможность на Android есть.
Добавлю: качество работы антивирусных решений под Android проверяется независимыми тестовыми лабораториями, например, AV-Test и AV-Comparatives. Тесты на качество обнаружения угроз (так называемый “Detection Rate”) проводятся на довольно больших коллекциях свежих файлов, разнообразных по своей структуре и поведению и наш Kaspersky Internet Security for Android стабильно показывает отличные результаты, что говорит о том, что используемого нами API операционной системы Android достаточно для обеспечения защиты наших пользователей.
1. Используете ли Вы фермы с девайсами?
2. Использовали ли ферму STF? Расскажете по поводу примеров интеграции?
Разработка и тестирование проводится как на реальных устройствах, так и на ферме.
Ферма — у нас своя, как раз на базе OpenSTF.

Примеры интеграции:
  • ферму используют ручные тестировщики и разработчики, как инструмент, позволяющий иметь доступные под рукой устройства в режиме 24/7 (что стало особенно критично в текущих условиях вынужденной удаленной работы).
  • автотесты используют ферму через разработанный в компании jenkins-плагин.
  • благодаря мониторингу использования устройств можно максимально оптимизировать пул устройств доступных для тестирования.


Когда приложение под Android, и KIS и KES начнут поддерживать работу с MS Edge? Завтраками кормите уже несколько месяцев. Десктопные версии с этим браузер ом дружат. Неужели MS внесли в chromium столько изменений, что совместимость трудно реализовать?

Добрый день. Предположу, что речь о функциональности Web Filter. Поддержать ее работу с браузером Microsoft Edge технически возможно, как в нашем корпоративном продукте, KES for Android, так и в продукте для защиты домашних пользователей – KIS for Android. При этом при развитии продуктов мы ориентируемся на потребности наших пользователей. Буду откровенен – запросов на поддержку MS Edge практически нет, это фича не входит даже в топ 100 популярных запросов. Объясняется это просто – market share у браузера Edge на мобильных платформах близок к нулю, вот статистика, которой можно доверять. Таким образом, поддержка MS Edge – это не про mass market. При этом, допускаю, что существуют корпоративные клиенты, в чьих внутренних корпоративных политиках в качестве используемого на Android-устройствах браузера выбран MS Edge и кто в целях обеспечения безопасности мобильных устройств и управления ими (Mobile Device Management) использует Kaspersky Security Center и Kaspersky Security for Mobile. Такие корпоративные клиенты могут обсудить с представителями нашего бизнес-подразделения возможность заказной поставки им компонента для браузера MS Edge for Android.
1. Когда Kaspersky Internet Security для Android научится поддерживать другие браузеры, кроме Chrome?
2. Когда в Kaspersky Internet Security для Android появится возможность добавить «Резервный код»?
3. Когда можно будет делать резервную копию базы паролей на мобильном устройстве с Kaspersky Password Manager для Android?
4. Когда будут Push уведомления в приложении Kaspersky Safe Kids, чтобы разрешить ребенку то или иное приложение? Будет ли приложение когда-нибудь блокировать Google Assistant, как ваши конкуренты?
5. Почему разработчики очень редко или вообще не отвечают своим бета-тестерам?
Добрый день. Спасибо за хорошие вопросы!
1. Уже реализовано. В Kaspersky Internet Security поддерживается, например, браузер Huawei, что особенно актуально для всех новых HMS-only устройств без google play services и браузера Chrome.
2. Рискну предположить, что под “Резервным кодом” вы понимаете некий запасной код доступа, используемый в таких фичах KIS for Android, как Anti Theft и App Lock. Резервный код вы можете забыть так же, как и основной. Если боитесь забыть код, рекомендуем использовать доступ по отпечатку пальца.
3. Поддерживать не планируем, так как непонятна потребность. Пароли в Kaspersky Password Manager хранятся в облаке, локальный бекап – это потенциальная дыра в безопасности, какую проблему решает локальный бекап при наличии облачного – непонятно. Если поясните, смогу ответить более точно.
4. «Request for Access» для приложений в Kaspersky Safe Kids уже реализован. Мы не считаем правильным решением полностью блокировать Google Assistant, так как он может быть полезен ребенку, при этом мы блокируем нежелательный для ребенка контент в поисковой выдаче Google Asistant. Поясните, в каких сценариях работы с Google Assisst конкурентные решения с вашей точки зрения работают лучше, тогда я смогу дать более развернутый комментарий…
5. Приносим извинения, если уделяем недостаточно времени. Фанклуб ЛК – это классная команда! Приглашайте – пообщаемся, ответим на все вопросы, вот такой, например, формат в свое время хорошо зашел.
3. Не совсем доверяю облачным сервисам, вдруг у меня закончится лицензия на Kaspersky Password Manager и я забуду продлить ее, а в это время вы уже удалите все мои данные, кроме 15 записей или же будет какой-нибудь сбой в синхронизации, поэтому люблю делать резервные копии.
Без вашего ведома записи удалены быть не могут. Кроме того, в облаке делаются бекапы, в случае каких-либо технических проблем база может быть восстановлена.
По условиям вашего продукта после окончания лицензии могут быть удалены из облако. без моего ведома, нажимать где то кнопку что я согласен на удаление явно не требуют или это в соглашение забыли указать.
Вспомнил почему мне нужна была резервная копия. Случайно удалил не ту папку с данными и эти изменения успели синхронизироваться с облаком и на других устройствах. При обращении в поддержку предложили откатить на неделю назад, то есть я терял больше данных (очень активно пользуюсь программой каждый день), чем сам ошибочно удалил. А так смог бы перед изменениями сделать резервную копию и откатить на нужный мне срок. Пришлось восстанавливать данные для нескольких сайтов вручную.
Спасибо, запрос понятен и передан в команду KPM-сервиса.
P.S. По ссылке написано, что "Если вы перешли на бесплатную версию и количество записей в вашем хранилище превышает ограничение бесплатной версии, вам требуется выбрать записи для дальнейшего использования". Вы сами выбираете, какие записи оставить.
С этим не поспорить. Нужно из более 200 записей, оставить всего лишь 15 — хороший выбор оставляет компания…
или продлить лицензию… 15 записей бесплатно — это в целом-то не так уж и плохо…
Привет. А расскажите про навыки мобильных разработчиков, которые нужны в вашем подразделении. Используете ли вы современный стек или же большая часть разработки идет на с++?
И какие сейчас открытые вакансии есть?

Привет. Расскажу про навыки Android-разработчиков, которые делают пользовательские продукты.
Мы следим за развитием индустрии. У нас используются как новейшие библиотеки из Jetpack, Coroutines, так и проверенные временем Clean Architecture, RxJava2, Moxy и многое другое. Весь новый код пишем на Kotlin. Конкретный стек зависит от проекта. Мы всегда за "обновление", если это помогает нам в работе (подробнее о выборе библиотек отвечал выше).
Мы также активно смотрим за новинками в библиотеках и подходах Android-разработки, такими как Compose и многомодульность.
Разработчикам так же полезно разбираться в базовом уровне в C++ и JNI для обертки используемых нативных библиотек.
Более подробно про такую вакансию можно посмотреть тут.

Привет!

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

Расскажу про iOS.

На текущий момент вся платформенная разработка ведется на Swift. Objective-C осталось не так много и, в основном, в стареньких, редко меняющихся кросспроектных фреймворках, которые “переписывать ради переписывания” выглядит расточительным. Еще, конечно, мы используем ObjectiveC/C++ в качестве бриджа между продуктовым Swift-кодом и компонентами на С++, поставляемыми другими командами Лаборатории, не относящимися к мобильному штабу. Но, повторюсь, основная разработка ведется на Swift, поэтому мы ожидаем, что разработчик нашего направления хорошо знаком именно с этим языком, его сильными и слабыми сторонами, понимает, как писать эффективный, производительный и понятный код именно на Swift, осознает, как происходит диспетчеризация вызовов и как с этим “не напортачить” в критических модулях =)

В работе, в основном, опираемся на нативные фреймворки и собственные наработки, не используя “десять популярных библиотек для отрисовки таблиц”. Но это не значит, что это скучно. В настоящий момент, например, мы активно пробуем Mac Catalyst, некоторые реактивные подходы, предоставляемые Combine и даже, признаюсь, попробовали SwiftUI, но он, честно говоря, оказался пока не готов к продакшн-разработке — продолжим следить. В качестве единой архитектуры iOS-приложений используем собственную интерпретацию RIBs, отлично подходящую для наших требований к безопасной и легко расширяемой разработке.

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

Привет!


Хочу добавить, что С++ разработчики нам также очень нужны.
Общий код, используемый на разных платформах, объединен в компоненты (PDK – product development kit). Данный код разрабатывается выделенным подразделением, и используется в большинстве продуктов компании, в том числе и в Mobile продуктах. Эти компоненты пишутся преимущественно на C++.


Разработка на С/С++ ведется и внутри мобильного подразделения. У нас есть свои, специфичные для мобильных продуктов, базовые компоненты. Ряд мобильных операционных систем, таких, например, как «Аврора», поддерживают разработку исключительно на С/C++.
В связи с этим С++ разработчики востребованы во многих подразделениях ЛК, в том числе и у нас.


Более подробно про вакансию C++ разработчика под Mobile можно посмотреть тут

А ещё нам нужны джедаи мобильного тестирования! :)

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

Присоединяйтесь к команде увлеченных своим делом специалистов. Это возможность осуществить вашу мечту — весь день вдумчиво тыкать в телефон и получать за это деньги.

Если заинтересовало, откликайтесь на открытую вакансию.
2. Речь идет о другом Резервном коде., его не хватает вашем мобильном продукте, всегда жду полного окончания лицензии из-за этого на смартфоне, а на ПК все просто, добавил код и забыл. На мобильном либо смотришь постоянные уведомления с просьбой продлить, или сокращаешь общий срок лицензии на всех своих устройствах.

4. Специально ограничиваю ребенку интернет, но эта уязвимость с Google Assistant не дает нужного эффекта, ребенок использует его для просмотра всего, то есть он действительно полезен обходить ограничения вашей же программы. Сделайте отдельную настройку для таких пользователей, как я. Поставил галочку и это приложение недоступно, кому нужно будет, тот оставит.

6. Раз решили поднять вопрос с кодами блокировки, заметил, что у вас при блокировки Анти-Вором сейчас запрашивается ПИН-код, но вот никакой информации об этом нет в вашей справке и как можно разблокировать тоже. Куда вводить в таких случаях код восстановления не ясно.
П2. Да, действительно, вы можете добавить новый «резервный» код активации в личном кабинете на портале my.kaspersky.com, но применять его нужно будет вручную. Честно говоря, даже не скажу сходу, почему она не применяется «автоматом» — взял вопрос на контроль, проработаем.
Также рекомендую присмотреться к подпискам, они сапопродляемые, не требуют ввода новых активационных кодов.
Подписки не интересуют, так как они не гибкие, не смогу уменьшить или увеличить количество защищаемых устройств при желании со скидкой, как обычную лицензию.
Доброе утро. Подписочные лицензии на сервис Kaspersky Security Cloud на первый взгляд более гибкие, чем активационные коды фиксированного сроки действия. В рамках сервиса вы также можете управлять устройствами, к которым применяется подписочная лицензия. Уточните, пожалуйста, пошагово сценарий работы с активационными кодами. Интересует, что можно было сделать раньше и не получается сделать с подписками.
Добрый день,
Пользуюсь лицензиями Kaspersky Internet Security и Kaspersky Total Security.
Минусы подписки на сегодняшний день:
Не могу изменить количество устройств при продлении или же сразу с учетом скидки, как в обычной лицензии. Допустим, у меня истекает лицензия на 3 устройства KIS и я хочу уменьшить количество устройств при продлении с учетом скидки, я просто покупаю на 2 устройства (1350р) и активирую это продление на 12 месяцев. А при использование подписки мне придется отключать подписку, потом уже покупать лицензию за полную стоимость (1800р). Нет гибкости в этом у ваших продуктов. У конкурентов более гибкие варианты, нужно 4 устройства, поставил галочку и взял на 4. Нужно на 7 устройств, также поставил галочку и взял. У вас же выбор строго ограничен: 2,3,5 и 10. Будто других цифр нет.
Для лицензий подписок нет никаких акций, всегда покупаешь по фиксированной цене или уже повышенной. А для обычных у вас бывают акции и можно купить с хорошей скидкой.
Не люблю когда работа продукта зависит от подключения каким то кабинетам.
Добрый день. Теперь понятно, спасибо. Ответственные коллеги занимаются проработкой решения на уровне портфеля.
П4. В случае, если вы выдали приложению Kaspersky Safe Kids все необходимые разрешения, при запросе через Google Assistant Ребенком нежелательно контента (например, «Порно»), будет происходить блокировка. Если этого не происходит, пожалуйста, свяжитесь с нами любым удобным способом: support.kaspersky.ru/b2c/#product или напишите на mobilesupport@kaspersky.com, мы поможем разобраться в проблемной ситуации.
Блокировать полностью Google Assistant неправильно, так как он довольно глубоко интегрирован в OS, зачастую являясь частью лочнера. Блокировка может привести к проблемам, превратить устройство в «кирпич».
Также, если вы видите примеры другой, более устраивающей вас реализации подхода к блокировке, укажите ее в запросе.
Спасибо!
Добрый вечер,
Можно ли реализовать так, чтобы ребенок не мог использовать совсем для выхода в интернет Google Assistant? Мне нужен именно этот функционал, как многим моим знакомым. Поможет ли мне эта настройка для этого?
Эта настройка действует только на интернет-браузер Google Chrome, заблокировать сетевую активность Google Assist она не поможет.
В итоге получается, что вы оставляете уязвимость для ребенка, чтобы он постоянно сидел за смартфоном и в интернете. Может все-таки стоит задумать и сделать нужную настройку? Ведь конкуренты нашли выход.
Просматриваете ли вы отзывы продукта на 4PDA?
Доброе утро.
Под настройкой вы имеете ввиду полное блокирование доступа всего устройства в Internet? Если да, то запрос понятен, такая фича в будущем может появиться. И я все-таки не совсем понимаю, почему вы говорите об уязвимости и отсутствии защиты при текущей реализации фильтрации контента. Дайте, пожалуйста, больше информации, к какому нежелательному контенту и как Ребенок получает доступ. Как я уже сказал, запросы к «взрослому» контенту в Google Assistant должны блокироваться.

Отзывы на специализированных форумах, таких как 4PDA, просматриваем и анализируем. Форумы являются одним из источников сбора обратной связи, работу с которой мы, как мне кажется, выстроили довольно системно. Весь фидбэк (обращения в саппорт, отзывы в магазинах приложений, e-mail обращения из продукта, посты на форумах, обратная связь от партнеров и т.п.) поступает, агрегируется и обрабатывается в одной системе.
Дело не в контенте для «взрослых», дело в том, чтобы ребенок не зависал в интернете вовсе, а Google Assistant позволяет это сделать, так как работу приложения ну никак не ограничить, не по времени, не доступом к сети.
Ребенок спокойно запускает приложение и сидит вконтакте и других ресурсах, вместо учебы.
А почему бы в этом случае не воспользоваться функцией Блокировки устройства? Это лучше, чем блокировать доступ в Internet, так как Ребенок и без выхода в интернет сможет играть в игрушки, вместо того, чтобы делать уроки.
Все игры ограничены, используется в основном настройка для доступа к сайтам связанных только с учебой, но «уязвимость Google Assistant» делает эту настройку бесполезной.
Доброе утро. С одной стороны, вы просите полную блокировку доступа устройства в Internet: "чтобы ребенок не зависал в интернете вовсе", с другой — используете настройку "для доступа к сайтам связанных только с учебой". Полная блокировка выхода устройства в сеть практически равнозначна блокировке использования устройства (настройка «Использование устройства», находится правее настройки «Интернет»), присмотритесь к ней.
Что касается полной блокировки Google Assistant — подумаем.
Да, на первый взгляд, но упоминания про ПИН-код после блокировки в статье нет. Раньше писали, что это секретный код, теперь что то другое. Напишите более подробно про ПИН-код или сделайте пошаговые скриншоты как разблокировать устройство, если заблокирован ПИН-кодом.
Согласен, сделаем, спасибо!
Могли бы уточнить по срокам внесения изменений в справку?
Также скажите, пожалуйста, когда будет подобный раздел в справке Safe Kids? Начинает надоедать бегать по разным справкам продуктов, чтобы настроить программу корректно.
Добрый день,
Спасибо, надеюсь он будет обновляться (дополняться) и доступен всем: support.kaspersky.com/help/ru, а не только по прямой ссылке здесь.
Возник вопрос: как разрешить это в приложении, судя по справке, я могу через приложение дать доп. время ребенку, но в итоге всегда даю через My Kaspersky. а не родительское приложение: support.kaspersky.com/KSK/Win1.5/ru-RU/151284.htm
Где сбой: неверная информация в справке или глюк в родительском приложении на мобильном устройстве? Я так понимаю такая возможность есть только для Windows. Планируется ли ее реализовать для мобильных устройств и в какие сроки?
Добрый день. Скажите развитие приложения Iot scanner для андроид заморожено? Такой вывод сделал потому что приложение не видело подключенную сеть вай фай на 9-м андроид, после обновления до 10-го андроида. Iot scanner перестал запускаться.
Спасибо
Добрый день. Приложение IoT Scanner для Android выкладывалось в Google Play как MVP (Minimal Viable Product) с целью проверки ряда продуктовых гипотез, оно выполнило свою задачу и было снято с дистрибуции, при этом осталось на устройствах тех пользователей, которые успели его установить. Инсайды, найденные в ходе пилотного запуска, легли в основу нашей долгосрочной стратегии по защите умного дома. Некоторые из функций, такие как New Home Device Protection, уже сейчас представлены в нашем сервисе Kaspersky Security Cloud, другие, такие как проверка telnet/ssh, а также других протоколов для удаленного управления устройствами на безопасность, анализ их защищенности, будут использованы в решениях, которые еще находятся в разработке и не вышли на массовый рынок.
Эксперименты, поиск инсайдов, принятие решений на основе данных/аналитики с реальных пользователей – это один из базовых столпов современных подходов к развитию продуктов.
Можно еще вопрос?
1. Как обработать в тесте свайпы (имеется в виду свайп одним пальцем)? Можно без привязки к конкретной вьюхе, а просто свайп по экрану. Стандартный swipeDown() от androidx.test.espresso.action.ViewActions.swipeDown что-то не очень работает.
2. Как написать просто ожидание flakySafely без привязки? Иногда это очень помогает визуально понять на чём интерфейс застрял.
  1. Если не получается через Espresso, можно попробовать с помощью UI Automator. В Kaspresso есть обертка над ним (Kautomator), которая содержит функцию device.uiDevice.swipe(startX, startY, endX, endY, steps).
  2. FlakySafely работает посредством перехвата эксепшнов, возникающих при определенном действии над View. Поэтому его нужно обернуть в flakySafely{}. Если нужно просто ожидание, то в крайних случаях можно использовать какую-нибудь реализацию wait() (например, Thread.sleep()).
    Любые вопросы про Kaspresso можно также задавать в чатике.
спасибо большое!:)
Проходят ли мобильные приложения Касперского независимый пентестинг? если да, то какую приблизительно оценку получают.
Добрый день. В «Лаборатории Касперского» внедрены SDL-практики, в частности, проводится и penetration testing. Есть специальная команда, на нем специализирующаяся. Ребята предоставляют как сервис для внешних заказчиков, так занимаются и продуктами компании. Мобильные B2B-решения также периодически тестируются. Пентесты — это недешево и очень востребовано, поэтому проводится оно для мобильных продуктов при обоснованной необходимости. Поскольку к компании есть своя команда, практика привлечения внешних подрядчиков для пентестов мобильных продуктов не используется, при этом на моей памяти был по крайней мере один случай, когда наши партнеры заказывали у внешней компании тестирование одного из наших мобильных продуктов. Все прошло успешно.
Есть ли у вас в приложении аналитика? Как вы ее контролируете? Т.е. вышел новый релиз и вдруг что-то случайно сломалось и какой-то ивент перестал трекаться или трекается без каких-то параметров. Есть ли у вас какая-то система мониторинга за аналитикой? Покрыта ли тестом аналитика? Может есть какие-то еще механизмы?
Добрый день. Современная мобильная разработка — это частые релизы (короткий Time 2 Market), обработка больших объемов данных и real-time отслеживание качества продукта. Аналитика — это MUST, без нее управлять продуктом (особенно таким как KISA for Android с 10+mln MAU) невозможно. Мы стараемся принимать решения на основе данных, не вкладываться в неподтвержденные экспериментами дорогие фичи. У нас есть команды роста и выделенный продуктовый аналитик (аналитик данных). В качестве инструмента используется Firebase, есть BI и отчеты по ключевым продуктовым метрикам.
Для мониторинга качества в проде, оперативного отлова проблем, вызванных внешними факторами, такими как деплои инфраструктурных обновлений, были выделены так называемые «критически пользовательские сценарии», они были покрыты аналитикой по качеству, были определены пороги для мониторинга. В этом случае обычных событий аналитики недостаточно, так как они появляются в Firebase-консоли с задержкой в сутки. На помощь пришла интеграция с Big Query, который позволяет получать данные практически в реальном времени. За счет данных мы значительно повысили качество продуктов и повысили удовлетворенность наших пользователей.
По найму разработчиков
— сколько у вас кандидатов на место?
— откуда приходят самые желанные кандидаты?
— как вам опыт удаленной работы? Не пробовали нанимать людей из других городов и сёл без релокации?
Добрый день!

1. Этот вопрос ставит меня немного в тупик, т.к. это скорее термин для “приемной комиссии”. Но попробую ответить так: мы постоянно в поиске талантливых разработчиков и рады новым коллегам. Вакансии в мобильный штаб, как правило, открыты постоянно и команды HR отслеживают кандидатов на ежедневной основе. Они же проводят первичный скрининг. На позицию iOS Developer, например, за прошедший год до технического скрининга и интервью дошли в районе 120 кандидатов, из которых, в результате, в команду попали 6 человек. Так же у нас широко развита практика стажировок, которой, как правило, пользуются студенты старших курсов, которые “горят” мобильной разработкой, но по тем или иным причинам не могут пока выходить на фуллтайм.

2. У нас нет “любимчиков”, мы рады видеть в своих стенах всех и каждого! Но наиболее успешное и плодотворное сотрудничество, если говорить про образование кандидатов, в последнее время выходит с выпускниками НИУ ВШЭ. Это просто факт, которому я пока не готов дать какого-то объяснения =)

3. Опыт интересный, неожиданный, но успешный. Ничто, конечно, не заменит живого общения, но многие признают, что продуктивность удаленной работы в мобильном штабе не упала. Наверное это специфика “мобильности”. Насколько я знаю, в период карантина, несколько наших коллег присоединились к нам именно “без релокации”. Вся необходимая техника для работы им были предоставлены “на место”, поэтому они смогли приступить к работе без лишнего стресса. Насколько подобная практика приживется в будущем — не могу судить об этом.
1. Я имел в виду количество контактов на одного нанятого сотрудника. То есть количество резюме, которое получает HR (полагаю, больше половины отсеивается уже здесь), или если ваши рекрутеры сами обращаются к кандидатам, то количество таких запросов. Именно порядок цифр.
Мне просто интересно как это работает в больших компаниях. Чтобы не допрашиваться, у нас сейчас примерно 1300 поданных резюме на одного нанятого человека, но это удаленка в европе. И команда явно меньше вашей.

2. Тут больше про то, откуда приходят люди, с которыми оказываются самые приятные собеседования в среднем. Или самые ценные сотрудники в будующем в среднем. Стажировки? Или знакомые знакомых? Или нынче можно на хх.ру найти замечательных людей в команду?

3. А знаете ли что-то про других программистов? Где-то оказалось неэффективно? Насколько я понял, текущих наняли под обязательство релокации в будующем? Приятно видеть, как люди пробуют новые способы работать и выбирают то, что показывает лучшие результаты.
Я физическое общение в удаленной команде безусловно нужно. 1-3 раза в год.
П1. (Рекрутмент-воронки): очень сильно зависят от стратегии поиска и самой вакансии. “Худший” показатель в нашем подразделении – это в пределах 500 кандидатов на входе на один принятый оффер. При этом первый этап воронки – это контакт с кандидатом, именно здесь самая низкая конверсия – рынок мобильных разработчиков довольно перегрет, хорошие кандидаты не находятся в активном поиске, зачатую никак не реагируют на предложения рассмотреть вакансию, причем даже от таких известных IT-компаний как “Лаборатория Касперского”. Попытка просто расширять воронку на входе, с моей точки зрения, – подход плохой, это про “работать, чтобы устать”, надо выстраивать стратегию найма, которая будет работать именно в вашей компании, а также экспериментировать, искать правильный канал. В нашу компанию, например, кандидаты идут по ряду причин. Во-первых, разделяют идею и нашу миссию — мы несем добро людям добро, защищаем пользователей, делаем мир лучше. Во-вторых, наши технологии и команда – у сотрудников нашего подразделения десятки патентов, мы создаем уникальные технологии и продукты, что подтверждается независимым тестами, у нас можно расти. В третьих, “Лаборатория Касперского” — международная компания, наши продукты используются сотнями миллионов пользователей по всему миру. Вот почему кандидаты идут к нам. Что будет работать у вас – не знаю, вам виднее.
П2. (Откуда приходят кандидаты): нет явно выраженного источника, есть некий средний профиль “нашего кандидата”, под который могут подходить люди с довольно разнообразным бэграундом, поэтому короткий ответ – “приходят точечно из разных мест”, причем в последние годы наметилась тенденция, что все больше хороших сотрудников находятся в регионах. У нас есть стратегия найма, которая, как мне кажется, работает.
Чего мы не делаем: мы не скупаем кандидатов, это работает плохо. Почему – ну примерно потому же, почему “купить” Гуса Хиддинка, Роберто Карлоса, Юрия Жиркова, Самуэля Это'О и т.п. – это не то же самое, что создать хорошую футбольную команду.
Что мы делаем: мы верим в молодых, работаем со студентами, создаем условия, при которых они могли бы расти, “заражаться” нашей миссией, становиться частью ДНК-компании. Поиск и отбор стажеров происходит на периодической основе через программу Kaspersky Safe Board: safeboard.kaspersky.ru, а также для желающих и при наличии запросов — в течение года.
П3. (Опыт удаленной работы): мир тесен, особенно в IT, особенно в одном регионе (РФ), здесь работает даже не “теория 6 рукопожатий”, а “практика двух”. Все друг друга знают, если не лично, то заочно, следят за успехами друг друга. Мы не исключение – конечно же у нас много знакомых в других компаниях и мы в целом в курсе, как они работают в условиях пандемии – кто-то лучше, кто-то хуже, не всем сотрудникам, например, понравилось обязательное возвращение в офис, объявлявшееся в ряде компаний летом, и я их прекрасно пониманию.
Наш компания дала возможность продолжить удаленную работу, при этом желающим выйти в офис, была предоставлена такая возможность. Сотрудников, нанятых в последнее время в регионах, мы брали без требования обязательного переезда в один из городов, где есть наши офисы, при этом среди новых сотрудников были и те, которые сами планировали переезд и которым как раз компания дала гарантии помощи в релокации.
1. Почему решили для активации Who Calls не использовать код активации и привязку к My Kaspersky?
2. Награждаете ли вы как-нибудь своих активных мобильных бета-тестеров, как ранее или уже нет?
П1: Сейчас Who Calls — это самодостаточное не перегруженное приложение, оно решает одну конкретную пользовательскую проблему.
Регистрация так или иначе приводит к некоторому «отвалу» пользователей, поэтому на данном этапе мы ее делать не стали. В будущем не исключаю, что регистрация Who Calls на My Kaspersky все-таки появиться. Также не исключаю, что Who Calls трансформируется, станет частью более общей B2C-истории. Пользователям это невидно, но мы экспериментируем, начинали с бесплатной утилиты, сейчас перешли к Freemium-сервису, а дальше… — время покажет.
Что касается кодов активации — это все-таки не мобильный опыт, для кроссплатформенных сервисов — это ОК, для чисто мобильного приложения — вряд ли. Откуда его возьмет органический мобильный пользователь (тот, что пришел в приложение путем поиска по ключевикам в магазине приложение)? Google и Apple опять же запрещают сторонний биллинг. Если же со временем Who Calls станет частью комплексного сервиса, тогда, конечно, появится совместимость лицензий.
Да, помню бесплатно обещали премиум версию навсегда при тестировании, но в итоги ее лишили, теперь Freemium с рекламой.
Доброе утро.
Android: бета-тестерам премиум-версия никогда не давалась.
iOS: премиум-лицензия бета-тестерам предоставляется и сейчас. Вот ссылка на вступление в бету: testflight.apple.com/join/S253Y4l8
П2: бета-тестирование как один их этапов жизненного цикла значительно трансформировался, да и не только бета-тестирование, а весь жизненный цикл. С современной мобильной разработке нет больше фиксированных этапов, она состоит из ряда «continues»-практик. Цель — сократить Time to Market (метрику Lead Time), необязательные последовательные этапы — это bottleneck. Все, что можно, необходимо распареллеливать и переводить в операционную активность. Так произошло и с бета-тестирование, как выделенный этап он исчез, бета-тестеры переместились в магазины приложений.
У вас Android, чтобы вас стать бета-тестером, достаточно открыть страничку продукта в Google Play и начать кнопку «Become a tester». Вам будут автоматически устанавливать бета-версии, которые нам необходимо будет проверить, мы будем видеть метрики качества и использовать их для принятия решения о начале поэтапной раскатки бета-сборки на продакшен-пользователей. Если у вас появится замечание, вы можете оставить его в Google Play обычным способом, написав отзыв. Все очень удобно.
Коротко: вы больше не награждаете своих активных бета-тестеров и используете только их ресурсы?
Доброе утро. Бета-тестирование через Google Play не позволяет разработчику приложения узнать, кто ему пишет, если пользователь сам не даст свой контакт. Можно отвечать на отзывы, но не более того. При этом мы продолжаем награждать тех, с кем есть «контакт». Бывает даже отправляем сувенирку пользователям, обратившимся через службу поддержки.
Вопрос iOS разработчикам: в настройках продукту Kaspersky Security Cloud (Kaspersky Secure Connection) у меня отключено «Backgroud App Refresh», но продукт при этом как-то умудряется съедать 15-20% в фоне на iPhone X, при этом само приложение не запускалось вручную, как вы смогли это сделать? Почему игнорируется настройка?
Добрый день.

Kaspersky Security Cloud — это комплексный продукт, в состав которого входит несколько технологий обеспечения безопасного существования в цифровом пространстве. Одной из таких технологий является возможность сканирования Wi-Fi сетей, к которым подключается устройство, на безопасность. Для обеспечения непрерывной защиты наших пользователей анализ сети происходит “в фоне” с некоторой периодичностью. Настройка «Backgroud App Refresh» относится только к возможности основного приложения периодически “просыпаться” в фоне для проверки наличия обновлений внутренних модулей и не влияет на функциональность непрерывной защиты в Wi-Fi сетях.

Но Вы правы, что “съедать 15-20%” — это выглядит “многовато”. Если Вы готовы помочь нам детальнее разобраться в причинах такого потребления ресурсов и улучшить продукт, то я прошу Вас связаться с нами через support.kaspersky.ru/b2c/#product или написать на mobilesupport@kaspersky.com.
День добрый,
Может сразу скажите какие логи вам нужны и я постараюсь их собрать без участие посредников в виде «поддержки»? Или сами попробуете воспроизвести проблему? Это очень просто: устанавливаете последнюю версию приложения Kaspersky Security Cloud ( или Kaspersky Secure Connection), все обновления iOS, отключаете в настройках «Backgroud App Refresh» подключаете устройство к Wi-Fi, заряжаете устройство на 100%, отключаете от зарядки, ложитесь спать, просыпаетесь через часов 7-8, смотрите расход аккумулятора.
Понимаю, как «бесит», когда чуть что, сразу отправляют в «саппорт», но тут дело в том, что «поддержка» — это отлаженный механизм коммуникации, благодаря которому Ваша проблема не останется просто «комментарием в интернете». Мы не можем собирать информацию с Вашего устройства без Вашего на то официального согласия и установки специально собранного билда с включенным логгированием. Коллеги из поддержки как раз помогут со всем этим.

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

Можете подсказать? Где можно посмотреть описание классов, методов, параметров методов и т.д. Kaspresso? Может есть где-нибудь общий список?

Добрый день.
Можно посмотреть документацию в репозитории. Для старта может быть полезным также почитать Wiki. Там же есть ссылки на обзорные видео.

Как бороться с looped for xxxx iterations в андроид тестах?

Очень зависит от конкретной проблемы.
Можно для начала попробовать отключить анимации при прогоне теста.
Если это не поможет, можно использовать функцию KautomatorWaitForIdleSettings.boost() при конфигурации Kaspresso. Она отключает waitForIdleTimeout, который не дает совершить действие теста. А механизм flakySafely повторит действие, если оно не удалось в первый раз. Подробнее можно почитать тут.

Как выстроен релизный процесс для андроид приложения? Как часто проходят релизы, как долго занимают все проверки со сборки релизного билда и до его заливки в сторы?
Добрый день.

Как выстроен релизный процесс для андроид приложения?
Наш инструментарий:
1. Monorepo
2. CI/CD на базе TFS (автоматизированная выкладка билдов в Google Play/Apple Store/Huawei)
3. RealTime monitoring на базе BigQuery и дашборды с метриками качества

Для каждой сборки вычисляется скоуп, происходит сравнение со скоупом последнего выпущенного в паблик билда, ответственному менеджеру робот дает возможность принять решение, нужно ли запустить раскатку за пределы проектной команды. Далее каналы – опциональные раскатки на сотрудников компании (Internal Rollout), на внешних бета-пользователей, либо начало поэтапной раскатки на всех пользователей. Перед стартом раскатки есть несколько гейтов, на которых проверяется готовность маркетинговых материалов, собираются и визируются артефакты релиза. Скорость раскатки зависит от скуопа и результатов импакт-анализа. Если релиз содержит точечные изменения, этап бета-тестирования пропускается. В релизах с рискованными изменениями кроме бета-тестирования происходит более медленная раскатка на небольшой процент пользователей, который зависит от объёмом пользовательской базы. В ходе раскатки собираются и анализируются метрики качества (Crashes, ANRs, отзывы, аналитика по проходимости сценариев).

Как часто проходят релизы, как долго занимают все проверки со сборки релизного билда и до его заливки в сторы?

Мы стараемся выпускать релизы часто для того, чтобы сокращать time-to-market для ценных изменений в продукте. Жесткой фиксированной сетки релизов у нас нет, мы предпочитаем выпускать обновления продуктов по мере готовности фич. При наших размерах проектных команд мы в среднем доставляем пользователям что-то ценное раз в 2-3 недели, с учетом релизов, направленных на повышение качества, в среднем получается – примерно раз в 2 недели. Выпускаться чаще, чем раз в 7-10 дней, никакого смысла нет, предыдущий билд не успевает раскатиться. Между принятием решения о том, что скоуп достаточен для релиза и началом публикации проходит от нескольких часов до 2-3 дней. За счет высокой доли автоматизации мы сильно сократили время на приемку каждого релиза.

Спасибо за ответ. Вы не коснулись этапа тестирования релизного билда, используете ли помимо автотестов ручное тестирование, или после автотестов начинаете разливать на внутренних/бета пользователей?

Ручное тестирование так же является частью процесса выпуска релиза, не всё ведь возможно да и целесообразно автоматизировать…

При реализации новой функциональности, на первом этапе проверок всегда пишутся и прогоняются ручные E2E сценарии, которые в дальнейшем могут стать базой для E2E автотестов регрессионного набора.
На этапе стабилизации присутствуют как ручные тесты, так и автоматизированные тесты. Объем выполняемого регресса зависит от объема изменений, вызванных имплементацией нового функционала или исправлением багов. При частых релизах изменения делаются не масштабные, и их зачатую можно локализовать в рамках какой-то функциональной области продукта, тем самым максимально сократить необходимый объем проверок.
Финальный этап приемки RC почти во всех проектах автоматизировать по максимуму, т.к. это проверка основных сценариев продукта, а следовательно наиболее часто использующийся набор тестов.

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

Так что… увы… нет, у нас нет волшебной кнопки «Проверь билд и выложи в продакшион», человеческий фактов всё ещё важен и ценен. :)

IRO и бета тестирование проходят в параллель со внутренним тестированием, помогая выявлять различные специфические сценарии или проблемы на специфических устройствах, а так же дают возможность оценить массовость крэшей и ANR-ов, которые в нашем окружении могут воспроизводиться лишь единично.
Да и в общем, как выстроен у вас процесс тестирования задач?
Процесс внутреннего тестирования, я бы сказала, относительно стандартный – проверка реализованной функциональности, регресс, аксептанс, релиз.

Если немного подробнее…

В уже устоявшихся продуктах обычно процесс такой:
Когда определен скоуп итерации и появляется требование/user story, проработанное системным аналитиком, проводится его реврью и далее в параллель с разработкой фичи пишутся тест кейсы. Как только фича готова (частично или полностью), она передается разработкой в тестирование вместе с написанными интеграционными и/или E2E автотестами. Далее проходит приемка автотестов и проверка новой функциональности, а так же регресса вызванного этими изменениями. В этот же период может проходить дописывание E2E автотестов на основе ручных тест кейсов. При достижении критериев готовности фича выводится из под фича флага, и проводится еще один раунд релизного регресса (в основном автоматизированного). При достижении критериев готовности к релизу, собирается RC, на котором проводиться финальное аксептанс тестирование, и этот билд уже попадет в релизный канал в сторе.

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

Как уже писал Виктор, раскатка релизного билда происходит поэтапно с отслеживанием и анализом метрик качества (Crashes, ANRs, отзывы, аналитика по проходимости сценариев).

В случае же новых пилотных продуктов…
Тут может быть менее строгий процесс. Может варьироваться объем и глубина проводимых проверок, может отсутствовать детальное написание тест кейсов и автоматизация… Однако выполнение оговоренных в начале проекта критериев качества – обязательно для релиза в продакшион.
Спасибо за развернутые ответы.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий