QA_Bible
  • Введение
  • FAQ для новичков
    • Ответы на самые популярные вопросы новичков в чатах
    • Качества и навыки, которыми нужно обладать тестировщику?
    • Что должен знать и уметь Junior? Что спросят на собеседовании?
    • С чего начать обучение и куда развиваться?
    • Как составить резюме?
    • Где искать работу?
    • Как происходит процесс найма?
    • Как проходить собеседование?
    • Начало работы Junior-тестировщика
    • Ошибки в работе у начинающих тестировщиков
    • Как взаимодействовать с коллегами?
    • Перспективы профессии
  • Полезные ссылки
    • Список полезных ресурсов на разных платформах
    • Список ресурсов по инструментам тестировщика
  • Общее
    • QA/QC/Testing
    • Почему требуется тестирование ПО?
    • Качество ПО (Software Quality)
    • Принципы тестирования
    • Верификация и валидация (Verification and Validation)
    • Дефекты и ошибки
    • Серьезность и приоритет Дефекта (Severity & Priority)
    • Альфа- и бета- тестирование (Alpha Testing and Beta Testing)
    • Процесс тестирования (test process) (draft)
    • Техники оценки тестов/оценка трудозатрат на тестирование (Test Estimation)
    • Экономика тестирования/стоимость качества (Cost of quality)
    • Подход к тестированию (Test Approach)
    • Импакт анализ (анализ влияния, Impact Analysis)
    • Анализ первопричин (RCA - Root Cause Analysis)
    • Тестирование со сдвигом влево (Shift left testing)
    • Модель зрелости возможностей (CMM - Capability Maturity Model)
    • Тестовая среда и тестовый стенд (Test Environment/Test Bed)
    • Бизнес-логика (Business logic)
    • Политика отсутствия багов (ZBP - Zero Bug Policy)
    • Независимое тестирование (Independent testing)
    • Роли/должности в команде
    • Эвристики и мнемоники
  • Виды-методы-уровни тестирования
    • Методы тестирования (White/Black/Grey Box)
    • Тестирование методом черного ящика (Black Box Testing)
    • Тестирование методом белого ящика (White Box Testing)
    • Тестирование методом серого ящика (Grey Box Testing)
    • Статическое и динамическое тестирование (Static Testing, Dynamic Testing)
    • Пирамида / уровни тестирования (Test Pyramid / Testing Levels)
    • Модульное/юнит/компонентное тестирование (Module/Unit/Component testing)
    • Интеграционное тестирование (Integration testing)
    • Системное тестирование (System Testing)
    • Приемочное тестирование (AT - Acceptance testing)
    • Основные виды тестирования ПО
    • Функциональное тестирование (Functional/Behavioral testing)
    • Нефункциональное тестирование (Non-Functional testing)
    • Тестирование производительности (Performance testing)
    • Тестирование емкости (Capacity testing)
    • Нагрузочное тестирование (Load testing)
    • Стрессовое тестирование (Stress testing)
    • Тестирование масштабируемости (Scalability testing)
    • Объемное тестирование (Volume testing)
    • Тестирование выносливости/стабильности (Endurance/Soak/Stability testing)
    • Тестирование устойчивости (Resilience testing)
    • Тестирование надежности (Reliability Testing)
    • Тестирование на отказ и восстановление (Failover and Recovery testing)
    • Эталонное и базовое тестирование (Benchmark and Baseline Testing)
    • Тестирование хранилища (Storage testing)
    • Одновременное / многопользовательское тестирование (Concurrency/Multi-user testing)
    • Тестирование сервиса (Service Testing)
    • Тестирование безопасности (Security and Access Control testing)
    • Оценка уязвимости/защищенности (Vulnerability Assessment)
    • Фаззинг-тестирование (Fuzz testing)
    • Можно ли отнести тестирование безопасности или нагрузочное тестирование к функциональным видам тести
    • Тестирование совместимости/взаимодействия (Compatibility/Interoperability testing)
    • Конфигурационное тестирование (Configuration testing)
    • Инсталляционное тестирование (Installation Testing)
    • Тестирование на соответствие (Conformance/Compliance testing)
    • Тестирование удобства пользования (Usability testing)
    • Тестирование доступности (Accessibility testing)
    • Тестирование локализации, глобализации и интернационализации (Localization/ globalization/internatio
    • Исследовательское тестирование (Exploratory testing)
    • Свободное / Интуитивное тестирование (Adhoc, Ad-hoc Testing)
    • Тестирование поддержки (Maintenance testing)
    • Регрессионные виды тестирования (Regression testing)
    • Тестирование клиентской части и серверной (Frontend testing Vs. Backend testing)
    • Тестирование графического интерфейса/визуальное тестирование (GUI - Graphical User Interface testing
    • Тестирование API (API - Application Programming Interface)
    • A/B тестирование (A/B Testing)
    • Деструктивное и недеструктивное тестирование (DT - Destructive testing and NDT - Non Destructive tes
    • Выборочное/хаотическое тестирование (Random/monkey testing)
    • Тестирование рабочего процесса/воркфлоу (Workflow testing)
    • Тестирование документации (Documentation testing)
    • Как протестировать продукт без требований?
    • Кроссбраузерное тестирование (Cross-browser testing)
    • Тестирование, основанное на рисках (Risk-Based Testing)
    • Разница тестирования ПО и железа (Software Vs. Hardware testing)
    • Тестирование качества данных (Data Quality Testing)
  • Тест дизайн
    • Тест-дизайн и техники тест-дизайна (Test Design and Software Testing Techniques)
    • Static - Reviews
    • Static - Static Analysis
    • Dynamic - White box
    • Dynamic - Black box
    • Dynamic - Experience based
  • Тестовая документация и артефакты (Test Deliverables/test artifacts)
    • Виды тестовой документации
    • Политика качества и политика тестирования (Quality policy and Test policy)
    • Стратегия тестирования (Test strategy)
    • План тестирования (Test plan)
    • Тестовый сценарий (Test scenario)
    • Тест-кейс (Test case)
    • Чек-лист (Check List)
    • Баг-репорт (Defect/bug report)
    • Требования (Requirements)
    • Пользовательские истории (User stories)
    • Критерии приемки (Acceptance Criteria)
    • Виды отчетов (Reports)
    • Базис тестирования (Test basis)
    • Матрица трассируемости (RTM - Requirement Traceability Matrix)
    • Метрики тестирования (Software Test Metrics)
    • Тестовый оракул (Test oracle)
  • Мобильное тестирование
    • Android
      • Архитектура Android OS
      • Архитектура Android Application
      • Тестирование покупок в Android-приложениях
      • Android Developer Settings
      • Android Debug Bridge (ADB)
      • Android Studio для QA
    • iOS
      • Архитектура iOS
      • Архитектура iOS Application
      • Тестирование покупок в iOS-приложениях
      • iOS Developer Settings
    • Особенности в тестировании мобильных приложений
    • Покрытие девайсов
    • Типы мобильных приложений
    • Симуляторы и эмуляторы
    • Основные различия Android/iOS
    • Последнее обновление Android/iOS, что нового?
    • Основные проверки при тестировании мобильного приложения
    • Каким образом тестировщик получает приложение на тест?
    • Как успешно зарелизить продукт в App Store и Google Play
    • Тестирование требований к мобильным приложениям
    • Тестирование push-уведомлений
    • Тестирование дип линков (mobile deep links)
    • Тестирование сохраненных поисков
    • Тестирование рекламы
    • Тестирование просмотренных товаров
    • Middleware
    • Как проверить использование ресурсов на Android
    • Как протестировать приложение для другой страны?
  • Тестирование в разных сферах-областях (testing different domains)
    • Тестирование веб-сайта или веб-приложения (Web application)
    • Тестирование интернет-магазина (eCommerce)
    • Тестирование платежного шлюза (Payment Gateway)
    • Тестирование игр (Game testing)
    • Тестирование VR программного обеспечения
    • Тестирование мессенджера (Messenger)
    • Тестирование чат-бота (Chatbot)
    • Тестирование электронных писем (E-mail)
    • Тестирование интернета вещей (IoT - Internet of Things)
    • Тестирование облачных решений (Cloud testing)
    • Тестирование сервис-ориентированной архитектуры (SOA - Service Oriented Architecture)
    • Тестирование микросервисной архитектуры (MSA/Microservices)
    • Тестирование платформы электронного обучения (E-learning platform)
    • Тестирование систем розничной торговли (POS - Point Of Sale)
    • Тестирование банковского ПО (Banking domain applications/BFSI)
    • Тестирование страхового ПО (Insurance)
    • Тестирование в сфере телекоммуникаций (Telecom)
    • Тестирование планирования ресурсов предприятия (ERP - Enterprise Resource Planning)
    • Тестирование миграции данных (ETL)
    • Тестирование баз данных (Database)
    • Другое
  • SDLC и STLC
    • Жизненный цикл разработки ПО (SDLC - Software Development Lifecycle)
    • Жизненный цикл тестирования ПО (STLC - Software Testing Lifecycle)
    • Модели разработки ПО
    • Agile
    • Scrum
    • Подходы к разработке/тестированию (... - driven development/testing)
  • Сети и около них
    • База по сетям
    • Клиент - серверная архитектура (Client-Server Architecture)
    • Микросервисная архитектура (Microservice Architecture)
    • Эталонные модели OSI и TCP/IP
    • HTTP
    • Идентификация ресурсов в сети (Identifying resources on the Web)
    • Веб-сервис (WS - Web service)
    • REST/SOAP/gRPC
    • Socket / WebSocket
      • Сокет/веб-сокет (socket/websocket)
      • Тестирование WebSocket на клиентах
    • Хранилище на стороне клиента (Client-side storage)
    • Кэш (Cache)
    • Аутентификация и авторизация (Authentication and authorization)
    • Рендеринг в интернете (Rendering on the Web)
  • Практическая часть
    • Логические задачи
    • Тестирование полей и форм
    • Примеры задач на собеседованиях и тестовых заданий
    • Платформы для тренировок и квизы
  • Автоматизация (beta)
    • Общее
    • Полезные ссылки
    • Как стать автоматизатором и вопросы с собеседований
    • Что нужно автоматизировать?
    • Виды и инструменты автоматизации
    • Инфраструктура и пайплайн (CI/CD)
    • Процессы и автоматизация проекта с нуля
    • Лучшие практики автоматизации
    • Что такое flaky tests?
    • Мутационное тестирование (Mutation testing)
    • Параллельное тестирование (Parallel testing)
    • Подкожный тест (Subcutaneous test)
    • Разница между coupling и cohesion
    • Другое (ссылки)
  • Контакты
Powered by GitBook
On this page
  • Первичная настройка устройства для работы с adb
  • Несколько наиболее популярных команд
  • Командная строка android – adb shell
  • Расширенные возможности для эмуляторов - adb emu
  • Написание своих утилит работающих с adb

Was this helpful?

Edit on GitHub
  1. Мобильное тестирование
  2. Android

Android Debug Bridge (ADB)

PreviousAndroid Developer SettingsNextAndroid Studio для QA

Last updated 3 months ago

Was this helpful?

Отладочный мост Android - это универсальный инструмент командной строки, включенный в пакет Android SDK Platform-Tools, который позволяет вам взаимодействовать с устройством. Команда adb упрощает выполнение различных действий с устройством, таких как установка и отладка приложений, а также предоставляет доступ к оболочке Unix, которую можно использовать для выполнения различных команд на устройстве.

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

Внутренняя логика работы adb

Это клиент-серверная программа, состоящая из трех компонентов:

  • Клиент, который отправляет команды. Клиент работает на вашей машине разработки. Вы можете вызвать клиент из терминала командной строки, введя команду adb;

  • Демон (adbd), который запускает команды на устройстве. Демон работает как фоновый процесс на каждом устройстве;

  • Сервер, который управляет связью между клиентом и демоном. Сервер работает как фоновый процесс на вашей машине разработки.

Когда вы запускаете клиент adb, клиент сначала проверяет, не запущен ли уже процесс сервера adb. Если нет, он запускает серверный процесс. Когда сервер запускается, он привязывается к локальному TCP-порту 5037 и прослушивает команды, отправленные от клиентов adb - все клиенты adb используют порт 5037 для связи с сервером adb. Затем сервер устанавливает соединения со всеми работающими устройствами. Он находит эмуляторы, сканируя порты с нечетными номерами в диапазоне от 5555 до 5585 - диапазоне, используемом первыми 16 эмуляторами. Когда сервер находит демон adb (adbd), он устанавливает соединение с этим портом. Обратите внимание, что каждый эмулятор использует пару последовательных портов - порт с четным номером для консольных подключений и порт с нечетным номером для подключений adb.

Первичная настройка устройства для работы с adb

Скачайте и установите Android SDK Platform-Tools на компьютер, это можно сделать через в Android Studio или скачав только с официального сайта.

Чтобы начать работать с командами adb необходимо разрешить отладку по USB в настройках разработчика на телефоне. Где найти настройки разработчика смотрите в . Если вы работаете с эмулятором из android studio, то отладка по USB будет включено по умолчанию.

После того как настройка включена, подключите компьютер к телефону кабелем. Если сервер adb запущен на компьютере, то на телефоне высветиться диалоговое окно предлагающее разрешить отладку с этого компьютера. Если сервер adb не запущен он запуститься при вызове первой adb команды в командной строке или терминале.

Несколько наиболее популярных команд

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

Список устройств – adb devices

Команда adb devices позволяет вывести список устройств подключенных в данный момент к компьютеру (по USB или сети). При выполнении команды будет показан список устройств с серийным номером (или уникальным именем) и статусом подключения. Для получения расширенной информации, такой как модель устройства, можно использовать флаг -l.

Команду полезно использовать, чтобы выполнять команды adb, когда к компьютеру подключено несколько устройств. После того как узнали серийный номер нужного устройства его можно использовать для всех команд adb используя флаг -s SERIAL_NUMBER сразу после adb. Пример:

PS C:\Users\Garry> adb devices -l
List of devices attached
RHE32KNM22       device product:dm1qxxx model:SM_S911B device:dm1q transport_id:2
PS C:\Users\Garry> adb -s RHE32KNM22 install example.apk

Если вы подключили устройство, но окно для разрешения отладки не показывается и при вызове adb devices вы видите, что устройство unauthorized, то попробуйте в настройках для разработчиков отозвать разрешение на отладку и вернуть.

Установка – adb install

Команда установки позволяет установить приложение с компьютера напрямую на устройство. Синтаксис прост: adb install <путь_до_apk_файла>. Если старая версия приложения уже установлена, то используется флаг -r, чтобы разрешить перезапись. Для дебаг сборок можно также использовать флаг -d, он позволяет ставить более старую версию поверх установленной свежей. При использовании флага -d будьте внимательны так как даунгрейд может привести с неожиданным проблемам при неправильной миграции данных.

adb install -r -d example.apk

Отправить файл на и получение файла с устройства – adb push и adb pull

Для отправки файла на устройство можно использовать команду adb push <путь_файла_на_компьютере> <путь_куда_сохранить_на_устройстве>.

Для скачивания файла с устройства используйте adb pull <путь_файла_на_устройстве> <путь_куда_сохранить_на_компьютере>.

Командная строка android – adb shell

Если просто выполнить adb shell, то мы напрямую попадём в командную строку android, где можно выполнять множество команд связанных с android. Однако в большинстве случаев удобнее пользоваться конструкцией adb shell <команда_оболочки> такой синтаксис позволяет после исполнения команды вернуться в командную строку системы вашего ПК, а также возвращать сохранять выходные данные на сразу на компьютер, например, при использовании adb shell logcat.

Отображение и запись логов – adb logcat или adb shell logcat

Если при тестировании приложения Android Studio было закрыто или телефон не подключен к компьютеру и вы поймали краш или другой баг, то вы всё ещё можете получить последние логи за небольшой промежуток времени, для этого выполните команду:

adb logcat -v time -t <дата/время/количество_строк> > <куда_сохранить_файл_на_пк>

В зависимости от того, что вы ввели в файл будут записаны последние записи сохранившиеся в logcat. Можно ввести дату в формате YYYY-MM-DDTHH:MM:SS, время: HH:MM:SS или просто количество строк. Пример:

adb logcat -v time -t 2025-01-26T10:30:00

Сделать снимок или запись экрана – adb shell screencap и adb shell screenrecord

Shell обладает огромным набором возможностей, например, как установка своего значения батареи с помощью adb shell dumpsys battery set level X или запуск определённого intent вашего или другого приложения, например совершить звонок: adb shell am start -a android.intent.action.CALL tel:79998887766, и множество других возможностей, поэтому рекомендую обязательно гуглить можно ли что-то сделать с помощью adb, если вы столкнулись со сложным кейсом.

Расширенные возможности для эмуляторов - adb emu

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

Примеры:

  • Входящее смс от номера – adb emu sms send <номер или имя> <сообщение>

  • Входящий звонок – adb emu gsm call <номер>

  • Установка геопозиции – adb emu geo fix -122.084 37.422

  • Поворот устройства – adb emu rotate

Написание своих утилит работающих с adb

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

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

Источники:

Дополнительно:

Отладку можно также подключить через WiFi, как это сделать можно прочитать .

Утилита logcat позволяет в реальном времени собирать и смотреть логи приложений. Для визуального чтения в реальном времени удобнее использовать графический вариант в Android Studio, однако утилита командной строки имеет ряд уникальных возможностей, которые могут быть удобны при тестировании. Подробнее можно прочитать в . Здесь приведу одно из кейсов, когда использование adb logcat незаменимо.

В большинстве случаев запись экрана удобнее проводить из Android Studio или с самого устройства, но при необходимости (или например если вы разрабатываете свою утилиту) можно сделать это через команды оболочки. Для скриншота выполните: adb shell screencap <путь_на_устройстве>, для записи экрана: adb shell screenrecor <путь_на_устройстве>. Далее для скачивания файла на компьютер можно использовать adb pull. Для записи экрана можно также установить параметры такие как разрешение, битрейт и другие, подробнее .

Подробнее про команды для эмулятора в . Там по какой-то причине рассказывается только про подключение к консоли эмулятора через telnet, однако синтаксис выше (adb emu <команда>) также отлично работает.

Даже не умея программировать можно использовать Shorcuts на mac или Power Automate, чтобы создать себе быструю команду, которая будет в два клика отправлять пачку файлов на устройство или устанавливать приложение сразу на несколько устройств. можно найти пример как такое сделать на macOS и сами команды для Shortcuts, которые существенно ускорят вашу работу.

тут
официальной документации
тут
официальной документации
Здесь
Android Debug Bridge (adb)
Send emulator console commands
Android Debug Bridge для тестировщика без SMS и регистрации
Android Debug Bridge (adb) – основные команды
SDK Manager
Platform-Tools
Android Developer Settings