Нативная разработка мобильных приложений



Download 3,69 Mb.
Pdf ko'rish
bet143/228
Sana21.07.2022
Hajmi3,69 Mb.
#834838
1   ...   139   140   141   142   143   144   145   146   ...   228
Bog'liq
Нативная разработка мобильных приложений

androidTest
. См. рис. 14.1 и сопровождающий его 
текст.
Этот тест может показаться простым, но он очень пригодится потом, когда 
разработчик выполнит рефакторинг, даже не подозревая, что при этом был за
-
тронут класс или метод. Тем не менее совершенно понятно, что полезность 
таких простых тестов имеет свой предел. Даже для такого простого метода, как 
Maths.multiply
, может возникнуть масса ситуаций, приводящих к интересным 
результатам.
Статическая типизация в Java значительно снижает вероятность появления 
ошибок – поскольку оба параметра имеют тип 
int
, нам не придется беспоко
-
иться о значениях 
null
или значениях, не умещающихся в 32-разрядные числа 
со знаком.
В соответствии с рекомендациями по тестированию для Android модульные 
тесты также называют «маленькими тестами», и они должны составлять по
-
рядка 70 % от общего объема тестов.
Выше в пирамиде тестирования находятся средние и большие тесты. Сред
-
ние тесты обычно совпадают с так называемыми интеграционными теста
-
ми – тестами, проверяющими работу нескольких логических блоков, классов 
или методов. В соответствии с рекомендациями по тестированию для Android 
средние тесты должны составлять порядка 20 % от общего объема тестов. Сред
-
ний, или интеграционный, тест может проверить правильность использования 
учетных данных при входе в приложение, например: правильную обработку 
пустых строк, соответствие их ожидаемым шаблонам, таким как адреса элект-
ронной почты. Если пользовательские данные хранятся локально на устрой
-
стве, интеграционный тест может проверить успешность аутентификации, 
а в случае использования удаленной аутентификации – успешную отправку 
HTTP-запроса, а также сам запрос на наличие в нем соответствующих заголов
-
ков, тела, шифрования и целевого адреса.
Некоторые интеграционные тесты могут быть инструментированными. 
Инст рументированный тест – это тест, который выполняется на реальном 


216

Тестирование
устройстве или в эмуляторе, получает события ввода, использует системные 
часы и рисует пиксели на экране.
Библиотека Robolectric (
http://robolectric.org/
) очень популярна среди раз
-
работчиков Android и прекрасно подходит для реализации интеграционных 
тестов. На конференции Google I/O 2018 была представлена новая версия Ro
-
bolectric 4 в комплексе с фреймворком тестирования AndroidX, заменившим 
большую часть библиотек Robolectric. Многие детали интеграции этих инстру
-
ментов скрыты от пользователя и не должны вызывать нарушений в работе 
существующего тестового кода. Чтобы получить более полное представление 
об AndroidX и Robolectic, их интеграции и как извлечь максимальную выгоду 
из каждого инструмента в конкретных условиях, мы советуем обратиться к до
-
кументации для разработчиков AndroidX Test (
h
ttps://oreil.ly/Wnp8A
).
Мы рекомендуем использовать Robolectric 4 и обязательно ознакомиться 
с документацией к этой версии. Robolectric и AndroidX избавляют от необхо
-
димости писать массу шаблонного кода, предлагая свои фиктивные классы 
фреймворка Android, эмуляцию жизненного цикла 
Ac ti vi ty
и дополнительные 
возможности, такие как система 
Shadows
, которая позволяет легко смоделиро
-
вать любой существующий класс и переопределить логику его работы. Напри
-
мер, можно создать класс 
ShadowThread
, который просто запускается в основном 
потоке при вызове 
start
вместо запуска нового потока выполнения, или 
Shad­
owThreadPoolExecutor
, который немедленно запускает свою очередь, синхронно 
и последовательно, помогая тем самым значительно уменьшить сложность 
тес тирования асинхронных приложений.
Для реализации интеграционных тестов с использованием AndroidX и Ro
-
bolectric необходимо знакомство с некоторыми дополнительными библиоте
-
ками. Далее мы покажем несколько примеров, но полное обсуждение приемов 
тестирования выходит за рамки этой главы. Обязательно загляните в докумен
-
тацию для разработчиков Android (
https://oreil.
ly/EpCMX
), если у вас появится 
желание глубже изучить подходы к тестированию в Android.
И наконец, на самой вершине пирамиды находятся большие, или сквозные, 
тесты. Обычно все сквозные тесты являются инструментированными и могут 
охватывать целые «процессы». Например, представьте приложение с функци
-
ей создания открытки, которая позволяет захватить изображение с использо
-
ванием камеры устройства, добавить в изображение различные графические 
элементы, преобразовать результат в поток данных, выгрузить его на сервер, 
где пользователь должен пройти аутентификацию, и сохранить изображение 
на сервере, чтобы потом пользователь смог получить его или поделиться с дру
-
гими. Сквозной тест может запустить описанный процесс и проверить появле
-
ние изображения на сервере и его доступность для других.
Инструментированное тестирование
иногда называют «тестированием 
пользовательского интерфейса», но на самом деле интеграционные тесты, 
выполняемые вне инструментальной среды, тоже можно было бы назвать ин
-
струментированными. Как бы то ни было, при создании инструментирован
-
ных тестов часто полезно прибегнуть к помощи Espresso. Библиотека Espresso 
предлагает цепочечный синтаксис и функциональную парадигму. Она может 
имитировать щелчки и прокрутку, а также ввод текста и даже позволяет фикси
-
ровать пользовательский ввод и сравнивать фактический вывод с ожидаемым. 


Android 

217
Чтобы узнать больше о тестировании пользовательского интерфейса с исполь
-
зованием Espresso, загляните в документацию (
https://oreil.
ly/ziFOJ
).
Далее вы узнаете, как писать и выполнять модульные и интеграционные 
тесты .
Создав новый проект в Android Studio, вы сразу же сможете найти каталоги 
для тестов. Для этого можно использовать представление Android с раскрыва
-
ющимся списком каталогов проекта.
Откройте модуль приложения (обычно он имеет имя app), затем подкаталог 
java. Внутри него вы найдете как минимум три каталога: каталог с основным 
исходным кодом и с именем, совпадающим с именем вашего пакета (напри
-
мер, my.site.appname), и два каталога с тем же именем, но с дополнительными 
метками в скобках (test) и (androidTest), которые отображаются более бледным 
цветом, как показано на рис. 14.1.

Download 3,69 Mb.

Do'stlaringiz bilan baham:
1   ...   139   140   141   142   143   144   145   146   ...   228




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish