SlideShare a Scribd company logo
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

More Related Content

PDF
Автоматизированное тестирование
PDF
Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
PDF
Markelov-AUG-Jira
PDF
2012-01-05 02 Юлия Миттова. Автоматизированное тестирование под Android
PDF
Денис Кандров, Пушкова Евгения, QSpec: тестирование графических приложений на Qt
PDF
Навигация в Android без боли и слез
PDF
Грабли автоматизации. Учимся на чужих ошибках
ODP
афанасьев(основные отличия W8.1 от w7
Автоматизированное тестирование
Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
Markelov-AUG-Jira
2012-01-05 02 Юлия Миттова. Автоматизированное тестирование под Android
Денис Кандров, Пушкова Евгения, QSpec: тестирование графических приложений на Qt
Навигация в Android без боли и слез
Грабли автоматизации. Учимся на чужих ошибках
афанасьев(основные отличия W8.1 от w7

What's hot (19)

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

Similar to XP.Party (iOS) - unit tests frameworks overview (20)

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

More from Anton Katkov (10)

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