SlideShare uma empresa Scribd logo
1 de 20
ADC SPb
12 ноября 2010г
Построение процесса
непрерывной
интеграции в
проектах для iOS
Эльдар Марков, e-Legion
30.01.15 2
Непрерывная интеграция
Непрерывная интеграция != автоматическая сборка
Определение: Непрерывная интеграция (Continuous
Integration) — процесс выполнения автоматических
сборок, выявляющий возможные интеграционные
проблемы с помощью:

Компиляции исходных кодов

Запуск юнит-тестов

Любые другие средства, повышающие качество
30.01.15 3
Преимущества

Выполнение всей рутины

Уведомления о результатах сборки

Сохранение результатов сборки — всегда
доступные артефакты
30.01.15 4
Системы непрерывной
интеграции
Мы используем TeamCity (JetBrains):

Поддержка большого количества VCS

Полная версия бесплатная для малых групп

Способы запуска:

Command Line, Ant, Nant,Visual Studio,
Maven2, пр.
Другие системы:
Apache Continuum, Team Foundation Servers, Tinderbox,
BuildBox
30.01.15 5
Основные принципы работы
TeamCity Server

Мониторинг за состоянием репозитория

Запуск сборочного агента

Сборка проекта на стороне сборочного агента

Копирование артефактов на сервер

Предоставление доступа к артефактам сборки
30.01.15 6
Интерфейс
30.01.15 7
Сборка проекта

Компиляция, линковка

Выполнение юнит-тестов

Запуск Code Analyzer

Анализ логов всех этапов
30.01.15 8
Юнит-тесты
Рабочий фрейворк — Google Toolbox for Mac
Альтернативы:

SenTestingKit framework (Xcode)

GHUnit
Принцип работы большинства — создание Target в Xcode.
Запуск юнит-тестов — сборка этой Target.
STAssertTrue(gTestMultiDelegateVar == 2 + 2 * 1,
@"Adding twice '1'... Should be == 6 but now it's
%d", gTestMultiDelegateVar)
30.01.15 9
Добавление юнит-тестов
30.01.15 10
Пример юнит-теста
@interface LogicTests : GTMTestCase {
}
- (void)testPerformSelector;
@end
@implementation LogicTests
- (void) testPerformSelector {
NSString *resFor3Params = [self
performSelector:@selector(returnString:obj2:obj3:)
withObject:nil withObject:nil withObject:nil];
STAssertTrue ([resFor3Params isEqualToString:@"YES"], @"should
be 'YES'");
}
@end
30.01.15 11
Пример юнит-теста. Запуск

Build results:
Test Case '-[LogicTests testConfig]' started.
Test Case '-[LogicTests testConfig]' passed (0.000 seconds).
Test Case '-[LogicTests testMultiDelegate]' started.
LogicTests.m:105: error: -[LogicTests testMultiDelegate] : 'gTestMultiDelegateVar ==
2 + 2 * 1' should be true. Adding twice '1'... Should be == 6 but now it's 6
30.01.15 12
Сборка проекта агентом сборки

Коммандная строка

Комманда xcodebuild:
xcodebuild -project $ProjectName -alltargets -configuration
$ConfigurationName
-alltargets – сборка “рабочего” Target и Target c юнит-тестами
30.01.15 13
Xcode Code Analyzer

Статический анализатор кода на предмет
наличия ошибок

Xcode 3.2

Автоматический запуск при сборке
30.01.15 14
Xcode Code Analyzer. Пример
30.01.15 15
Контроль за «чистотой» кода

Анализ каждого этапа работы сборочного
агента

Формат предупреждений одинаковый:
Classes/(.*?.m:d+).*?warning:(.*)
Classes/FlipsideViewController.m:18: warning: unused variable 'rentPrice'
30.01.15 16
Работа с ветвями VCS

Конец итерации: создание ветви Test

Итерация:
− Исправление ошибок в Test, слияние с Trunk
− Текущая работа в Trunk

Конец итерации: создание ветви Production

goto begin
30.01.15 17
Работа с ветвями VCS.
Иллюстрация
30.01.15 18
Манифест процесса разработки

Юнит-тесты

Анализаторы кода

Система CI не должна долгое время
находиться в состоянии «неудачная сборка»

Частые коммиты
30.01.15 19
Результаты ввода

Избавление разработчиков от рутины
− Сборка, анализ
− Предоставление результатов сборки

Повешение текущего качества продукта
− Юнит-тесты
− Своевременное исправление ошибок
Спасибо за внимание!

Mais conteúdo relacionado

Mais procurados

Григорий Демченко — Асинхронное программирование и сопрограммы
Григорий Демченко — Асинхронное программирование и сопрограммыГригорий Демченко — Асинхронное программирование и сопрограммы
Григорий Демченко — Асинхронное программирование и сопрограммыYandex
 
Selenium grid on-demand
Selenium grid on-demandSelenium grid on-demand
Selenium grid on-demandSQALab
 
Многопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметкиМногопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметкиDotNetConf
 
Как это будет: ASP.NET Core
Как это будет: ASP.NET CoreКак это будет: ASP.NET Core
Как это будет: ASP.NET CoreDotNetConf
 
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестов
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестовЮлия Ковалёва. Fscheck — альтернативный путь для unit тестов
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестовMskDotNet Community
 
Антон Полухин, Немного о Boost
Антон Полухин, Немного о BoostАнтон Полухин, Немного о Boost
Антон Полухин, Немного о BoostSergey Platonov
 
Система управления автоматическими тестами на примере использования Visual St...
Система управления автоматическими тестами на примере использования Visual St...Система управления автоматическими тестами на примере использования Visual St...
Система управления автоматическими тестами на примере использования Visual St...SQALab
 
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Andrey Rebrov
 
Асинхронность и сопрограммы
Асинхронность и сопрограммыАсинхронность и сопрограммы
Асинхронность и сопрограммыPlatonov Sergey
 
Автоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиАвтоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиSQALab
 
Инструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщикаИнструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщикаSQALab
 
Multithreading in java past and actual
Multithreading in java past and actualMultithreading in java past and actual
Multithreading in java past and actualYevgen Levik
 
Основы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрованияОсновы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрованияbearoff
 
Wild Async .NET world: AID Kit for boy-scouts
Wild Async .NET world: AID Kit for boy-scoutsWild Async .NET world: AID Kit for boy-scouts
Wild Async .NET world: AID Kit for boy-scoutsHYS Enterprise
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveBDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveSQALab
 
ReactiveUI: Rx + MVVM
ReactiveUI: Rx + MVVMReactiveUI: Rx + MVVM
ReactiveUI: Rx + MVVMStas Shusha
 
Как за час сделать недельную работу
Как за час сделать недельную работуКак за час сделать недельную работу
Как за час сделать недельную работуcorehard_by
 

Mais procurados (20)

Григорий Демченко — Асинхронное программирование и сопрограммы
Григорий Демченко — Асинхронное программирование и сопрограммыГригорий Демченко — Асинхронное программирование и сопрограммы
Григорий Демченко — Асинхронное программирование и сопрограммы
 
Selenium grid on-demand
Selenium grid on-demandSelenium grid on-demand
Selenium grid on-demand
 
Java threads - part 3
Java threads - part 3Java threads - part 3
Java threads - part 3
 
Многопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметкиМногопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметки
 
Как это будет: ASP.NET Core
Как это будет: ASP.NET CoreКак это будет: ASP.NET Core
Как это будет: ASP.NET Core
 
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестов
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестовЮлия Ковалёва. Fscheck — альтернативный путь для unit тестов
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестов
 
Антон Полухин, Немного о Boost
Антон Полухин, Немного о BoostАнтон Полухин, Немного о Boost
Антон Полухин, Немного о Boost
 
Java threads - part 1
Java threads - part 1Java threads - part 1
Java threads - part 1
 
Система управления автоматическими тестами на примере использования Visual St...
Система управления автоматическими тестами на примере использования Visual St...Система управления автоматическими тестами на примере использования Visual St...
Система управления автоматическими тестами на примере использования Visual St...
 
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
 
Асинхронность и сопрограммы
Асинхронность и сопрограммыАсинхронность и сопрограммы
Асинхронность и сопрограммы
 
Автоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиАвтоматизация тестирования многопоточности
Автоматизация тестирования многопоточности
 
Инструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщикаИнструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщика
 
Multithreading in java past and actual
Multithreading in java past and actualMultithreading in java past and actual
Multithreading in java past and actual
 
Java 8. Thread pools
Java 8. Thread poolsJava 8. Thread pools
Java 8. Thread pools
 
Основы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрованияОсновы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрования
 
Wild Async .NET world: AID Kit for boy-scouts
Wild Async .NET world: AID Kit for boy-scoutsWild Async .NET world: AID Kit for boy-scouts
Wild Async .NET world: AID Kit for boy-scouts
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveBDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehave
 
ReactiveUI: Rx + MVVM
ReactiveUI: Rx + MVVMReactiveUI: Rx + MVVM
ReactiveUI: Rx + MVVM
 
Как за час сделать недельную работу
Как за час сделать недельную работуКак за час сделать недельную работу
Как за час сделать недельную работу
 

Destaque

Carta al minem 14 mayo 2010
Carta al minem 14 mayo 2010Carta al minem 14 mayo 2010
Carta al minem 14 mayo 2010rppc
 
Het zorgportaal documentatie (juni2012)
Het zorgportaal   documentatie  (juni2012)Het zorgportaal   documentatie  (juni2012)
Het zorgportaal documentatie (juni2012)Raymond
 
Enhanced engagement through geography ISTE 2014
Enhanced engagement through geography ISTE 2014Enhanced engagement through geography ISTE 2014
Enhanced engagement through geography ISTE 2014Kevin Amboe
 
Lost in elysium
Lost in elysiumLost in elysium
Lost in elysiumJay Lee
 
Camera buying guidelines
Camera buying guidelinesCamera buying guidelines
Camera buying guidelinesThomas Klose
 
Русская бизнес-профессионалов
Русская бизнес-профессионаловРусская бизнес-профессионалов
Русская бизнес-профессионаловDavid Dugas
 
Qivana Ibo Presentation Vietnamese
Qivana Ibo Presentation  VietnameseQivana Ibo Presentation  Vietnamese
Qivana Ibo Presentation VietnameseDavid Dugas
 
Kanterakis bosc2010 molgenis
Kanterakis bosc2010 molgenisKanterakis bosc2010 molgenis
Kanterakis bosc2010 molgenisBOSC 2010
 
Presentation on future of libraries for 50th library week program in Ankara, ...
Presentation on future of libraries for 50th library week program in Ankara, ...Presentation on future of libraries for 50th library week program in Ankara, ...
Presentation on future of libraries for 50th library week program in Ankara, ...Erna Winters
 
Empúries
EmpúriesEmpúries
Empúriesrnota
 
Indonesia berhasil meraih 2 emas pada world memory championship 2014
Indonesia berhasil meraih 2 emas pada world memory championship 2014 Indonesia berhasil meraih 2 emas pada world memory championship 2014
Indonesia berhasil meraih 2 emas pada world memory championship 2014 Yudi Lesmana
 
Viral business v2
Viral business v2Viral business v2
Viral business v2jonfisheruk
 
Brochure Koertse Bouw En Onderhoud
Brochure Koertse Bouw En OnderhoudBrochure Koertse Bouw En Onderhoud
Brochure Koertse Bouw En OnderhoudCees Koertse
 
Coates bosc2010 clouds-fluff-and-no-substance
Coates bosc2010 clouds-fluff-and-no-substanceCoates bosc2010 clouds-fluff-and-no-substance
Coates bosc2010 clouds-fluff-and-no-substanceBOSC 2010
 
Owen bosc2010 taverna2.2-cows
Owen bosc2010 taverna2.2-cowsOwen bosc2010 taverna2.2-cows
Owen bosc2010 taverna2.2-cowsBOSC 2010
 
Talevich bosc2010 bio-phylo
Talevich bosc2010 bio-phyloTalevich bosc2010 bio-phylo
Talevich bosc2010 bio-phyloBOSC 2010
 

Destaque (20)

Tape dvd
Tape dvdTape dvd
Tape dvd
 
Carta al minem 14 mayo 2010
Carta al minem 14 mayo 2010Carta al minem 14 mayo 2010
Carta al minem 14 mayo 2010
 
Het zorgportaal documentatie (juni2012)
Het zorgportaal   documentatie  (juni2012)Het zorgportaal   documentatie  (juni2012)
Het zorgportaal documentatie (juni2012)
 
Enhanced engagement through geography ISTE 2014
Enhanced engagement through geography ISTE 2014Enhanced engagement through geography ISTE 2014
Enhanced engagement through geography ISTE 2014
 
Lost in elysium
Lost in elysiumLost in elysium
Lost in elysium
 
50ejerciciosestadistica
50ejerciciosestadistica50ejerciciosestadistica
50ejerciciosestadistica
 
Camera buying guidelines
Camera buying guidelinesCamera buying guidelines
Camera buying guidelines
 
Русская бизнес-профессионалов
Русская бизнес-профессионаловРусская бизнес-профессионалов
Русская бизнес-профессионалов
 
Qivana Ibo Presentation Vietnamese
Qivana Ibo Presentation  VietnameseQivana Ibo Presentation  Vietnamese
Qivana Ibo Presentation Vietnamese
 
Kanterakis bosc2010 molgenis
Kanterakis bosc2010 molgenisKanterakis bosc2010 molgenis
Kanterakis bosc2010 molgenis
 
Presentation on future of libraries for 50th library week program in Ankara, ...
Presentation on future of libraries for 50th library week program in Ankara, ...Presentation on future of libraries for 50th library week program in Ankara, ...
Presentation on future of libraries for 50th library week program in Ankara, ...
 
Empúries
EmpúriesEmpúries
Empúries
 
Indonesia berhasil meraih 2 emas pada world memory championship 2014
Indonesia berhasil meraih 2 emas pada world memory championship 2014 Indonesia berhasil meraih 2 emas pada world memory championship 2014
Indonesia berhasil meraih 2 emas pada world memory championship 2014
 
Viral business v2
Viral business v2Viral business v2
Viral business v2
 
Brochure Koertse Bouw En Onderhoud
Brochure Koertse Bouw En OnderhoudBrochure Koertse Bouw En Onderhoud
Brochure Koertse Bouw En Onderhoud
 
Inspirational Instruments 1 LAMPSHAPES
Inspirational Instruments 1 LAMPSHAPESInspirational Instruments 1 LAMPSHAPES
Inspirational Instruments 1 LAMPSHAPES
 
Coates bosc2010 clouds-fluff-and-no-substance
Coates bosc2010 clouds-fluff-and-no-substanceCoates bosc2010 clouds-fluff-and-no-substance
Coates bosc2010 clouds-fluff-and-no-substance
 
Owen bosc2010 taverna2.2-cows
Owen bosc2010 taverna2.2-cowsOwen bosc2010 taverna2.2-cows
Owen bosc2010 taverna2.2-cows
 
Intro to Drush
Intro to DrushIntro to Drush
Intro to Drush
 
Talevich bosc2010 bio-phylo
Talevich bosc2010 bio-phyloTalevich bosc2010 bio-phylo
Talevich bosc2010 bio-phylo
 

Semelhante a Эльдар Марков

Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Ontico
 
C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.Igor Shkulipa
 
Денис Кандров, Пушкова Евгения, QSpec: тестирование графических приложений на Qt
Денис Кандров, Пушкова Евгения, QSpec: тестирование графических приложений на QtДенис Кандров, Пушкова Евгения, QSpec: тестирование графических приложений на Qt
Денис Кандров, Пушкова Евгения, QSpec: тестирование графических приложений на QtSergey Platonov
 
Unit tests final
Unit tests finalUnit tests final
Unit tests finalcorehard_by
 
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23MoscowJS
 
Опыт разработки статического анализатора кода
Опыт разработки статического анализатора кодаОпыт разработки статического анализатора кода
Опыт разработки статического анализатора кодаAndrey Karpov
 
Continous Integration
Continous IntegrationContinous Integration
Continous IntegrationGetDev.NET
 
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITYCONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITYPavel Tsukanov
 
Javascript testing
Javascript testingJavascript testing
Javascript testingTCS bank
 
Распределённое нагрузочное тестирование на Java
Распределённое нагрузочное тестирование на JavaРаспределённое нагрузочное тестирование на Java
Распределённое нагрузочное тестирование на Javaaragozin
 
Автоматизация тестирования в Microsoft Team System и “костыли”
Автоматизация тестирования в Microsoft Team System и “костыли”Автоматизация тестирования в Microsoft Team System и “костыли”
Автоматизация тестирования в Microsoft Team System и “костыли”QA Dnepropetrovsk Community (Ukraine)
 
Froglogic Squish
Froglogic Squish Froglogic Squish
Froglogic Squish SQALab
 
Jbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot StarterJbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot StarterAleksandr Tarasov
 
Руководство по приготовлению бутербродов из Selenium
Руководство по приготовлению бутербродов из SeleniumРуководство по приготовлению бутербродов из Selenium
Руководство по приготовлению бутербродов из SeleniumUladzimir Kryvenka
 
Testing RIA with Selenium
Testing RIA with SeleniumTesting RIA with Selenium
Testing RIA with SeleniumSergey Shvets
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
Всё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программистаВсё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программистаAndrey Karpov
 

Semelhante a Эльдар Марков (20)

Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)
 
C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.
 
Денис Кандров, Пушкова Евгения, QSpec: тестирование графических приложений на Qt
Денис Кандров, Пушкова Евгения, QSpec: тестирование графических приложений на QtДенис Кандров, Пушкова Евгения, QSpec: тестирование графических приложений на Qt
Денис Кандров, Пушкова Евгения, QSpec: тестирование графических приложений на Qt
 
Unit tests final
Unit tests finalUnit tests final
Unit tests final
 
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
 
Опыт разработки статического анализатора кода
Опыт разработки статического анализатора кодаОпыт разработки статического анализатора кода
Опыт разработки статического анализатора кода
 
Continous Integration
Continous IntegrationContinous Integration
Continous Integration
 
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITYCONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
 
Javascript testing
Javascript testingJavascript testing
Javascript testing
 
Распределённое нагрузочное тестирование на Java
Распределённое нагрузочное тестирование на JavaРаспределённое нагрузочное тестирование на Java
Распределённое нагрузочное тестирование на Java
 
Автоматизация тестирования в Microsoft Team System и “костыли”
Автоматизация тестирования в Microsoft Team System и “костыли”Автоматизация тестирования в Microsoft Team System и “костыли”
Автоматизация тестирования в Microsoft Team System и “костыли”
 
Froglogic Squish
Froglogic Squish Froglogic Squish
Froglogic Squish
 
Непрерывная интеграция (Марина Пестова)
Непрерывная интеграция (Марина Пестова)Непрерывная интеграция (Марина Пестова)
Непрерывная интеграция (Марина Пестова)
 
Jbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot StarterJbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot Starter
 
Tbb лр1
Tbb   лр1Tbb   лр1
Tbb лр1
 
Руководство по приготовлению бутербродов из Selenium
Руководство по приготовлению бутербродов из SeleniumРуководство по приготовлению бутербродов из Selenium
Руководство по приготовлению бутербродов из Selenium
 
Testing RIA with Selenium
Testing RIA with SeleniumTesting RIA with Selenium
Testing RIA with Selenium
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Automation testing desktop applications
Automation testing desktop applicationsAutomation testing desktop applications
Automation testing desktop applications
 
Всё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программистаВсё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программиста
 

Mais de alarin

Зачем интернет магазину мобильное приложение
Зачем интернет магазину мобильное приложениеЗачем интернет магазину мобильное приложение
Зачем интернет магазину мобильное приложениеalarin
 
Рейтинг мобильных разработчиков МТОП-20
Рейтинг мобильных разработчиков МТОП-20Рейтинг мобильных разработчиков МТОП-20
Рейтинг мобильных разработчиков МТОП-20alarin
 
Как попасть стартапу в СМИ
Как попасть стартапу в СМИКак попасть стартапу в СМИ
Как попасть стартапу в СМИalarin
 
_right_ Goozzy TechCrunch presentation
_right_ Goozzy TechCrunch presentation_right_ Goozzy TechCrunch presentation
_right_ Goozzy TechCrunch presentationalarin
 
Денис Марголин, как Apple превращается в мобильную компанию
Денис Марголин, как Apple превращается в мобильную компаниюДенис Марголин, как Apple превращается в мобильную компанию
Денис Марголин, как Apple превращается в мобильную компаниюalarin
 
Goozzy presentation for Venture Summit East 2010
Goozzy presentation for Venture Summit East 2010Goozzy presentation for Venture Summit East 2010
Goozzy presentation for Venture Summit East 2010alarin
 
StartupLunch. Voices in the head
StartupLunch. Voices in the headStartupLunch. Voices in the head
StartupLunch. Voices in the headalarin
 
Goozzy
Goozzy Goozzy
Goozzy alarin
 

Mais de alarin (8)

Зачем интернет магазину мобильное приложение
Зачем интернет магазину мобильное приложениеЗачем интернет магазину мобильное приложение
Зачем интернет магазину мобильное приложение
 
Рейтинг мобильных разработчиков МТОП-20
Рейтинг мобильных разработчиков МТОП-20Рейтинг мобильных разработчиков МТОП-20
Рейтинг мобильных разработчиков МТОП-20
 
Как попасть стартапу в СМИ
Как попасть стартапу в СМИКак попасть стартапу в СМИ
Как попасть стартапу в СМИ
 
_right_ Goozzy TechCrunch presentation
_right_ Goozzy TechCrunch presentation_right_ Goozzy TechCrunch presentation
_right_ Goozzy TechCrunch presentation
 
Денис Марголин, как Apple превращается в мобильную компанию
Денис Марголин, как Apple превращается в мобильную компаниюДенис Марголин, как Apple превращается в мобильную компанию
Денис Марголин, как Apple превращается в мобильную компанию
 
Goozzy presentation for Venture Summit East 2010
Goozzy presentation for Venture Summit East 2010Goozzy presentation for Venture Summit East 2010
Goozzy presentation for Venture Summit East 2010
 
StartupLunch. Voices in the head
StartupLunch. Voices in the headStartupLunch. Voices in the head
StartupLunch. Voices in the head
 
Goozzy
Goozzy Goozzy
Goozzy
 

Эльдар Марков

  • 1. ADC SPb 12 ноября 2010г Построение процесса непрерывной интеграции в проектах для iOS Эльдар Марков, e-Legion
  • 2. 30.01.15 2 Непрерывная интеграция Непрерывная интеграция != автоматическая сборка Определение: Непрерывная интеграция (Continuous Integration) — процесс выполнения автоматических сборок, выявляющий возможные интеграционные проблемы с помощью:  Компиляции исходных кодов  Запуск юнит-тестов  Любые другие средства, повышающие качество
  • 3. 30.01.15 3 Преимущества  Выполнение всей рутины  Уведомления о результатах сборки  Сохранение результатов сборки — всегда доступные артефакты
  • 4. 30.01.15 4 Системы непрерывной интеграции Мы используем TeamCity (JetBrains):  Поддержка большого количества VCS  Полная версия бесплатная для малых групп  Способы запуска:  Command Line, Ant, Nant,Visual Studio, Maven2, пр. Другие системы: Apache Continuum, Team Foundation Servers, Tinderbox, BuildBox
  • 5. 30.01.15 5 Основные принципы работы TeamCity Server  Мониторинг за состоянием репозитория  Запуск сборочного агента  Сборка проекта на стороне сборочного агента  Копирование артефактов на сервер  Предоставление доступа к артефактам сборки
  • 7. 30.01.15 7 Сборка проекта  Компиляция, линковка  Выполнение юнит-тестов  Запуск Code Analyzer  Анализ логов всех этапов
  • 8. 30.01.15 8 Юнит-тесты Рабочий фрейворк — Google Toolbox for Mac Альтернативы:  SenTestingKit framework (Xcode)  GHUnit Принцип работы большинства — создание Target в Xcode. Запуск юнит-тестов — сборка этой Target. STAssertTrue(gTestMultiDelegateVar == 2 + 2 * 1, @"Adding twice '1'... Should be == 6 but now it's %d", gTestMultiDelegateVar)
  • 10. 30.01.15 10 Пример юнит-теста @interface LogicTests : GTMTestCase { } - (void)testPerformSelector; @end @implementation LogicTests - (void) testPerformSelector { NSString *resFor3Params = [self performSelector:@selector(returnString:obj2:obj3:) withObject:nil withObject:nil withObject:nil]; STAssertTrue ([resFor3Params isEqualToString:@"YES"], @"should be 'YES'"); } @end
  • 11. 30.01.15 11 Пример юнит-теста. Запуск  Build results: Test Case '-[LogicTests testConfig]' started. Test Case '-[LogicTests testConfig]' passed (0.000 seconds). Test Case '-[LogicTests testMultiDelegate]' started. LogicTests.m:105: error: -[LogicTests testMultiDelegate] : 'gTestMultiDelegateVar == 2 + 2 * 1' should be true. Adding twice '1'... Should be == 6 but now it's 6
  • 12. 30.01.15 12 Сборка проекта агентом сборки  Коммандная строка  Комманда xcodebuild: xcodebuild -project $ProjectName -alltargets -configuration $ConfigurationName -alltargets – сборка “рабочего” Target и Target c юнит-тестами
  • 13. 30.01.15 13 Xcode Code Analyzer  Статический анализатор кода на предмет наличия ошибок  Xcode 3.2  Автоматический запуск при сборке
  • 14. 30.01.15 14 Xcode Code Analyzer. Пример
  • 15. 30.01.15 15 Контроль за «чистотой» кода  Анализ каждого этапа работы сборочного агента  Формат предупреждений одинаковый: Classes/(.*?.m:d+).*?warning:(.*) Classes/FlipsideViewController.m:18: warning: unused variable 'rentPrice'
  • 16. 30.01.15 16 Работа с ветвями VCS  Конец итерации: создание ветви Test  Итерация: − Исправление ошибок в Test, слияние с Trunk − Текущая работа в Trunk  Конец итерации: создание ветви Production  goto begin
  • 17. 30.01.15 17 Работа с ветвями VCS. Иллюстрация
  • 18. 30.01.15 18 Манифест процесса разработки  Юнит-тесты  Анализаторы кода  Система CI не должна долгое время находиться в состоянии «неудачная сборка»  Частые коммиты
  • 19. 30.01.15 19 Результаты ввода  Избавление разработчиков от рутины − Сборка, анализ − Предоставление результатов сборки  Повешение текущего качества продукта − Юнит-тесты − Своевременное исправление ошибок