SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
Test Frameworks
         overview
Инженерные практики в iOS: Unit Tests
О нас
● Виталий Ружников
  ○ iOS-фрилансер
  ○ Руководитель разработки мобильных проектов

● Антон Катков
  ○ Тренер по инженерным практикам
  ○ Директор, руководитель проектов, iOS-
    разработчик
Roadmap
●   Unit Tests
●   OCUnit
●   Google Toolbox for Mac (GTM)
●   GHUnit
●   Рекоммендации
Unit Test
● Проверка компонента, что он ведет себя
  так, как ожидает этого программист;
● Компонентом может быть функция или
  класс.
Unit Test
● Не обращается к базе данных
● Не лезет в сеть
● Не обращается к файловой системе
● Для их выполнения приходится
  специально настраивать среду,
  например, править конфигурационные
  файлы.
● Выполняются быстро(очень очень
  быстро, тест, выполняющийся 1/10 сек,
  медленный тест)
Интеграционные
● Все остальное
Критерии
● Легкость подключения, написания и
  запуска тестов;
● Сообщения об ошибках в тестах;
● Возможность отладки;
● Интеграция с IDE(XCode 4.x, XCode 3.x,
  AppCode);
● Запуск тестов из коммандой строки(для
  регулярного прогона на сервере
  непрерывной интеграции);
OCUnit - Подключение
● Из коробки (галочку поставить при
  создании проекта);
● Либо добавить unit test target к
  существующему проекту;
OCUnit - Пишем тесты
●   Наследуемся от SenTestCase
●   -(void)testMyTestNameGoesHere{}
●   STAssertEquals
●   STAssertEqualsWithAccuracy
●   STAssertEqualObjects
●   STAssertThrows
OCUnit - Запуск, товарищи!
● Logic tests запускаются только на
  симуляторе
  ○ XCode 4 - Схема 'Test' для запуска
  ○ XCode 3 - выбрать таргет тестов
  ○ Можно редактировать какие тесты запускать,
    отредактировав схему
● Application tests - и на девайсе и на
  симуляторе
  ○ Использовать 'Run' scheme для запуска
  ○ Прогоняются все тесты
Демо
OCUnit - Сообщение об ошибках
● Номера строчек в коде и сообщения об
  ошибке
● Есть возможность генерации JUnit-
  подобных отчетов:
  ○ https://github.
    com/hborders/BPOCUnitXMLReporter
OCUnit - Отладка
● XCode 4 - Добавляем брейкпойнт и
  вперед
● XCode 3 - Излазить гугл и пройти
  нетривиальную инструкцию
OCUnit - Поддержка в IDE
● Свалившиеся тесты представлены в issue
  навигаторе.
● Application Tests - только сообщения в
  консоли.
OCUnit - Запуск из командной
строки
● Используем команду xcodebuild
  ○ xcodebuild -target UnitTests -configuration
     Debug -sdk iphonesimulator5.0 clean build
GTM Подключение
● Проходим инструкцию                           http://code.google.
  com/p/google-toolbox-for-mac/wiki/iPhoneUnitTesting
● Тесты по существу запускаются из
  коммандной строки
● Нет искусственного разграничения на
  logic и application тесты
GTM - Пишем тесты
● Наследуемся от GTMTestCase
● -(void)testMyTestNameGoesHere {}
● Assertations совместимы с теми, что в
  OCUnit!
● STAssertEqualStrings
GTM - Запуск
● И на девайсе и на симуляторе
● Нельзя выборочный запуск тестов делать
GTM - Сообщения об ошибках
● Практически такое же как в OCUnit;
● Нет информации о возможности
  генерации JUnit подобных отчетов;
GTM - Debugging
● Включаем галочку 'Run script only when
  installing'
  ○ Если не включить, то запуск тестов будет
    проводиться на этапе компиляции
● Ставим брейкпойнт и запускаем тестовый
  таргет
GTM - XCode Integration
● На этапе компиляции ошибки видны в
  issue навигаторе и редакторе кода
● При пригоне после установки на
  симуляторе ищем сообщения об
  ошибках в консоли
GTM - Запуск из командной строки
● Ничем не отличается от OCUnit, но не
  забываем снять галочку с "Run script only
  when installing"
GHUnit - Плюшки
●   Асинхронные тест кейсы
●   Ассерты с картинками вьюшек
●   Выбор отдельных тестов
●   Мокирование NSUrlConnection
GHUnit - Подлючение
● Проходим по шагам инструкцию
  http://gabriel.github.com/gh-
  unit/docs/appledoc_include/guide_install_ios_4.html
● Нужен отдельный таргет
● Тесты запускаются в отдельном
  приложении
GHUnit - Пишем тесты
● Наследуемся от GHTestCase
● -(void)testMyTestNameGoesHere { }
● Assertations практически теже самые,
  только префикс GH(GHAssertTrue...).
GHUnit - Запуск
● Запуск на девайсе и в симуляторе(после
  некоторых махинаций)
● Тесты запускаются внутри отдельного ios
  приложения
● Можно выбирать какие тесты запускать
● Приложение может упасть, если будет
  unexpected exception
GHUnit - Отчеты об ошибках
● Стек трейсы, номера строк, текстовое
  описание ошибки
● Отчеты об ошибках могут быть
  представлены в junit формате
  ○ WRITE_JUNIT_XML=YES
GHUnit - Отладка
● Добавляем брейкпойнт
● Собираем и запускаем тестовое
  приложение
GHUnit - Ide Integration
● Отсутствует
GHUnit - Command Line
● Проходим инструкцию                             http://gabriel.github.
  com/gh-unit/docs/appledoc_include/guide_command_line.html
● Для тех кому лень:
  ○ xcodebuild -target Tests -configuration Debug -sdk
    iphonesimulator5.0 clean build GHUNIT_CLI=1
    WRITE_JUNIT_XML=1
Best Practices
● Отдельный таргет на юнит тесты;
● Отдельный таргет на интеграционные
  тесты;
● Отдельный на медленные;
● Отдельный на performance...
Final Recommendations
● Unit Tests XCode 4 - OCUnit
● Unit Tests XCode 3 - GTM
● GHUnit - для интеграционных тестов
Контакты
● Виталий Ружников
  ○ varuzhnikov@gmail.com
  ○ Twitter: @ruzhnikov
  ○ Skype: viruzh


● Антон Катков
  ○ katkov.anton@gmail.com
  ○ Twitter: @Vanger_cat
  ○ Skype: anton.katkov

Contenu connexe

Tendances

iPhone Unit Testing (Google tool Box)
iPhone Unit Testing (Google tool Box)iPhone Unit Testing (Google tool Box)
iPhone Unit Testing (Google tool Box)Yandex
 
Автоматизация UI-тестирования следующего поколения
Автоматизация UI-тестирования следующего поколенияАвтоматизация UI-тестирования следующего поколения
Автоматизация UI-тестирования следующего поколенияDevDay
 
Белым по черному или альтернативное использование unit-тестирования
Белым по черному или альтернативное использование unit-тестированияБелым по черному или альтернативное использование unit-тестирования
Белым по черному или альтернативное использование unit-тестированияSQALab
 
ClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDDClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDDClub QA Kostroma
 
Тестируем код с Visual Studio 2012 - XP Days Ukraine 2012
Тестируем код с Visual Studio 2012 - XP Days Ukraine 2012Тестируем код с Visual Studio 2012 - XP Days Ukraine 2012
Тестируем код с Visual Studio 2012 - XP Days Ukraine 2012Dmytro Mindra
 
Mambility. Cтрах и ненависть к фрагментам
Mambility. Cтрах и ненависть к фрагментамMambility. Cтрах и ненависть к фрагментам
Mambility. Cтрах и ненависть к фрагментамOlga Golovach
 
автоматизация тестирования огурцом
автоматизация тестирования огурцомавтоматизация тестирования огурцом
автоматизация тестирования огурцомVadim Glebov
 
отладка Mpi приложений
отладка Mpi приложенийотладка Mpi приложений
отладка Mpi приложенийMichael Karpov
 
юнит тестирование Fork
юнит тестирование Forkюнит тестирование Fork
юнит тестирование ForkSergey Oreshkov
 
Plugin development for intelli j platform
Plugin development for intelli j platformPlugin development for intelli j platform
Plugin development for intelli j platformchashnikov
 
Organization of Automated Testing
Organization of Automated TestingOrganization of Automated Testing
Organization of Automated TestingKlika Tech, Inc
 
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...Mail.ru Group
 
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOSРоман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOSProvectus
 
Team system - фреймворк для автоматизации тестирования от Microsoft
Team system -  фреймворк для автоматизации тестирования от MicrosoftTeam system -  фреймворк для автоматизации тестирования от Microsoft
Team system - фреймворк для автоматизации тестирования от MicrosoftQA Dnepropetrovsk Community (Ukraine)
 
Как перестать бояться и начать автоматизировать
Как перестать бояться и начать автоматизироватьКак перестать бояться и начать автоматизировать
Как перестать бояться и начать автоматизироватьSQALab
 
Алексей Петров, Mail.Ru Group, "Организация конвейера автоматизации тестирова...
Алексей Петров, Mail.Ru Group, "Организация конвейера автоматизации тестирова...Алексей Петров, Mail.Ru Group, "Организация конвейера автоматизации тестирова...
Алексей Петров, Mail.Ru Group, "Организация конвейера автоматизации тестирова...Mail.ru Group
 
Использование Mock-объектов в TDD на платформе .NET
Использование Mock-объектов в TDD на платформе .NETИспользование Mock-объектов в TDD на платформе .NET
Использование Mock-объектов в TDD на платформе .NETPavel Treshnikov
 
Автоматизируем GUI тесты на питоне
Автоматизируем GUI тесты на питонеАвтоматизируем GUI тесты на питоне
Автоматизируем GUI тесты на питонеSQALab
 

Tendances (19)

iPhone Unit Testing (Google tool Box)
iPhone Unit Testing (Google tool Box)iPhone Unit Testing (Google tool Box)
iPhone Unit Testing (Google tool Box)
 
Автоматизация UI-тестирования следующего поколения
Автоматизация UI-тестирования следующего поколенияАвтоматизация UI-тестирования следующего поколения
Автоматизация UI-тестирования следующего поколения
 
Белым по черному или альтернативное использование unit-тестирования
Белым по черному или альтернативное использование unit-тестированияБелым по черному или альтернативное использование unit-тестирования
Белым по черному или альтернативное использование unit-тестирования
 
ClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDDClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDD
 
Тестируем код с Visual Studio 2012 - XP Days Ukraine 2012
Тестируем код с Visual Studio 2012 - XP Days Ukraine 2012Тестируем код с Visual Studio 2012 - XP Days Ukraine 2012
Тестируем код с Visual Studio 2012 - XP Days Ukraine 2012
 
Mambility. Cтрах и ненависть к фрагментам
Mambility. Cтрах и ненависть к фрагментамMambility. Cтрах и ненависть к фрагментам
Mambility. Cтрах и ненависть к фрагментам
 
автоматизация тестирования огурцом
автоматизация тестирования огурцомавтоматизация тестирования огурцом
автоматизация тестирования огурцом
 
отладка Mpi приложений
отладка Mpi приложенийотладка Mpi приложений
отладка Mpi приложений
 
юнит тестирование Fork
юнит тестирование Forkюнит тестирование Fork
юнит тестирование Fork
 
Plugin development for intelli j platform
Plugin development for intelli j platformPlugin development for intelli j platform
Plugin development for intelli j platform
 
Organization of Automated Testing
Organization of Automated TestingOrganization of Automated Testing
Organization of Automated Testing
 
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
 
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOSРоман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
 
Team system - фреймворк для автоматизации тестирования от Microsoft
Team system -  фреймворк для автоматизации тестирования от MicrosoftTeam system -  фреймворк для автоматизации тестирования от Microsoft
Team system - фреймворк для автоматизации тестирования от Microsoft
 
Как перестать бояться и начать автоматизировать
Как перестать бояться и начать автоматизироватьКак перестать бояться и начать автоматизировать
Как перестать бояться и начать автоматизировать
 
Алексей Петров, Mail.Ru Group, "Организация конвейера автоматизации тестирова...
Алексей Петров, Mail.Ru Group, "Организация конвейера автоматизации тестирова...Алексей Петров, Mail.Ru Group, "Организация конвейера автоматизации тестирова...
Алексей Петров, Mail.Ru Group, "Организация конвейера автоматизации тестирова...
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Использование Mock-объектов в TDD на платформе .NET
Использование Mock-объектов в TDD на платформе .NETИспользование Mock-объектов в TDD на платформе .NET
Использование Mock-объектов в TDD на платформе .NET
 
Автоматизируем GUI тесты на питоне
Автоматизируем GUI тесты на питонеАвтоматизируем GUI тесты на питоне
Автоматизируем GUI тесты на питоне
 

Similaire à XP.Party (iOS) - unit tests frameworks overview

C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.Igor Shkulipa
 
Автоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийАвтоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийAndrei Pugachev
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
C&C for coffee'n'code
C&C for coffee'n'codeC&C for coffee'n'code
C&C for coffee'n'codeIvan Mosiev
 
Mva stf module 6 - rus
Mva stf module 6 - rusMva stf module 6 - rus
Mva stf module 6 - rusMaxim Shaptala
 
Unit tests & tdd in web development
Unit tests & tdd in web developmentUnit tests & tdd in web development
Unit tests & tdd in web developmentAndrey Kucherenko
 
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...corehard_by
 
Андрей Зайцев - TDD в кровавом энтерпрайзе
Андрей Зайцев - TDD в кровавом энтерпрайзеАндрей Зайцев - TDD в кровавом энтерпрайзе
Андрей Зайцев - TDD в кровавом энтерпрайзеElias Fofanov
 
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...corehard_by
 
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...Sergey Ponomarev
 
Mva stf module 5 - rus
Mva stf module 5 - rusMva stf module 5 - rus
Mva stf module 5 - rusMaxim Shaptala
 
2012 03 14_parallel_programming_lecture05
2012 03 14_parallel_programming_lecture052012 03 14_parallel_programming_lecture05
2012 03 14_parallel_programming_lecture05Computer Science Club
 
Introduction into Test Driven Development
Introduction into Test Driven DevelopmentIntroduction into Test Driven Development
Introduction into Test Driven DevelopmentIvan Dyachenko
 
Continious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileContinious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileKairat Yussupov
 
Инструменты профайлинга С++ кода
Инструменты профайлинга С++ кодаИнструменты профайлинга С++ кода
Инструменты профайлинга С++ кодаcorehard_by
 
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23MoscowJS
 
Continuous Deployment (in Russian)
Continuous Deployment  (in Russian)Continuous Deployment  (in Russian)
Continuous Deployment (in Russian)Smartling
 

Similaire à XP.Party (iOS) - unit tests frameworks overview (20)

C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.
 
Автоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийАвтоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложений
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
C&C for coffee'n'code
C&C for coffee'n'codeC&C for coffee'n'code
C&C for coffee'n'code
 
Mva stf module 6 - rus
Mva stf module 6 - rusMva stf module 6 - rus
Mva stf module 6 - rus
 
Automation testing desktop applications
Automation testing desktop applicationsAutomation testing desktop applications
Automation testing desktop applications
 
Unit tests & tdd in web development
Unit tests & tdd in web developmentUnit tests & tdd in web development
Unit tests & tdd in web development
 
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...
 
Dev collaboration
Dev collaborationDev collaboration
Dev collaboration
 
Андрей Зайцев - TDD в кровавом энтерпрайзе
Андрей Зайцев - TDD в кровавом энтерпрайзеАндрей Зайцев - TDD в кровавом энтерпрайзе
Андрей Зайцев - TDD в кровавом энтерпрайзе
 
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
 
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
 
Unit тесты java
Unit тесты javaUnit тесты java
Unit тесты java
 
Mva stf module 5 - rus
Mva stf module 5 - rusMva stf module 5 - rus
Mva stf module 5 - rus
 
2012 03 14_parallel_programming_lecture05
2012 03 14_parallel_programming_lecture052012 03 14_parallel_programming_lecture05
2012 03 14_parallel_programming_lecture05
 
Introduction into Test Driven Development
Introduction into Test Driven DevelopmentIntroduction into Test Driven Development
Introduction into Test Driven Development
 
Continious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileContinious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-Agile
 
Инструменты профайлинга С++ кода
Инструменты профайлинга С++ кодаИнструменты профайлинга С++ кода
Инструменты профайлинга С++ кода
 
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
 
Continuous Deployment (in Russian)
Continuous Deployment  (in Russian)Continuous Deployment  (in Russian)
Continuous Deployment (in Russian)
 

Plus de Anton Katkov

AgileDays'14 - современная разработка под iOS
AgileDays'14 - современная разработка под iOSAgileDays'14 - современная разработка под iOS
AgileDays'14 - современная разработка под iOSAnton Katkov
 
AgileDays'14 - Lean Startup, Metrics Driven Development и финансы - смешать, ...
AgileDays'14 - Lean Startup, Metrics Driven Development и финансы - смешать, ...AgileDays'14 - Lean Startup, Metrics Driven Development и финансы - смешать, ...
AgileDays'14 - Lean Startup, Metrics Driven Development и финансы - смешать, ...Anton Katkov
 
AgileCamp'12 Нижний Новгород: Введение
AgileCamp'12 Нижний Новгород: Введение AgileCamp'12 Нижний Новгород: Введение
AgileCamp'12 Нижний Новгород: Введение Anton Katkov
 
AgileCamp'12 Нижний Новгород: Заключение
AgileCamp'12 Нижний Новгород: ЗаключениеAgileCamp'12 Нижний Новгород: Заключение
AgileCamp'12 Нижний Новгород: ЗаключениеAnton Katkov
 
XP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architectureXP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architectureAnton Katkov
 
AgileDays'12 - Continuous deployment
AgileDays'12 - Continuous deploymentAgileDays'12 - Continuous deployment
AgileDays'12 - Continuous deploymentAnton Katkov
 
AgileCamp’11 Новосибирск - Test Driven Development (TDD)
AgileCamp’11 Новосибирск - Test Driven Development (TDD)AgileCamp’11 Новосибирск - Test Driven Development (TDD)
AgileCamp’11 Новосибирск - Test Driven Development (TDD)Anton Katkov
 
AgileCamp’11 Новосибирск - Continuous Integration (CI)
AgileCamp’11 Новосибирск - Continuous Integration (CI)AgileCamp’11 Новосибирск - Continuous Integration (CI)
AgileCamp’11 Новосибирск - Continuous Integration (CI)Anton Katkov
 
AgileCamp'11 Новосибирск - Unit Tests
AgileCamp'11 Новосибирск - Unit TestsAgileCamp'11 Новосибирск - Unit Tests
AgileCamp'11 Новосибирск - Unit TestsAnton Katkov
 
AgileCamp'11 Новосибирск - введение в инженерные практики
AgileCamp'11 Новосибирск - введение в инженерные практикиAgileCamp'11 Новосибирск - введение в инженерные практики
AgileCamp'11 Новосибирск - введение в инженерные практикиAnton Katkov
 

Plus de Anton Katkov (10)

AgileDays'14 - современная разработка под iOS
AgileDays'14 - современная разработка под iOSAgileDays'14 - современная разработка под iOS
AgileDays'14 - современная разработка под iOS
 
AgileDays'14 - Lean Startup, Metrics Driven Development и финансы - смешать, ...
AgileDays'14 - Lean Startup, Metrics Driven Development и финансы - смешать, ...AgileDays'14 - Lean Startup, Metrics Driven Development и финансы - смешать, ...
AgileDays'14 - Lean Startup, Metrics Driven Development и финансы - смешать, ...
 
AgileCamp'12 Нижний Новгород: Введение
AgileCamp'12 Нижний Новгород: Введение AgileCamp'12 Нижний Новгород: Введение
AgileCamp'12 Нижний Новгород: Введение
 
AgileCamp'12 Нижний Новгород: Заключение
AgileCamp'12 Нижний Новгород: ЗаключениеAgileCamp'12 Нижний Новгород: Заключение
AgileCamp'12 Нижний Новгород: Заключение
 
XP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architectureXP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architecture
 
AgileDays'12 - Continuous deployment
AgileDays'12 - Continuous deploymentAgileDays'12 - Continuous deployment
AgileDays'12 - Continuous deployment
 
AgileCamp’11 Новосибирск - Test Driven Development (TDD)
AgileCamp’11 Новосибирск - Test Driven Development (TDD)AgileCamp’11 Новосибирск - Test Driven Development (TDD)
AgileCamp’11 Новосибирск - Test Driven Development (TDD)
 
AgileCamp’11 Новосибирск - Continuous Integration (CI)
AgileCamp’11 Новосибирск - Continuous Integration (CI)AgileCamp’11 Новосибирск - Continuous Integration (CI)
AgileCamp’11 Новосибирск - Continuous Integration (CI)
 
AgileCamp'11 Новосибирск - Unit Tests
AgileCamp'11 Новосибирск - Unit TestsAgileCamp'11 Новосибирск - Unit Tests
AgileCamp'11 Новосибирск - Unit Tests
 
AgileCamp'11 Новосибирск - введение в инженерные практики
AgileCamp'11 Новосибирск - введение в инженерные практикиAgileCamp'11 Новосибирск - введение в инженерные практики
AgileCamp'11 Новосибирск - введение в инженерные практики
 

XP.Party (iOS) - unit tests frameworks overview

  • 1. Test Frameworks overview Инженерные практики в iOS: Unit Tests
  • 2. О нас ● Виталий Ружников ○ iOS-фрилансер ○ Руководитель разработки мобильных проектов ● Антон Катков ○ Тренер по инженерным практикам ○ Директор, руководитель проектов, iOS- разработчик
  • 3. Roadmap ● Unit Tests ● OCUnit ● Google Toolbox for Mac (GTM) ● GHUnit ● Рекоммендации
  • 4. Unit Test ● Проверка компонента, что он ведет себя так, как ожидает этого программист; ● Компонентом может быть функция или класс.
  • 5. Unit Test ● Не обращается к базе данных ● Не лезет в сеть ● Не обращается к файловой системе ● Для их выполнения приходится специально настраивать среду, например, править конфигурационные файлы. ● Выполняются быстро(очень очень быстро, тест, выполняющийся 1/10 сек, медленный тест)
  • 7. Критерии ● Легкость подключения, написания и запуска тестов; ● Сообщения об ошибках в тестах; ● Возможность отладки; ● Интеграция с IDE(XCode 4.x, XCode 3.x, AppCode); ● Запуск тестов из коммандой строки(для регулярного прогона на сервере непрерывной интеграции);
  • 8. OCUnit - Подключение ● Из коробки (галочку поставить при создании проекта); ● Либо добавить unit test target к существующему проекту;
  • 9. OCUnit - Пишем тесты ● Наследуемся от SenTestCase ● -(void)testMyTestNameGoesHere{} ● STAssertEquals ● STAssertEqualsWithAccuracy ● STAssertEqualObjects ● STAssertThrows
  • 10. OCUnit - Запуск, товарищи! ● Logic tests запускаются только на симуляторе ○ XCode 4 - Схема 'Test' для запуска ○ XCode 3 - выбрать таргет тестов ○ Можно редактировать какие тесты запускать, отредактировав схему ● Application tests - и на девайсе и на симуляторе ○ Использовать 'Run' scheme для запуска ○ Прогоняются все тесты
  • 12. OCUnit - Сообщение об ошибках ● Номера строчек в коде и сообщения об ошибке ● Есть возможность генерации JUnit- подобных отчетов: ○ https://github. com/hborders/BPOCUnitXMLReporter
  • 13. OCUnit - Отладка ● XCode 4 - Добавляем брейкпойнт и вперед ● XCode 3 - Излазить гугл и пройти нетривиальную инструкцию
  • 14. OCUnit - Поддержка в IDE ● Свалившиеся тесты представлены в issue навигаторе. ● Application Tests - только сообщения в консоли.
  • 15. OCUnit - Запуск из командной строки ● Используем команду xcodebuild ○ xcodebuild -target UnitTests -configuration Debug -sdk iphonesimulator5.0 clean build
  • 16. GTM Подключение ● Проходим инструкцию http://code.google. com/p/google-toolbox-for-mac/wiki/iPhoneUnitTesting ● Тесты по существу запускаются из коммандной строки ● Нет искусственного разграничения на logic и application тесты
  • 17. GTM - Пишем тесты ● Наследуемся от GTMTestCase ● -(void)testMyTestNameGoesHere {} ● Assertations совместимы с теми, что в OCUnit! ● STAssertEqualStrings
  • 18. GTM - Запуск ● И на девайсе и на симуляторе ● Нельзя выборочный запуск тестов делать
  • 19. GTM - Сообщения об ошибках ● Практически такое же как в OCUnit; ● Нет информации о возможности генерации JUnit подобных отчетов;
  • 20. GTM - Debugging ● Включаем галочку 'Run script only when installing' ○ Если не включить, то запуск тестов будет проводиться на этапе компиляции ● Ставим брейкпойнт и запускаем тестовый таргет
  • 21. GTM - XCode Integration ● На этапе компиляции ошибки видны в issue навигаторе и редакторе кода ● При пригоне после установки на симуляторе ищем сообщения об ошибках в консоли
  • 22. GTM - Запуск из командной строки ● Ничем не отличается от OCUnit, но не забываем снять галочку с "Run script only when installing"
  • 23. GHUnit - Плюшки ● Асинхронные тест кейсы ● Ассерты с картинками вьюшек ● Выбор отдельных тестов ● Мокирование NSUrlConnection
  • 24. GHUnit - Подлючение ● Проходим по шагам инструкцию http://gabriel.github.com/gh- unit/docs/appledoc_include/guide_install_ios_4.html ● Нужен отдельный таргет ● Тесты запускаются в отдельном приложении
  • 25. GHUnit - Пишем тесты ● Наследуемся от GHTestCase ● -(void)testMyTestNameGoesHere { } ● Assertations практически теже самые, только префикс GH(GHAssertTrue...).
  • 26. GHUnit - Запуск ● Запуск на девайсе и в симуляторе(после некоторых махинаций) ● Тесты запускаются внутри отдельного ios приложения ● Можно выбирать какие тесты запускать ● Приложение может упасть, если будет unexpected exception
  • 27. GHUnit - Отчеты об ошибках ● Стек трейсы, номера строк, текстовое описание ошибки ● Отчеты об ошибках могут быть представлены в junit формате ○ WRITE_JUNIT_XML=YES
  • 28. GHUnit - Отладка ● Добавляем брейкпойнт ● Собираем и запускаем тестовое приложение
  • 29. GHUnit - Ide Integration ● Отсутствует
  • 30. GHUnit - Command Line ● Проходим инструкцию http://gabriel.github. com/gh-unit/docs/appledoc_include/guide_command_line.html ● Для тех кому лень: ○ xcodebuild -target Tests -configuration Debug -sdk iphonesimulator5.0 clean build GHUNIT_CLI=1 WRITE_JUNIT_XML=1
  • 31. Best Practices ● Отдельный таргет на юнит тесты; ● Отдельный таргет на интеграционные тесты; ● Отдельный на медленные; ● Отдельный на performance...
  • 32. Final Recommendations ● Unit Tests XCode 4 - OCUnit ● Unit Tests XCode 3 - GTM ● GHUnit - для интеграционных тестов
  • 33. Контакты ● Виталий Ружников ○ varuzhnikov@gmail.com ○ Twitter: @ruzhnikov ○ Skype: viruzh ● Антон Катков ○ katkov.anton@gmail.com ○ Twitter: @Vanger_cat ○ Skype: anton.katkov