- Инструменты разработчика для тестирования Android-приложений
- Уровни тестирования
- Unit-тесты
- Инструменты для модульного тестирования
- Инструменты для интеграционного тестирования
- Инструменты для тестирования пользовательского интерфейса
- TDD и BDD
- Заключение
- 8 лучших приложений для диагностики Android-смартфона
- AIDA64
- Phone Doctor Plus
- Phone Check
- Device Checker *SAM*
- PhDoctor
- Тестирование Android
- Phone Doctor For Android
- AnTuTu Benchmark
Инструменты разработчика для тестирования Android-приложений
В командной разработке тесты – это, как правило, задача QA- и SDET-специалистов. Вместе с тем навыки тестирования полезны и разработчикам, позволяя им проверить свои приложения и повысить стабильность их работы.
Эта статья предназначена в первую очередь начинающим мобильным разработчикам, которые хотят изучить процессы тестирования и свое участие в них.
На примере Android-разработки обсудим подходящие инструменты тестирования – от JUnit до Kaspresso, а также немного познакомимся с методологиями Test Driven Development (TDD) и Behaviour Driven Development (BDD). Наконец, рассмотрим их отличия на примере кейса.
Тестирование IT-системы охватывает множество проверок архитектуры, UI, кода и взаимодействия его частей, соответствия требованиям. По мере усложнения систем в отрасли растут потребности как в обеспечении качества (QA), так и в автоматизации тестирования (SDET), которая позволяет проводить некоторые тесты быстро и с минимальным участием людей.
Уровни тестирования
С появлением тестов для различных уровней программы возникла их абстрактная иерархия – Пирамида автотестов, в которую входят:
Модульные тесты. Проверяют взаимодействие кода внутри одного или нескольких классов со связанной функциональностью. Unit-тесты создают до, во время или после написания проверяемого кода, их должно быть много, они должны запускаться часто, работать быстро, быть легко поддерживаемыми.
Интеграционные тесты. Проверяют логику взаимодействия различных компонентов, подсистем без использования UI. В контексте Android сюда входят тесты БД (миграции, выборки, CRUD операции), тесты api-сервисов с моковыми данными и т.д.
UI-тесты. В контексте Android это полноценное автоматизированное тестирование экрана или набора экранов, проверка корректной работы пользовательского интерфейса. Вся логика при этом должна быть протестирована на нижних уровнях.
https://qastart.by/mainterms/64-piramida-testov-testirovaniya
При выборе необходимых проверок, помимо пирамиды, можно использовать колесо автоматизации – подробнее об этом читайте здесь.
Рассмотрим инструменты, используемые на каждом из вышеупомянутых уровней.
Unit-тесты
Unit-тесты – это самый простой инструмент для вовлечения разработчика в процесс тестирования приложения. Они фокусируются на конкретном классе или участке кода и пишутся непосредственно разработчиками. Unit-тесты должны выполняться быстро и иметь однозначные результаты: правильно написанные тесты – отличный способ немедленной проверки произведенных изменений в коде. Также функционал Android Studio позволяет выполнять не весь набор тестов, а только те, которые необходимы разработчику для проверки. Помимо этого, unit-тесты – один из вариантов документации кода для разработчиков, они помогают увидеть, какие возможные результаты имеет метод и какие граничные случаи он обрабатывает.
Инструменты для модульного тестирования
Unit-тесты для Android по умолчанию располагаются в папке src/test проекта или модуля, запускаются с использованием фреймворка JUnit. В идеале, один тест должен тестировать открытый интерфейс одного класса и проверять все ветвления кода и граничные случаи в нем. Зависимости должны иметь поведение, необходимое для проверки тестируемого класса.
В современных Android приложениях для unit-тестов, в основном, используются следующие библиотеки:
JUnit. Для запуска тестов, вызова assertion’ов.
Mockk. Позволяет мокать final классы Котлина, suspend функции, имеет удобный DSL для работы.
kotlinx-coroutines-test. Тестирование suspend-функций внутри TestCoroutineScope, предоставляемого функцией runBlockingTest, подмены main dispatcher’а в рамках тестов.
turbine. Небольшая, но удобная библиотека для тестирования kotlinx.coroutines.Flow.
robolectric. Позволяет писать unit-тесты для классов, использующих Android SDK без непосредственного запуска устройства – фреймворк умеет симулировать различные части системы.
Инструменты для интеграционного тестирования
Эти тесты для Android по умолчанию располагаются в папке src/androidTest проекта или модуля и запускаются уже на устройстве, так как должны иметь доступ, например, к контексту приложения для создания БД Room. Для запуска тестов используется уже упомянутый фреймворк JUnit.
Инструменты для тестирования пользовательского интерфейса
UI-тесты служат, в основном, для прогона основных пользовательских сценариев приложения (авторизация, регистрация, добавление товара в корзину и т.п.). Они помогают отловить ошибки в базовых сценариях и исправить их до попадания сборки с багами к тестировщикам. UI-тесты также по умолчанию располагаются в папке src/androidTest и запускаются на устройстве. Помимо JUnit, основные инструменты – это:
Espresso. Официальный фреймворк для UI-тестирования от Android. Имеет множество примеров и хорошую документацию. При этом не может взаимодействовать с другими приложениями, достаточно плохо работает с асинхронными интерфейсами и списками.
UI Automator. В отличие от Espresso, позволяет взаимодействовать с другими приложениями: совершать звонки, отправлять сообщения, изменять настройки устройства.
Kaspresso. Обертка над Espresso и UI Automator, которая позволяет писать стабильные, быстрые, удобочитаемые тесты.
Для тестирования интерфейсов, реализованных с помощью Jetpack Compose, также появляются свои библиотеки, например, эта.
Также на Хабре можно прочитать больше об инструментах для UI-тестирования, например, в этой статье.
TDD и BDD
TDD и BDD – две популярные методики разработки через тестирование. Рассмотрим их отличия на примере следующего кейса:
Пользователь вводит сумму расхода, комментарий к расходу и выбирает категорию расхода.
Если сумма некорректна или не выбрана категория расхода, возвращается код ошибки, иначе – код успешной обработки.
TDD (Test Driven Development) – это методология разработки ПО, основанная на следующих коротких циклах:
Написать тест, проверяющий желаемое поведение.
Запустить тест. Test failed.
Написать программный код, реализующий требуемое поведение.
Запустить тест. Test succeeded.
Провести рефакторинг написанного программного кода, сопровождая прогонами теста.
Для начала создадим контракт нашей реализации.
Теперь напишем тест, проверяющий, что написанный код реализует указанные требования.
Запускаем тест, получаем ожидаемый результат:
Теперь напишем реализацию
Запустим тесты: все 4 теста проходят. Теперь настало время рефакторинга написанного кода.
Снова запускаем тесты, чтобы удостовериться, что наш рефакторинг ничего не сломал – и видим, что тесты проходят успешно.
Методология TDD имеет следующие преимущества:
Написанный код имеет более правильный и понятный дизайн, написан чище, так как должен запускаться из теста и быть идемпотентным.
Позволяет провести рефакторинг с меньшей вероятностью возникновения ошибок, поскольку есть способ сразу же проверить правильность написанного кода.
Позволяет локализовать ошибки быстрее.
В числе минусов можно выделить следующие:
Фокусировка на реализации задачи.
Код и описание тестов пишутся на одном языке.
В процесс вовлечена только команда разработки.
Подробнее про данную методологию можно прочитать в книге Кента Бека Экстремальное программирование. Разработка через тестирование.
BDD (Behaviour driven development) – методология разработки ПО, во многом схожая с TDD. Отличается тем, что тестовые сценарии пишутся на “человеческом” языке, а не на языке программирования.
Тестовые сценарии записываются в формате given-when-then. Например, given (имея) подключение к сети, when (когда) пользователь открывает ссылку, then (тогда) контент страницы отображается.
Перепишем наши требования с использованием BDD:
Сценарий: добавление траты.
Given Корректную сумму
And Введенный комментарий
And Выбранную категорию траты
When Пользователь нажимает кнопку добавления
Then Пользователь получает успешный результат
Для данного подхода существуют свои фреймворки. Например, для Java это фреймворк JBehave.
К особенностям данного подхода можно отнести следующее:
Тестовые сценарии на “человеческом языке” может писать как заказчик,так и аналитик, тестировщик. Это повышает уровень знаний всей команды о разрабатываемой системе.
Тестовые сценарии легко изменяются.
Результаты тестов также более понятны заинтересованным лицам, по сравнению с результатами выполнения кода.
Узнать подробнее о BDD можно в этой статье.
Заключение
Мало у кого возникают сомнения, что тесты необходимы для проектирования качественного ПО. Существует множество фреймворков, инструментов и методологий (DDD, FDD и другие *DD), которые помогают команде на всех этапах жизненного цикла ПО. Тесты помогают быстро найти и локализовать ошибки, а также, если они правильно спроектированы, могут служить тестовой документацией. Также благодаря тестам код реализации, скорее всего, будет написан чище и понятнее. В то же время главное – не 100% покрытие кода тестами, а его соответствие бизнес-задачам, поэтому важно избегать крайностей и не писать тесты ради тестов.
Спасибо за внимание! Надеемся, что этот материал был вам полезен.
Источник
8 лучших приложений для диагностики Android-смартфона
– Эх, собирался купить смартфон, а получил кота
– Где были твои глаза?
– Да с виду-то он целый, только нерабочим оказался. Не знал, как его проверить, вот и купил «кота в мешке».
Ситуация досадная, но вполне обычная, когда бывший чьим-то мобильник переходит к новому владельцу. Не хотите стать жертвой обмана? Тогда тестируйте девайс перед покупкой.
В сегодняшнем обзоре – 8 лучших приложений для диагностики Android-смартфонов. Они помогут вам узнать, что представляет собой устройство, проверить его исправность и оценить работу каждой функции. Пара минут – и все нужные сведения как на ладони.
AIDA64
Давно и нежно любимая бывалыми юзерам ПК AIDA64 существует и в мобильной версии. В отличие от десктопных релизов, цены на которые начинаются от $40, она бесплатна, а также совместима практически с любыми Android-гаджетами: смартфонами, планшетниками, умными часами, телеприставками, ТВ и т. д. Главное, чтобы версия Андроида на устройстве была не старше 4.0.
Аида отображает полную детализированную информацию об аппаратной и программной начинке девайса, выводит показания датчиков, данные о подключении к сетям и многое другое.
В приложении 13 основных разделов:
- Система, где собраны главные сведения об устройстве – марка, модель, серийный номер, объемы памяти и т.
Однако мобильная Aida64 не имеет в составе инструментов нагрузочного тестирования и бенчмаркинга. Полученные данные она отображает в виде списков и числовых показателей, понимать которые должен сам пользователь. То есть рассчитана на опытных.
Phone Doctor Plus
То ли дело Phone Doctor Plus! Вот он-то и выручит тех, кто держит смартфон впервые и просто хочет узнать, работают ли на нем камеры, динамики, датчики и прочие «железки». Впрочем, бывалые Андроид-юзеры тоже уважают «Доктора»: как ни крути, а приложение полезное. И содержательное.
В числе его возможностей:
- Быстрое и точное тестирование 30-ти (как заявлено производителем) аппаратных элементов с определением их работоспособности.
- Экспресс-оценка состояния основных компонентов – процессора, хранилища, оперативной памяти, батареи и сети.
- Детальная диагностика аккумулятора и прогнозирование срока его службы.
- Диагностика сетевых подключений.
- Сбор сведений об установленных приложениях с оценкой их полезности и возможностью удаления.
Рабочая область Phone Doctor Plus состоит из четырех основных вкладок:
- На первой (показана на скриншоте выше) собрана информация о текущем состоянии главных компонентов и о результатах их тестирования (4 шкалы «Железо»).
- На второй находятся плитки запуска диагностических тестов.
- На третьей – список приложений.
- На четвертой – сведения о батарее и кнопки отключения ресурсоемких функций.
Утилита не собирает столь подробных сведений о каждой детали, как Aida64, а только тестирует функционал. Для проведения теста пользователь должен выполнить инструкции, которые видит на экране.
Phone Check
Phone Check (Mobile Phone Checker / Tester & Info) совмещает в себе функции Аиды и Доктора: отображает подробные сведения об аппарате и проверяет его работоспособность. Всего в приложении 11 диагностических тестов:
- Инфо об устройстве.
- Аккумулятор.
- Сеть, Bluetooth.
- Звук.
- Дисплей.
- Сенсорный экран (тачскрин).
- GPS.
- Внешний вид.
- Камеры.
- Датчики.
- SoC, память, хранилище.
И 2 режима тестирования – простой и подробный. Тесты запускаются последовательно – один за другим. У пользователя есть возможность пропускать отдельные тесты или их этапы.
Помимо оценки функциональности, Phone Check отображает информацию о текущем использовании устройства – загрузке процессора, памяти, сети, заряде аккумулятора, а также общие сведения о системе.
Device Checker *SAM*
Утилита Device Checker *SAM* (Phone and tablet testing) разработана для диагностики смартфонов и планшетов Samsung, однако исправно выполняет свои задачи и на устройствах других марок. За исключением определения подлинности аппарата – эти функции доступны только владельцам Самсунгов. Зато остальное – 20 с лишним тестов, могут использовать все.
Как показал опыт, на телефоне «НЕ Самсунг» Device Checker *SAM* выдает вполне достоверные результаты – такие же, как рассмотренные выше утилиты-конкуренты. А единственное, что может вызвать затруднение у некоторых юзеров, – это англоязычный интерфейс приложения.
Device Checker *SAM* тестирует следующие компоненты и функции:
- Bluetooth.
- Сотовую связь.
- SD-карту.
- Микрофон.
- LCD (экран).
- Яркость и затемнение экрана.
- Тачскрин (TSP).
- Приемник.
- Вывод звука через динамики.
- Вывод звука через наушники.
- Камеры.
- Вспышку (фонарик).
- Датчики.
- Вибромотор.
- USB и зарядку.
- Wi-Fi.
- Аккумулятор.
Последний тест – информация об устройстве, оказался самым неинформативным. Видимо, он тоже предназначен только для Самсунгов.
PhDoctor
Утилита PhDoctor (Mobile Phone Checker / Tester & Info) имеет почти такой же набор функций, что и конкуренты. Но помимо стандартных тестов, в ней есть пара уникальных. Один из них – определение, является ли телефон Samsung «refurbished», то есть подвергался ли он ремонту на фабрике или в сервисном центре производителя (продавца) до того, как поступил в продажу. Второй – идентификация марки и модели аппарата по номеру IMEI через веб-ресурс www.imei.info
При работе с PhDoctor некоторые пользователи столкнутся с такой же проблемой, что и в Device Checker *SAM* – он тоже страдает отсутствием русского языка.
Прочие функции и возможности PhDoctor:
- Отображение сводной информации об устройстве (Device Detail). Отдельно о железе, софте и батарее.
- Отчет о телефоне (Phone Report) – базовый набор последовательных тестов микрофона, динамиков, тыловой и фронтальной камер, приемника, вибромотора, акселерометра, гороскопа, датчиков приближения и освещенности, компаса, сенсорного экрана, кнопок навигации («Домой», «Назад», «Последние приложения») и фонарика (вспышки).
- Тестирование сетевых подключений (Network Test) – Вай-фая и мобильной связи.
- Тестирование отдельных аппаратных функций (Hardware Test) – цветопередачи и яркости экрана, телефона, микрофона и остального, что входит в набор Phone Report.
Тестирование Android
Столь прямолинейное название точно не даст перепутать это приложение с чем-либо другим. Да, «ТестированиеAndroid» именно это и делает. Но не только. Кроме 30-ти различных тестов, оно содержит инструменты сбора информации о системе и несколько полезных «приколюшек» – сканер QR-кодов, измеритель громкости звука, горизонтальный уровень и кнопку быстрого включения фонарика.
Интерфейс утилиты так же прост, как и название. Функциональные кнопки сгруппированы по назначению:
- «Инструменты». В состав этой группы входят те самые «приколюшки».
- В разделе «Информация об устройстве» собраны системный монитор, сведения о Wi-Fi, блютуз, процессоре, памяти, версии Андроид, аккумуляторе, камере, сети и установленных приложениях.
- Группа «Тестирование оборудования» содержит следующие средства диагностики: «Цвет монитора», «Сенсорный экран», «Мультитач», «Камера», «Отпечаток пальца», «Динамик и вибрация», «Микрофон», «NFC» и «Местонахождение». Тест «Сенсорный экран» выполнен по типу приложения для рисования.
- «Тестирование датчиков» включает инструменты: «Шагомер», «Датчик температуры», «Компас», «Датчик освещенности», «Акселерометр», «Датчик приближения», «Датчик давления», «Определитель силы тяжести» и «Датчик влажности».
- В разделе «Другой» из полезного есть только кнопка выбора языка. Впрочем, при установке приложение само выбирает язык, который назначен основным в операционной системе. В моем случае это русский.
«Тестирование Android» может запускаться на смартфонах, планшетах и смарт-часах. Производитель заявляет, что оно оптимизировано для Android 9.0 и некоторых устройств марки Samsung, LG, Huawei, HTC, Google Pixel, Sony Xperia и Nokia.
Phone Doctor For Android
Phone Doctor For Android имеет несколько унылый дизайн. И первое, что видит пользователь после его запуска, – такой же унылый рекламный баннер. Русским языком здесь тоже, увы, не пахнет. Похоже, у многих это отбивает желание юзать программу дальше, но если присмотреться к ее функционалу, то всё не так уж и печально.
Функции «Доктора №2» поделены на 4 группы: «Датчики» (Sensors), «Железо» (Hardware), «Хранилище и оперативная память» (Storage Information) и «Сеть и Wi-Fi» (Network & WiFi).
- В первом разделе содержатся средства диагностики датчиков освещенности, встряхивания, ускорения, приближения, давления и магнитного поля.
- В разделе про железо собраны инструменты мониторинга и тестирования батареи, процессора (только спецификации), вибромотора, камеры, дисплея, динамиков, наушников и микрофона. Здесь же находятся сведения о системе.
- Раздел «Storage Information» отображает объемы свободной и используемой оперативной памяти, а также свободное и занятое место в системном хранилище и на съемных носителях (если подключены).
- Сетевой раздел содержит сведения о параметрах активного подключения и данные SIM-карты. Кстати, если в телефоне стоят 2 симки, программа увидит только первую.
AnTuTu Benchmark
Согласитесь, без AnTuTu Benchmark обзор приложений для диагностики Андроид-гаджетов был бы неполным. Ведь это, пожалуй, самое популярное в мире средство сравнительного тестирования производительности мобильных устройств.
- Быстродействие памяти.
- Быстродействие процессора и графического ускорителя.
- Удобство использования девайса (скорость прокрутки текста и т. п.).
- Скорость обработки данных и изображений.
- Безопасность обработки данных.
По итогам каждого теста смартфон получает баллы (иногда их называют «попугаями»), которые затем суммируются и формируют общий показатель AnTuTu. Этим показателем и принято мериться.
Кроме того, AnTuTu Benchmark собирает общие сведения о системе и отдельных ее составляющих – сенсорах, экране, батарее, тачскрине, HTML 5 в браузере, а также проводит стресс-тесты на стабильность.
Какое из восьми приложений самое лучшее? Наверное, то где больше функций и удобней интерфейс. Чаще всего так и есть, но бывают исключения. Ведь не существует программ, которые корректно работают абсолютно на всех устройствах. Поэтому лучшим для вас будет то, что больше всего «по душе» и «по зубам» вашему смартфону.
Источник