Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Можно. Нужно. Пора осуществить.
Денис Неклюдов
Google Developer Expert
Для менеджеров.
- Нужно найти специалистов по автоматизированному
тестированию или выучить существующих
разработчиков.
+ Разработчики, покрывающие код тестами, никогда не
вернуться к грехам прошлого
+ Точность сроков сдачи повышается с качеством кода.
- Около 40% времени нужно добавить на написание и
поддержку тестов.
+ Большая часть времени ручного тестирования и
исправления багов убирается.
Для разработчиков. Преимущества.
● Вы пишите чистый код на чистой, модульной, слабо-
связной архитектуре.
● Повышается ваша уверенность в правильной работе
вашего кода.
● Описывая тестовые кейсы, вы структурируете в
голове и в IDE работу вашего модуля.
● Легче разобраться, что делает тот или иной модуль,
всегда можно посмотреть тесты для него.
История тестирования. Что можно было вчера.
● JUnit 3 тесты, которые прогоняются на устройстве.
● Monkey и MonkeyRunner. Предки Espresso.
● Roboelectric. Переход на локальную JVM.
● Robotium. Полноценные автоматизированные тесты
UI.
История тестирования. Espresso. Преимущества.
Espresso по сравнению с Robotium:
● Более читабельное и удобное для расширений API
● Меньшая завязанность на Android фреймворке
● Быстрота выполнения
● Легкочитаемые ошибки
● Синхронизация в много-поточном приложении
История тестирования. Testing support library.
http://developer.android.com/intl/ru/tools/testing-support-library/index.html
 Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
MVP. Конкретнее некуда
● Вы можете не следовать S.O.L.I.D.
● Вы можете не отделять полностью слои и делать
вертикальную архитектуру
● Вы можете даже не внедрять Dependency Injection
● Но вы должны отделять вашу бизнес логику от UI.
http://www.tinmegali.com/
MVP. Presenter, ты наше все.
● Не держите ничего зависимого от контекста в классе
Presenter.
● Покрывайте каждый метод тестами.
● Мокайте внешние зависимости и утилиты, зависимые
от Android SDK и контекста.
 Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
Test Driven Development.
● Вы пишете тест для вашего метода, в котором нет
обращений к Android SDK.
● Он выполняется на JVM мгновенно.
● Пока вы пишете тест, вы формализуете в голове, как
должен работать ваш метод, моделируете
нормальное поведение и поведение в граничных
условиях.
● Вы пишите чисто, разбиваете на большее число
методов и уверены в каждом из них, благодаря
высокой степени покрытия.
Мокирование.
Мокирование.
● Mockito - для подмены ответов при вызовах методов
мокируемого класса и проверки, что методы
мокируемого класса были вызваны.
● PowerMock - для работы с приватными и статичными
полями и методами.
● OkHttpMockServer - для мокирования обращений к
серверу при использовании OkHttp в качестве http-
клиента.
Mockito. Пример.
PowerMock.
OkHttpMockServer. Пример. Инициализация.
OkHttpMockServer. Пример. Тест.
Автоматическое тестирование.
Автоматическое тестирование.
Мы не пишем ни одного теста, сценария, скрипта.
Тестовый фреймворк сам нажимает на различные кнопки
и переходит между экранами. Создает скриншоты,
замеряет производительности на разных окружениях.
● NimbleDroid - бесплатный сервис, загрузив в него apk
мы смотрим результаты запуска нашего приложения и
прохода по его экранам.
Google Cloud Test Lab
Google Cloud Test Lab
Стоит денег, но при этом позволяет:
● осуществлять автоматическое тестирование на
реальных девайсах через облако,
● запускать из Android Studio/консоли/CI любые
тесты на реальных устройствах через облако,
● просматривать результаты тестов в том числе со
скриншотами с реальных устройств на различных
конфигурациях.
Espresso. Простая проверка.
https://github.com/chiuki/espresso-samples
Поиск нужного view в иерархии. HierarchyViewer
Поиск нужного view в иерархии. Scalpel
Espresso. Проверка интента.
https://google.github.io/android-testing-support-library/docs/espresso/intents/index.html
Espresso. Работа с ListView
https://github.com/chiuki/espresso-samples
Espresso. Проверка кастомного View.
https://github.com/chiuki/espresso-samples
Espresso. Работа с RecyclerView
https://github.com/chiuki/espresso-samples
Espresso. Шпаргалка
https://google.github.io/
android-testing-support-library/
docs/espresso/cheatsheet/index
.html
Espresso. Синхронизация тестов с потоками.
Espresso. Синхронизация тестов с потоками.
Espresso. Синхронизация тестов с потоками.
Espresso. Синхронизация тестов с потоками.
Espresso. Синхронизация тестов с потоками.
UI тестирование. Тесты на разных экранах.
Espresso - только для одного Activity! В нем не стоит
тестировать переходы.
Для проверки переходов и взаимодействия с другими
приложениями - UI Automator!
http://d.android.com/
intl/ru/tools/
testing-support-library/
CI и тестирование.
./gradlew assembleTest
//добавить скриншот с результатами тестов
CI и тестирование.
./gradlew assembleAndroidTest
CI и тестирование.
./gradlew spoon
Задание на дом.
Сегодня написать новую Activity, выделив Presenter и покрыть
его тестами.
Завтра написать тест, проверяющий работу UI с помощью
Espresso.
На следующей неделе добавить в CI запуск всех тестов.
...
 Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва

More Related Content

Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва