Browse Source

Merge branch 'master' of http://213.155.192.79:3001/ypv/ISRPO

ypv 1 year ago
parent
commit
193651c06f

+ 65 - 0
Лекции/AndoidStudio/Android_Studio_Kovalev_art.md

@@ -0,0 +1,65 @@
+## Что такое Android Studio и для чего она нужна
+**Android Studio** — это интегрированная среда разработки (integrated development environment) от Google для создания Android-приложений. В ней можно писать код, проектировать графический интерфейс, проводить отладку и сборку приложений для публикации в магазинах.
+
+**Код в Android Studio пишут на Java или Kotlin** — языке программирования, который в Google назвали официальным для разработки под операционную систему Android.
+
+Как и любая IDE, Android Studio упрощает написание кода. Например, она умеет автоматически искать и исправлять ошибки в программах и даже писать за вас код. Для последнего используется **Studio Bot** — встроенный ИИ, с которым можно общаться на естественном языке.
+
+В эмуляторе операционной системы можно запустить готовые пресеты виртуального железа, которые работают аналогично реально существующим устройствам, или создать собственные конфигурации с определённой версией операционной системы. Это позволяет протестировать приложение на десятках разных устройств.
+
+Когда код будет написан и протестирован, Android Studio приведёт его к формату, подходящему для публикации в Google Play, AppGallery, RuStore и других магазинах приложений для Android.
+## Как пользоваться Android Studio
+Запустите IDE. Чтобы начать новый проект, нажмите кнопку **New Project** в приветственном окне.
+![](https://skillbox.ru/upload/setka_images/14365428112023_cae856732bd4226855875d839121e46dd85999a9.png)
+В следующем окне нужно выбрать тип устройства (слева) и шаблон для проектирования. Справа будут расположены готовые шаблоны и две пустые заготовки: **No Activity** и **Empty Activity**.
+
+Разработчики чаще всего используют два последних варианта. Мы выберем **Empty Activity**, потому что в этой заготовке есть пустой слой активности, в то время как в **No Activity** его придётся создавать самостоятельно.
+![](https://skillbox.ru/upload/setka_images/14382028112023_073efc852a65b7685aeef7707c1c1bd107b26868.png)
+На следующем экране Android Studio потребуется заполнить информацию о будущем приложении:
+![](https://skillbox.ru/upload/setka_images/14390228112023_d0e289e355555cb39f9d7f499b6888c389473c54.png)
+## Что означают поля
+
+● **Name** — название приложения.
+
+● **Package Name** — идентификатор приложения. Именно его будет видеть мобильная ОС и магазин приложений Google Play. Его изменение распознаётся системой как создание абсолютно нового приложения, даже если Name и программный код останутся прежними. Как правило, Package Name указывается в формате com.название_компании.название_приложения.
+
+● **Save location** — путь до каталога, в котором будет храниться проект.
+
+● **Minimum SDK** — минимальная версия Android, на которой запустится ваше приложение. Интересно, что под этим полем Android Studio подсказывает, на каком количестве активных Android-устройств можно будет использовать вашу программу.
+
+● **Build configuration language** — язык конфигурации сборки. По умолчанию рекомендуется использовать Kotlin DSL, его и оставим.
+Когда все данные будут введены, нажмите кнопку Finish.
+## Отладка приложения
+**Отладка** — это процесс проверки работоспособности приложения. Она позволяет просматривать системный журнал логов, устанавливать точки останова, проверять значения переменных и делать скриншоты и видеозаписи в процессе. Отладить приложения в Android Studio можно двумя способами — программным и аппаратным.
+
+**Программный метод**
+Протестировать приложение в Android Studio можно во встроенном эмуляторе ОС Android.
+
+Нажмите на пункт меню с названием устройства, находящийся в правом верхнем углу IDE рядом с кнопкой app, и из выпадающего меню выберите Device Manager.
+![](https://skillbox.ru/upload/setka_images/14460228112023_79a3bf1b60dcd0c001f9454c21d4401a9576e013.png)
+В открывшемся окне можно выбрать готовые пресеты виртуального железа и ОС или же создать их самому, нажав Create Device. В нашем примере используем пресет, имитирующий аппаратную часть Google Pixel 7 с API 33, соответствующий Android 13.
+![](https://skillbox.ru/upload/setka_images/14470528112023_44e69e18d5579b310b71a78d394ed8c7a91c182f.png)
+Убедитесь, что в строке меню из первого пункта присутствует название вашей виртуальной машины и нажмите зелёную кнопку Run. Запустится эмулятор Android с вашим приложением в режиме отладки.
+## Аппаратный метод
+Для этого метода вам потребуется устройство на ОС Android с включённой функцией Отладка по USB. Данный пункт можно найти в настройках устройства в разделе Для разработчиков, который скрыт по умолчанию. Его месторасположение и способ активации зависят от производителя устройства. Инструкцию можно найти на официальном сайте производителя смартфона или на тематических форумах.
+
+После того как вы включили отладку, подключите смартфон к компьютеру через USB. На смартфоне появится уведомление с вопросом: **«Разрешить отладку по USB с данного компьютера?»** Разрешайте.
+
+В интерфейсе Android Studio, справа вверху, появится название вашего смартфона\
+![](https://skillbox.ru/upload/setka_images/14501528112023_854dea6f537eb50a7df2fcca1a632655ba83fb34.png)
+Нажмите на зелёную кнопку **Run**. После этого Android Studio подготовит приложение и запустит его на вашем Android-смартфоне в режиме отладки.
+## Сборка приложения
+Для сборки приложения Android Studio использует модуль **Gradle**.
+![](https://skillbox.ru/upload/setka_images/14513028112023_35e8ec2c216ebe3b8a886221f50a89fb11b30057.png)
+Чтобы запустить процесс сборки, откройте в верхнем меню **IDE** раздел **Build**, перейдите в подменю **Build Bundle(s) / APK(s)** и выберите, в каком формате вам нужно приложение:
+
+● **Build APK(s)** — создаёт .apk-файл, готовый к установке на устройство и к размещению в магазинах дистрибуции приложений, кроме Google Play.
+● **Build Bundle(s)** — создаёт проект в формате .aab, готовый для публикации в Google Play.
+
+Результат вы найдёте в папке проекта, по пути **app/build/outputs/apk/debug**. Его можно загрузить в любой магазин приложений.
+## Литература
+**https://skillbox.ru/media/code/chto-takoe-android-studio-i-kak-ey-polzovatsya/#stk-1**
+
+
+
+

+ 64 - 0
Лекции/Тестирование_мобильных_приложений/Test_Application_Kovalev_Art.md

@@ -0,0 +1,64 @@
+## Тестирование мобильных приложений: зачем оно нужно и как проводится
+**Что такое мобильное тестирование**
+С**мысл работы тестировщика** — убедиться, что программа ведёт себя как задумано: все функции работают правильно, шрифты и кнопки корректно отображаются на разных экранах, а внутренние процессы не подъедают память и батарею устройства.
+
+Сложность тестирования именно мобильных приложений в том, что разнообразных гаджетов в мире — миллионы. У каждого устройства — свой производитель, своя версия прошивки, свои диагональ и разрешение экрана. И если приложение отлично работает на одном устройстве, не факт, что всё будет в порядке и на других.
+
+Мало того, эти устройства часто оказываются в непредсказуемых условиях. Например, пользователь может сменить часовой пояс или дату, спуститься в метро, где слабый сигнал, включить авиарежим, подключиться через VPN — что угодно. И это мы ещё не говорим про целый зоопарк подключаемых аксессуаров, сим-карт и bluetooth-устройств, с которыми приложения тоже должны уметь работать.
+Все эти ситуации, как стандартные, так и совсем нештатные, должен учитывать мобильный тестировщик. В этой работе всё подчинено закону Мёрфи — если есть хоть мизерный шанс, что где-то что-то пойдёт не так, то он обязательно сработает.
+
+Поэтому у инженеров по качеству (так иногда называют представителей этой профессии) есть целый мультитул техник и инструментов, которые позволяют проверить все важные функции «на берегу».
+Виды мобильных приложений
+Все мобильные приложения можно разделить на четыре основные группы:
+
+**Нативные** — когда код пишется отдельно под каждую платформу на «родном» языке программирования. Например, для Android это Kotlin, а для iOS — Swift. Отличить такое приложение просто: оно устанавливается прямо на устройство, имеет свою иконку на рабочем столе и открывается даже без интернета.
+![](https://skillbox.ru/upload/setka_images/09522201022024_accf102caaa970ce65d217b9ae9a8e9a57caa67c.jpg)
+**Кросс-платформенные** — когда код пишется один раз, а потом запускается на разных устройствах. Такие приложения построены обычно не по гайдлайнам своих систем, а потому могут выглядеть чужеродно. Зато можно сэкономить время и деньги, доверив разработку сразу нескольких версий одной команде.
+![](https://skillbox.ru/upload/setka_images/09532601022024_e62f21341d7bd9864b2d60a5248407a508e44b8a.jpg)
+**Веб-приложения** — технически это не совсем мобильные приложения, а скорее сайты, адаптированные под мобильные устройства. Например, сайт банка «Тинькофф» — это веб-приложение. Можно даже вывести его иконку на рабочий стол смартфона и запускать как обычное нативное приложение.
+![](https://skillbox.ru/upload/setka_images/09535201022024_6896a8696b8038f4fc8989ab005e4fccc3b90047.jpg)
+**Гибридные** — это когда веб-страница или сайт открывается внутри мобильного приложения. Работает это обычно на базе технологии WebView: есть окно браузера, которое загружает контент, и есть несколько нативных элементов интерфейса, например кнопки навигации, анимация загрузки и другие.
+![](https://skillbox.ru/upload/setka_images/09543101022024_c7c2d6650fe8dd3125b1541cb39af56649bd56fa.jpg)
+У каждого типа приложений — свои сложности. Например, в случае с нативными тестировщику нужно хорошо разбираться в тонкостях платформы, а приложения WebView приходится проверять на множестве разных устройств. Но есть несколько инструментов и лайфхаков, которые помогут несколько упростить этот процесс.
+## Что проверяют мобильные тестировщики
+**Работу на популярных устройствах**. Протестировать приложение на всех смартфонах и планшетах невозможно. Поэтому на старте собирается статистика о том, на каких устройствах пользователи будут чаще всего его использовать. На самых популярных моделях и проводится тестирование.
+
+Сами устройства при этом можно не покупать. Есть множество сервисов, которые позволяют эмулировать работу разных девайсов — например, **browserstack.com**.
+![](https://skillbox.ru/upload/setka_images/09551901022024_0ed1686442ac630326a48ddcef43684fa02b904b.jpg)
+**Работу на самых старых и самых новых версиях ОС и браузеров**. Если приложение не поддерживает старую версию системы или браузера, разработчик может создать уведомление с просьбой обновиться. Тестирование же на новых версиях помогает проверить, как приложение взаимодействует с самыми свежими фишками системы.
+
+**Отображение контента**. Мобильные приложения могут запускаться на множестве устройств: от умных часов до планшетов. Но разнообразие экранов — это ещё полбеды. Важно также учитывать, чтобы элементы интерфейса нормально отображались при разном разрешении и ориентации экрана. Например, чтобы графические элементы не «сплющивались» при повороте устройства.
+
+**Интерактивность и жесты**. Пользователи взаимодействуют с мобильными приложениями в основном через жесты: свайпы, касания и двойные касания. Тестировщики проверяют, как работают все эти действия.
+
+**Производительность**. Мы ценим мобильные приложения за скорость: можно на лету проверить почту, ответить другу, заказать суши. Тестировщики следят за тем, чтобы это было действительно быстро — с помощью различных профайлеров замеряют скорость работы приложения и ищут узкие места в производительности.
+![](https://skillbox.ru/upload/setka_images/09555201022024_b30ff17d14b759c017197570526ff51b33cc83c5.jpg)
+Работу при разном уровне сигнала. Кто-то пользуется приложением в офисе со стабильным Wi-Fi, кто-то — в метро с одним делением сигнала. Кто-то подключается напрямую, кто-то — через прокси и VPN. Тестировщики проверяют, как будет вести себя приложение при разном качестве подключения или если оно вдруг резко оборвётся.
+**Работу при разном уровне сигнала**. Кто-то пользуется приложением в офисе со стабильным Wi-Fi, кто-то — в метро с одним делением сигнала. Кто-то подключается напрямую, кто-то — через прокси и VPN. Тестировщики проверяют, как будет вести себя приложение при разном качестве подключения или если оно вдруг резко оборвётся.
+
+**Удобство UX/UI**. Для каждой мобильной системы существуют свои дизайнерские гайдлайны, например для Android это Google Material Design, а для iOS — Human Interface Guidelines. Гайдлайны помогают разработчику расположить элементы интерфейса так, чтобы человек мог работать с ними бесшовно, не задумываясь над каждым действием, поэтому тестировщику важно проверять приложение ещё и по ним.
+
+**Доступность обновлений**. Тестировщики проверяют, соответствует ли приложение требованиям магазинов приложений (App Store, Google Play). Обновления приложений проверяются на совместимость с новыми версиями ОС и браузеров.
+## Методы тестирования мобильных приложений
+**● Ручное тестирование**. Тестировщики вручную пишут и выполняют тест-кейсы и сценарии, имитирующие действия пользователя, чтобы проверить функциональность, интерфейс и другие аспекты приложения. Ручное тестирование обычно применяется на начальных стадиях разработки.
+**● Автоматическое тестирование**. Чем сложнее продукт, тем сложнее и дольше его тестировать вручную. Исключить влияние человеческого фактора и ускорить процесс помогают автотесты. Среди популярных инструментов: фреймворк Appium, а также тестировщики интерфейсов — Espresso и XCUITest.
+**● Проверка производительности**. Тестируется производительность приложения при различной нагрузке и в разных условиях: при большом количестве пользователей, медленных сетях, ограниченных ресурсах устройства. Помочь в этом могут различные профайлеры и бенчмарки, встроенные в IDE, например The Android Profiler.
+**● Тестирование безопасности** — есть ли в приложении уязвимости, утечки памяти, возможность несанкционированного доступа. Популярный кейс — посмотреть, не передаются ли пользовательские данные в открытом виде.
+**● Тестирование UX/UI** — насколько удобно расположены элементы интерфейса и навигации, а также как приложение ведёт себя в необычных условиях: при смене размера шрифта, повороте экрана или сворачивании приложения.
+**● Тестирование настроек локализации и региональных различий** — насколько корректно будут отображаться и обрабатываться локальные настройки: формат отображения дат, времени, валюты, чисел, язык интерфейса.
+**● Тестирование совместимости с другими приложениями** — как приложение взаимодействует с другими популярными приложениями и сервисами.
+## Инструменты для тестирования мобильных приложений
+Есть множество инструментов для мобильного тестирования, которые помогают разработчикам и тестировщикам обнаруживать и исправлять ошибки. Рассмотрим некоторые из них подробно.
+
+**Эмуляторы и симуляторы**. Программы, которые позволяют разных устройств. С их помощью тестировщики могут проверить, как приложение ведёт себя на планшетах и смартфонах разных моделей, с разными версиями ОС, размерами экрана и другими параметрами без использования самих устройств.
+
+❓️ В чём разница между эмулятором и симулятором? Первые имитируют и программную, и аппаратную часть устройства, а вторые — только программную. Поэтому, если вам нужно протестировать работу приложения с камерой, микрофоном, динамиком и другим железом, лучше обратиться к эмулятору.
+![](https://skillbox.ru/upload/setka_images/09590301022024_fc9956ee2f4201e204a5532c68850c6715ed24e0.jpg)
+**Инструменты разработчика DevTools**. Набор инструментов, встроенных в браузеры. С их помощью можно проверить мобильное веб-приложение: как оно смотрится на разных экранах, насколько быстро загружается и сколько ресурсов потребляет. А бонусом даже получить подробный отчёт с советами по оптимизации страницы.
+![](https://skillbox.ru/upload/setka_images/10000001022024_6caf85fa09e0642959e62c753d9a2f18236eb1da.jpg)
+**Снифферы**. Анализируют трафик между мобильным устройством и сервером. Во время работы мобильное приложение постоянно обменивается запросами с сервером. Сниффер позволяет этот трафик перехватить и изучить. А ещё с их помощью можно искусственно замедлить скорость интернета, чтобы посмотреть, выдаст ли приложение запланированное сообщение об ошибке.
+## Литература
+**https://skillbox.ru/media/code/testirovanie-mobilnykh-prilozheniy-zachem-ono-nuzhno-i-kak-provoditsya/**
+
+
+