SlideShare una empresa de Scribd logo
1 de 42
Процесс сборки мобильного
приложения
Кирилл Харьков
• Собрать
• Проверить
• Задеплоить
Задачи
• Собрать
• Проверить
• Задеплоить
Задачи
Сборка
Сборка
Сборка
Сборка
• 3 продукта
• A, B, C
Сборка
• 3 продукта
• A, B, C
• 8 вариантов
• Debug
• Alpha/Branch
• Beta/Corp Beta
• Release
• UnitUi Test
Сборка
• 3 продукта
• A, B, C
• 8 вариантов
• Debug
• Alpha/Branch
• Beta/Corp Beta
• Release
• UnitUi Test
3 * 8 = 24
Сборка
productFlavors {
A{
...
}
B{
...
}
C{
...
}
}
Сборка
buildTypes {
release {
…
}
debug {
…
}
alpha {
…
}
}
Сборка
productFlavors {
A{
...
android.buildTypes {
...
alpha {
…
hockeyApp {
[appId: 'b45-------1b', note: project.issues, releaseType: '2']
}
}
}
}
}
Сборка
Ресурсы
Сборка
Ресурсы
• Общие для всех продуктов (A, B, C)
Сборка
Ресурсы
• Общие для всех продуктов (A, B, C)
• Отдельные для каждого продукта
Сборка
Ресурсы
• Общие для всех продуктов (A, B, C)
• Отдельные для каждого продукта
• Общие ресурсы для группы продуктов (B, C)
Сборка
Папки ресурсов
• res – общие для A, B, C
• res_bc – общие для B, C
• res_a, res_b, res_c - частные
Сборка
Ресурсы продуктов
• A = res + res_a
• B = res + res_bc + res_b
• C = res + res_bc + res_c
Сборка
• Ресурсы
• Исходники
• Манифесты
• Assets
• Тесты
• Собрать
• Проверить
• Задеплоить
Задачи
• Собрать
• Проверить
• Задеплоить
Задачи
Тестирование
• Статический анализ
Тестирование
• Статический анализ
• Встроенные правила
Тестирование
• Статический анализ
• Встроенные правила
• Корпоративные правила
Тестирование
• Статический анализ
Тестирование
• Статический анализ
• Unit tests
Тестирование
@AcquireCookie
@LargeTest
public void testDeleteNonExistingFolder() {
DeleteFolder delete = runDeleteFolder(999);
assertERROR_FOLDER_NOT_EXIST(delete);
}
Тестирование
@AcquireCookie
@LargeTest
public void testDeleteNonExistingFolder() {
DeleteFolder delete = runDeleteFolder(999);
assertERROR_FOLDER_NOT_EXIST(delete);
}
@MockMethod(response = RESPONSE_NOT_EXISTS)
public void testDeleteNonExistingFolderMock() {
testDeleteNonExistingFolder();
}
Тестирование
• Статический анализ
• Unit tests
Тестирование
• Статический анализ
• Unit tests
• Ui tests
Тестирование
• Новый функционал
Тестирование
• Новый функционал
• Баг
Тестирование
• Новый функционал
• Баг
• Сценарии, затрагивающие сторонние сервисы
Тестирование
• Ui Test Framework
• Ui Automator
• Robotium/Espresso
• Appium
• …
Тестирование
/**
* Synchronously wait for the application to be idle. Can not be called
* from the main application thread -- use {@link #start} to execute
* instrumentation in its own thread.
*/
public void waitForIdleSync() {
validateNotAppThread();
Idler idler = new Idler(null);
mMessageQueue.addIdleHandler(idler);
mThread.getHandler().post(new EmptyRunnable());
idler.waitForIdle();
}
Тестирование
• Ui Test Framework
• Ui Automator
• Robotium/Espresso
• Appium
• …
Test Support Library
• Собрать
• Проверить
• Задеплоить
Задачи
• Собрать
• Проверить
• Задеплоить
Задачи
• Разные каналы (Alpha, Beta, …)
Деплой
• Разные каналы (Alpha, Beta, …)
• Площадки (форумы, соц. сети, маркеты)
Деплой
• Разные каналы (Alpha, Beta, …)
• Площадки (форумы, соц. сети, маркеты)
Деплой
Спасибо за внимание!
Кирилл Харьков
+7 926 052 23 17
k.kharkov@corp.mail.ru
xka39k@gmail.com

Más contenido relacionado

Destacado

BizTalks. Aлексей Шереметьев. Planner 5d
BizTalks. Aлексей Шереметьев. Planner 5dBizTalks. Aлексей Шереметьев. Planner 5d
BizTalks. Aлексей Шереметьев. Planner 5dMail.ru Group
 
Илья Сафронов, Security Meetup 9 апреля, Mail.Ru Group
Илья Сафронов, Security Meetup 9 апреля, Mail.Ru GroupИлья Сафронов, Security Meetup 9 апреля, Mail.Ru Group
Илья Сафронов, Security Meetup 9 апреля, Mail.Ru GroupMail.ru Group
 
«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)
«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)
«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)Mail.ru Group
 
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
«Взломать за 60 секунд», Артем Кулаков, RedmadrobotMail.ru Group
 
Droidcon Moscow 2015. Расширение мобильного бэкенда и интернета вещей в облак...
Droidcon Moscow 2015. Расширение мобильного бэкенда и интернета вещей в облак...Droidcon Moscow 2015. Расширение мобильного бэкенда и интернета вещей в облак...
Droidcon Moscow 2015. Расширение мобильного бэкенда и интернета вещей в облак...Mail.ru Group
 
«Как общаться и договариваться с заказчиками о проектной работе», Валентин Ша...
«Как общаться и договариваться с заказчиками о проектной работе», Валентин Ша...«Как общаться и договариваться с заказчиками о проектной работе», Валентин Ша...
«Как общаться и договариваться с заказчиками о проектной работе», Валентин Ша...Mail.ru Group
 
BizTalks. Алексей Сергеев. Проект «Mail.Ru для бизнеса»
BizTalks. Алексей Сергеев. Проект «Mail.Ru для бизнеса»BizTalks. Алексей Сергеев. Проект «Mail.Ru для бизнеса»
BizTalks. Алексей Сергеев. Проект «Mail.Ru для бизнеса»Mail.ru Group
 
CocoaHeads Moscow. Азиз Латыпов, VIPole. «Запросы в CoreData с агрегатными фу...
CocoaHeads Moscow. Азиз Латыпов, VIPole. «Запросы в CoreData с агрегатными фу...CocoaHeads Moscow. Азиз Латыпов, VIPole. «Запросы в CoreData с агрегатными фу...
CocoaHeads Moscow. Азиз Латыпов, VIPole. «Запросы в CoreData с агрегатными фу...Mail.ru Group
 
Дмитрий Симонов (независимый программист), «Учимся рисовать»
Дмитрий Симонов (независимый программист), «Учимся рисовать»Дмитрий Симонов (независимый программист), «Учимся рисовать»
Дмитрий Симонов (независимый программист), «Учимся рисовать»Mail.ru Group
 
CocoaHeads Moscow. Владислав Дугнист. «Dependency Injection с Blood Magic»
CocoaHeads Moscow. Владислав Дугнист. «Dependency Injection с Blood Magic»CocoaHeads Moscow. Владислав Дугнист. «Dependency Injection с Blood Magic»
CocoaHeads Moscow. Владислав Дугнист. «Dependency Injection с Blood Magic»Mail.ru Group
 
Droidcon Moscow 2015. Взаимодействие между потоками в Android. Максим Ефимов ...
Droidcon Moscow 2015. Взаимодействие между потоками в Android. Максим Ефимов ...Droidcon Moscow 2015. Взаимодействие между потоками в Android. Максим Ефимов ...
Droidcon Moscow 2015. Взаимодействие между потоками в Android. Максим Ефимов ...Mail.ru Group
 
Денис Кулябин, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Денис Кулябин, Moscow Atlassian Meetup 21 апреля, Mail.Ru GroupДенис Кулябин, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Денис Кулябин, Moscow Atlassian Meetup 21 апреля, Mail.Ru GroupMail.ru Group
 
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru GroupАндрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru GroupMail.ru Group
 
«Управление логикой переходов между экранами приложения с помощью координатор...
«Управление логикой переходов между экранами приложения с помощью координатор...«Управление логикой переходов между экранами приложения с помощью координатор...
«Управление логикой переходов между экранами приложения с помощью координатор...Mail.ru Group
 
BizTalks. Максим Макашев («Братья Чебурашкины. Семейная ферма»)
BizTalks. Максим Макашев («Братья Чебурашкины. Семейная ферма»)BizTalks. Максим Макашев («Братья Чебурашкины. Семейная ферма»)
BizTalks. Максим Макашев («Братья Чебурашкины. Семейная ферма»)Mail.ru Group
 
«Buzzwords everywhere, или Борьба с ветряными мельницами», Артём Дроздов, Mai...
«Buzzwords everywhere, или Борьба с ветряными мельницами», Артём Дроздов, Mai...«Buzzwords everywhere, или Борьба с ветряными мельницами», Артём Дроздов, Mai...
«Buzzwords everywhere, или Борьба с ветряными мельницами», Артём Дроздов, Mai...Mail.ru Group
 
Droidcon Moscow 2015. Оптимизация кросс-платформенной разработки. Максим Кузн...
Droidcon Moscow 2015. Оптимизация кросс-платформенной разработки. Максим Кузн...Droidcon Moscow 2015. Оптимизация кросс-платформенной разработки. Максим Кузн...
Droidcon Moscow 2015. Оптимизация кросс-платформенной разработки. Максим Кузн...Mail.ru Group
 
Дмитрий Юницкий. «Android NDK или как я перестал бояться и полюбил нативную р...
Дмитрий Юницкий. «Android NDK или как я перестал бояться и полюбил нативную р...Дмитрий Юницкий. «Android NDK или как я перестал бояться и полюбил нативную р...
Дмитрий Юницкий. «Android NDK или как я перестал бояться и полюбил нативную р...Mail.ru Group
 
«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис Глазков«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис ГлазковMail.ru Group
 
«JMM в Android», Максим Ефимов, Redmadrobot
«JMM в Android», Максим Ефимов, Redmadrobot«JMM в Android», Максим Ефимов, Redmadrobot
«JMM в Android», Максим Ефимов, RedmadrobotMail.ru Group
 

Destacado (20)

BizTalks. Aлексей Шереметьев. Planner 5d
BizTalks. Aлексей Шереметьев. Planner 5dBizTalks. Aлексей Шереметьев. Planner 5d
BizTalks. Aлексей Шереметьев. Planner 5d
 
Илья Сафронов, Security Meetup 9 апреля, Mail.Ru Group
Илья Сафронов, Security Meetup 9 апреля, Mail.Ru GroupИлья Сафронов, Security Meetup 9 апреля, Mail.Ru Group
Илья Сафронов, Security Meetup 9 апреля, Mail.Ru Group
 
«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)
«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)
«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)
 
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
 
Droidcon Moscow 2015. Расширение мобильного бэкенда и интернета вещей в облак...
Droidcon Moscow 2015. Расширение мобильного бэкенда и интернета вещей в облак...Droidcon Moscow 2015. Расширение мобильного бэкенда и интернета вещей в облак...
Droidcon Moscow 2015. Расширение мобильного бэкенда и интернета вещей в облак...
 
«Как общаться и договариваться с заказчиками о проектной работе», Валентин Ша...
«Как общаться и договариваться с заказчиками о проектной работе», Валентин Ша...«Как общаться и договариваться с заказчиками о проектной работе», Валентин Ша...
«Как общаться и договариваться с заказчиками о проектной работе», Валентин Ша...
 
BizTalks. Алексей Сергеев. Проект «Mail.Ru для бизнеса»
BizTalks. Алексей Сергеев. Проект «Mail.Ru для бизнеса»BizTalks. Алексей Сергеев. Проект «Mail.Ru для бизнеса»
BizTalks. Алексей Сергеев. Проект «Mail.Ru для бизнеса»
 
CocoaHeads Moscow. Азиз Латыпов, VIPole. «Запросы в CoreData с агрегатными фу...
CocoaHeads Moscow. Азиз Латыпов, VIPole. «Запросы в CoreData с агрегатными фу...CocoaHeads Moscow. Азиз Латыпов, VIPole. «Запросы в CoreData с агрегатными фу...
CocoaHeads Moscow. Азиз Латыпов, VIPole. «Запросы в CoreData с агрегатными фу...
 
Дмитрий Симонов (независимый программист), «Учимся рисовать»
Дмитрий Симонов (независимый программист), «Учимся рисовать»Дмитрий Симонов (независимый программист), «Учимся рисовать»
Дмитрий Симонов (независимый программист), «Учимся рисовать»
 
CocoaHeads Moscow. Владислав Дугнист. «Dependency Injection с Blood Magic»
CocoaHeads Moscow. Владислав Дугнист. «Dependency Injection с Blood Magic»CocoaHeads Moscow. Владислав Дугнист. «Dependency Injection с Blood Magic»
CocoaHeads Moscow. Владислав Дугнист. «Dependency Injection с Blood Magic»
 
Droidcon Moscow 2015. Взаимодействие между потоками в Android. Максим Ефимов ...
Droidcon Moscow 2015. Взаимодействие между потоками в Android. Максим Ефимов ...Droidcon Moscow 2015. Взаимодействие между потоками в Android. Максим Ефимов ...
Droidcon Moscow 2015. Взаимодействие между потоками в Android. Максим Ефимов ...
 
Денис Кулябин, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Денис Кулябин, Moscow Atlassian Meetup 21 апреля, Mail.Ru GroupДенис Кулябин, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Денис Кулябин, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
 
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru GroupАндрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
 
«Управление логикой переходов между экранами приложения с помощью координатор...
«Управление логикой переходов между экранами приложения с помощью координатор...«Управление логикой переходов между экранами приложения с помощью координатор...
«Управление логикой переходов между экранами приложения с помощью координатор...
 
BizTalks. Максим Макашев («Братья Чебурашкины. Семейная ферма»)
BizTalks. Максим Макашев («Братья Чебурашкины. Семейная ферма»)BizTalks. Максим Макашев («Братья Чебурашкины. Семейная ферма»)
BizTalks. Максим Макашев («Братья Чебурашкины. Семейная ферма»)
 
«Buzzwords everywhere, или Борьба с ветряными мельницами», Артём Дроздов, Mai...
«Buzzwords everywhere, или Борьба с ветряными мельницами», Артём Дроздов, Mai...«Buzzwords everywhere, или Борьба с ветряными мельницами», Артём Дроздов, Mai...
«Buzzwords everywhere, или Борьба с ветряными мельницами», Артём Дроздов, Mai...
 
Droidcon Moscow 2015. Оптимизация кросс-платформенной разработки. Максим Кузн...
Droidcon Moscow 2015. Оптимизация кросс-платформенной разработки. Максим Кузн...Droidcon Moscow 2015. Оптимизация кросс-платформенной разработки. Максим Кузн...
Droidcon Moscow 2015. Оптимизация кросс-платформенной разработки. Максим Кузн...
 
Дмитрий Юницкий. «Android NDK или как я перестал бояться и полюбил нативную р...
Дмитрий Юницкий. «Android NDK или как я перестал бояться и полюбил нативную р...Дмитрий Юницкий. «Android NDK или как я перестал бояться и полюбил нативную р...
Дмитрий Юницкий. «Android NDK или как я перестал бояться и полюбил нативную р...
 
«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис Глазков«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис Глазков
 
«JMM в Android», Максим Ефимов, Redmadrobot
«JMM в Android», Максим Ефимов, Redmadrobot«JMM в Android», Максим Ефимов, Redmadrobot
«JMM в Android», Максим Ефимов, Redmadrobot
 

Similar a Droidcon Moscow 2015. Настоящий Build должен делать 3 вещи собрать, проверить, задеплоить. Кирилл Харьков - Mail.Ru Group

Регрессионное тестирование верстки
Регрессионное тестирование версткиРегрессионное тестирование верстки
Регрессионное тестирование версткиTalks&Works
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов ИгорьPVasili
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорьdrupalconf
 
Лекция 11. Тестирование.
Лекция 11. Тестирование.Лекция 11. Тестирование.
Лекция 11. Тестирование.Roman Brovko
 
Automation Functional Testing in Agile Projects
Automation Functional Testing in Agile ProjectsAutomation Functional Testing in Agile Projects
Automation Functional Testing in Agile ProjectsAndrey Rebrov
 
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...Positive Hack Days
 
Victor Kuliamin.CSEDays
Victor Kuliamin.CSEDaysVictor Kuliamin.CSEDays
Victor Kuliamin.CSEDaysLiloSEA
 
Автотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполнения
Автотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполненияАвтотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполнения
Автотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполненияSQALab
 
Cache2012 administrationbasics
Cache2012 administrationbasicsCache2012 administrationbasics
Cache2012 administrationbasicsDenis Pavlov
 
Как создать качественный статический анализатор
Как создать качественный статический анализаторКак создать качественный статический анализатор
Как создать качественный статический анализаторAndrey Karpov
 
Организация процесса ручного тестирования
Организация процесса ручного тестированияОрганизация процесса ручного тестирования
Организация процесса ручного тестированияIT61
 
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularizationIvan Krylov
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveBDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveSQALab
 
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья ШишковC++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишковcorehard_by
 
Unit test быстрый старт
Unit test быстрый стартUnit test быстрый старт
Unit test быстрый стартAntonio
 
Выжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим ГопейВыжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим ГопейEatDog
 
TestLink
TestLinkTestLink
TestLinkISsoft
 
Вадим Зубович - Test Link
Вадим Зубович - Test LinkВадим Зубович - Test Link
Вадим Зубович - Test LinkQA Club Minsk
 

Similar a Droidcon Moscow 2015. Настоящий Build должен делать 3 вещи собрать, проверить, задеплоить. Кирилл Харьков - Mail.Ru Group (20)

Регрессионное тестирование верстки
Регрессионное тестирование версткиРегрессионное тестирование верстки
Регрессионное тестирование верстки
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
 
Лекция 11. Тестирование.
Лекция 11. Тестирование.Лекция 11. Тестирование.
Лекция 11. Тестирование.
 
Automation Functional Testing in Agile Projects
Automation Functional Testing in Agile ProjectsAutomation Functional Testing in Agile Projects
Automation Functional Testing in Agile Projects
 
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...
 
Victor Kuliamin.CSEDays
Victor Kuliamin.CSEDaysVictor Kuliamin.CSEDays
Victor Kuliamin.CSEDays
 
Автотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполнения
Автотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполненияАвтотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполнения
Автотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполнения
 
Cache2012 administrationbasics
Cache2012 administrationbasicsCache2012 administrationbasics
Cache2012 administrationbasics
 
Как создать качественный статический анализатор
Как создать качественный статический анализаторКак создать качественный статический анализатор
Как создать качественный статический анализатор
 
Организация процесса ручного тестирования
Организация процесса ручного тестированияОрганизация процесса ручного тестирования
Организация процесса ручного тестирования
 
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularization
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveBDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehave
 
Curse of spring boot test [VRN]
Curse of spring boot test [VRN]Curse of spring boot test [VRN]
Curse of spring boot test [VRN]
 
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья ШишковC++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
 
Unit test быстрый старт
Unit test быстрый стартUnit test быстрый старт
Unit test быстрый старт
 
Выжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим ГопейВыжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим Гопей
 
Survive with OOP
Survive with OOPSurvive with OOP
Survive with OOP
 
TestLink
TestLinkTestLink
TestLink
 
Вадим Зубович - Test Link
Вадим Зубович - Test LinkВадим Зубович - Test Link
Вадим Зубович - Test Link
 

Más de Mail.ru Group

Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...Mail.ru Group
 
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...Mail.ru Group
 
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир ДубровинДругая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир ДубровинMail.ru Group
 
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...Mail.ru Group
 
Управление инцидентами в Почте Mail.ru, Антон Викторов
Управление инцидентами в Почте Mail.ru, Антон ВикторовУправление инцидентами в Почте Mail.ru, Антон Викторов
Управление инцидентами в Почте Mail.ru, Антон ВикторовMail.ru Group
 
DAST в CI/CD, Ольга Свиридова
DAST в CI/CD, Ольга СвиридоваDAST в CI/CD, Ольга Свиридова
DAST в CI/CD, Ольга СвиридоваMail.ru Group
 
Почему вам стоит использовать свой велосипед и почему не стоит Александр Бел...
Почему вам стоит использовать свой велосипед и почему не стоит  Александр Бел...Почему вам стоит использовать свой велосипед и почему не стоит  Александр Бел...
Почему вам стоит использовать свой велосипед и почему не стоит Александр Бел...Mail.ru Group
 
CV в пайплайне распознавания ценников товаров: трюки и хитрости Николай Масл...
CV в пайплайне распознавания ценников товаров: трюки и хитрости  Николай Масл...CV в пайплайне распознавания ценников товаров: трюки и хитрости  Николай Масл...
CV в пайплайне распознавания ценников товаров: трюки и хитрости Николай Масл...Mail.ru Group
 
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidia
RAPIDS: ускоряем Pandas и scikit-learn на GPU  Павел Клеменков, NVidiaRAPIDS: ускоряем Pandas и scikit-learn на GPU  Павел Клеменков, NVidia
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidiaMail.ru Group
 
WebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий ОстапенкоWebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий ОстапенкоMail.ru Group
 
AMP для электронной почты, Сергей Пешков
AMP для электронной почты, Сергей ПешковAMP для электронной почты, Сергей Пешков
AMP для электронной почты, Сергей ПешковMail.ru Group
 
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила СтрелковКак мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила СтрелковMail.ru Group
 
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...Mail.ru Group
 
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.ТаксиМетапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.ТаксиMail.ru Group
 
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru GroupКак не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru GroupMail.ru Group
 
Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Этика искусственного интеллекта, Александр Кармаев (AI Journey)Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Этика искусственного интеллекта, Александр Кармаев (AI Journey)Mail.ru Group
 
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...Mail.ru Group
 
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...Mail.ru Group
 
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)Mail.ru Group
 
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()Mail.ru Group
 

Más de Mail.ru Group (20)

Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
 
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
 
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир ДубровинДругая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
 
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
 
Управление инцидентами в Почте Mail.ru, Антон Викторов
Управление инцидентами в Почте Mail.ru, Антон ВикторовУправление инцидентами в Почте Mail.ru, Антон Викторов
Управление инцидентами в Почте Mail.ru, Антон Викторов
 
DAST в CI/CD, Ольга Свиридова
DAST в CI/CD, Ольга СвиридоваDAST в CI/CD, Ольга Свиридова
DAST в CI/CD, Ольга Свиридова
 
Почему вам стоит использовать свой велосипед и почему не стоит Александр Бел...
Почему вам стоит использовать свой велосипед и почему не стоит  Александр Бел...Почему вам стоит использовать свой велосипед и почему не стоит  Александр Бел...
Почему вам стоит использовать свой велосипед и почему не стоит Александр Бел...
 
CV в пайплайне распознавания ценников товаров: трюки и хитрости Николай Масл...
CV в пайплайне распознавания ценников товаров: трюки и хитрости  Николай Масл...CV в пайплайне распознавания ценников товаров: трюки и хитрости  Николай Масл...
CV в пайплайне распознавания ценников товаров: трюки и хитрости Николай Масл...
 
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidia
RAPIDS: ускоряем Pandas и scikit-learn на GPU  Павел Клеменков, NVidiaRAPIDS: ускоряем Pandas и scikit-learn на GPU  Павел Клеменков, NVidia
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidia
 
WebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий ОстапенкоWebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий Остапенко
 
AMP для электронной почты, Сергей Пешков
AMP для электронной почты, Сергей ПешковAMP для электронной почты, Сергей Пешков
AMP для электронной почты, Сергей Пешков
 
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила СтрелковКак мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
 
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
 
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.ТаксиМетапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
 
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru GroupКак не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
 
Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Этика искусственного интеллекта, Александр Кармаев (AI Journey)Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Этика искусственного интеллекта, Александр Кармаев (AI Journey)
 
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
 
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
 
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
 
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
 

Droidcon Moscow 2015. Настоящий Build должен делать 3 вещи собрать, проверить, задеплоить. Кирилл Харьков - Mail.Ru Group

Notas del editor

  1. Добрый день, меня зовут Кирилл, я занимаюсь разработкой мобильной почты в Mail.Ru, Сегодня я расскажу о нашем опыте оргинизации процесса сборки мобильного приложения. Сразу скажу что это не гайдлайн, не учебник. Это то, как мы видим задачи, которые решаются за счет правильного организованного процесса сборки. Кто-то сможет узнать что-то полезное для себя и своего проекта, а кто-то просто послушает альтернативный подход для привычных задач.
  2. На самом деле рассказывая про сборку нужно вернуться чуть назад и посмотреть что мы будем собирать В разных командах разный флоу, завязанный на ветки
  3. Ключевой момент здесь с точки зрения процесса разработки это то, что мы должны без лишних манипуляций получать билд как в фичовой ветке, так и в основной ветке, в любой интеграционной ветке, хотфиксе и т.д. С точки зрения всей разработки, особенно в большой команде, это дает преимущество, которое сложно переоценить – ИЗОЛИРОВАННОЕ ТЕСТИРОВАНИЕ Имеет как плюсы так и минусы
  4. Держать ветку в актуальном состоянии Тестировать последние изменения Раньше узнавать о конфликтах Вот после того как мы вытащили правильные сорцы, мы можем приступать к упаковке кода в APK
  5. Итак сборка. Сборка безусловно у нас используется в единственном числе. Но как и все нормальные менеджеры, наши, подразумевают чуть больше чем просто одна apk:
  6. Начнем с того что это три разных продукта, назовем их A, B и C
  7. Начнем с того что это три разных продукта, назовем их A, B и C
  8. Начнем с того что это три разных продукта, назовем их A, B и C
  9. Начнем с того что это три разных продукта, назовем их A, B и C
  10. Начнем с того что это три разных продукта, назовем их A, B и C
  11. Все это делает конфигурацию проекта очень гибкой. Мы можем избегать странных условий, свитч кейзов и прочих гадостей в коде проекта Вместо этого мы просто подставляем уже правильные значения во время сборки приложения Таким образом можно скрыть за абстракцией различные реализации фич, включать\выключать целые разделы в приложении и многое другое.
  12. Идеальных вариантов не бывает Общие ресурсы, например разметка написания письма Дублирование – плохо, зашиваться на то что все должно быть одинаково – тоже.
  13. Идеальных вариантов не бывает Общие ресурсы, например разметка написания письма Дублирование – плохо, зашиваться на то что все должно быть одинаково – тоже.
  14. Идеальных вариантов не бывает Общие ресурсы, например разметка написания письма Дублирование – плохо, зашиваться на то что все должно быть одинаково – тоже.
  15. Идеальных вариантов не бывает Общие ресурсы, например разметка написания письма Дублирование – плохо, зашиваться на то что все должно быть одинаково – тоже.
  16. Идеальных вариантов не бывает Общие ресурсы, например разметка написания письма Дублирование – плохо, зашиваться на то что все должно быть одинаково – тоже.
  17. ВАЖНО – набор для каждого продукта не должен содержать дубликатов
  18. ВАЖНО – набор для каждого продукта не должен содержать дубликатов
  19. Остается запустить gradle task и собрать либо все сразу, либо что-то конкретное. Таким образом сборку можно распараллелить
  20. Автоматизированное тестирование – тренд последних пары лет Все об этом говорят, но никто не видел Проверки можно делать разные. Не стоит зацикливаться на каком-то одном варианте, для каждой проблемы нужно выбирать способ, который лучше всего подходит.
  21. я не знаю почему этому подходу уделяется так мало внимания, потому что это очень мощный инструмент, который позволяет применять формализованные правила ко всему проекту, а не к отдельным классам.
  22. Android – lint Find bugs
  23. В каждой команде есть свои правила Конвенции, за которыми сложно следить
  24. Не совсем статический анализ, но статические проверки, - проверки которые выполняются с помощью хуков репозитория Например отсутствие SNAPSHOT версий библиотек в основной ветке разработки
  25. Здесь по большому счету все обыденно. На некоторые классы написаны проверки, которые позволяют убедиться, что класс работает именно так как задумывалось и заодно показывают клиенту класса пример как им можно воспользоваться. Главная техническая особенность юнит тестов это возможность мокать ответы зависимостей класса. Для этого етсь многие фреймворки, которые поддерживаются и могут быть использованы в android проектах. Это удобно когда нужно замокать вызов какой-то функции, поведение какого-то класса. Сложнее, когда речь идет о том, чтобы мокать сетевое взаимодействие. Оказывается, что не все знают что делается это достаточно просто – через подстановку UrlStreamHandler’а при этом не нужно ни одной строчки менять в коде, который выполняет сетевой запрос Выглядит это все вот так
  26. В этом тесте мы делаем честный запрос на сервер, то есть команда работает абсолютно так же как и в приложении. Проблема в том, что юнит тест зависит от того как настроена сеть на девайсе, на котором он выполняется. А ниже идет второй тест, который проверяет абсолютно то же самое, но уже подставляя желаемый ответ, не выполняя реального запроса и не взаимодействуя с сервером.
  27. Таким образом мы имеем возможность управлять тем, как тесты выполняются, это нужно например, для того, чтобы статус билда не учитывал то, как ответил нам сервер. Мы закладываемся на протокол. Однако, например, для ночной сборки, неплохо было бы убедиться еще и в том, что контракт с сервером не нарушен Дело в том, что мы не хотим постоянно зависеть от сервиса, но хотим мониторить ситуацию и в виде ежедневных отчетов получать информацию о том, что все в порядке или о том, что какая-то часть приложения не в порядке. Здесь я предпочитаю разделять наше приложение и сторонние сервисы, которые критичны для полноценной работы приложения, но не являются зоной нашей ответственности. Мы можем обнаружить проблему в нашем приложении, связанную с работой стороннего сервиса, но мы не сможем ее поправить. Наша задача состоит в том, чтобы сообщить о проблеме, дождаться исправления и прогнать тесты на работу с этим сервисом, чтобы убедиться в том, что проблема устранена.
  28. Все как завещал Фаулер – тесты должно быть легко писать, легко запускать, тогда они будут помогать, а не мешать.
  29. С точки зрения пользователя - самые честные тесты. С точки зрения разработчика - самые сложные. Самые честные потому что тестируют конечный продукт, а не какую-то его часть. То есть по определению не получится свалить вину на кого-то другого. Если письмо не открылось, значит это баг приложения. И плевать, баг из-за несовершенства android’а, либо подвели кривые руки другого разработчика, либо что-то еще. Факт остается фактом и ошибку нужно исправить Если Unit-testы больше для того, чтобы разработчик убедился в том, что его код работает именно так как он задумывал, то ui-testы больше для того, чтобы продуктовая команда убедилась в том, что пользовательские сценарии в приложении отрабатывают корректно.
  30. TDD В этом случае нет необходимости в том, чтобы задействовать весь бюррократический аппарат, в котором несколько человек должны проаппрувить, что баг исправлен, что ничего нового не сломалось и т.д. Вся соль в том, что если тест написан вдумчиво и целью написания теста было обнаружение и выявление проблемы, то такой тест уже дает повод считать проблему решенной, если он успешно проходит. Чем больше таких кейзов закрыто тестами, тем качественне является проверка, потому что выше вероятность, что мы ничего не упустили.
  31. На рынке их много Исторически мы в проекте Почта Mail.Ru использовали Robotium. Это весьма известное решение, которое используется большим количеством команнд как у нас в стане так и за рубежом. Что объединяет всех пользователей фреймворка - так это нелюбовь к этому самому фреймворку
  32. Его использование, как мы на своем опыте убедились, решает большинство проблем с тем, что View не найдена, хотя скрины показывают, что все отображается, с тем, что View находится в промежуточном состоянии анимируя свои свойства от одного значения к другому и т.д.
  33. С появлением test Support library тестирование стало намного проще. Не нужно выбирать какой-то один фреймворк, можно пользоваться тем что удобно даже внутри одного тестового сценария, например
  34. Мы проверили, сделали все возможные тесты и убедились, что приложение отвечает всем заявленным требованиям качество
  35. запускаем
  36. Мы проверили, сделали все возможные тесты и убедились, что приложение отвечает всем заявленным требованиям качество
  37. Мы проверили, сделали все возможные тесты и убедились, что приложение отвечает всем заявленным требованиям качество
  38. Мы проверили, сделали все возможные тесты и убедились, что приложение отвечает всем заявленным требованиям качество