Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Keep it calm and functional. Автотесты для iOS приложений

1,201 views

Published on

Доклад Марии Трофимовой на конференции SQA Days-18, 27-28 ноября 2015 г., Москва
www.sqadays.com

Published in: Education
  • Be the first to comment

Keep it calm and functional. Автотесты для iOS приложений

  1. 1. @trofmary #sqadays18 1 Keep it calm and functional. Автотесты для iOS приложений Мария Трофимова
  2. 2. 2 На повестке дня • iOS UI Testing – Добавлено в Xcode 7 для iOS 9+ • Фреймворк KIF – Первый релиз в сентябре 2013 – Текущая версия в сентябре 2015 – > 3 500 ★ на GitHab @trofmary #sqadays18
  3. 3. 3 iOS UI Testing Достоинства: • Интеграция в среду разработки и поддержка Apple • Killer feature – record & play Недостатки: • Нет официальной справки • Нет доступа к runtime-объектам приложения • Доступна только для iOS 9+ • Требует отдельного типа target @trofmary #sqadays18
  4. 4. 4 iOS UI Testing. Record & play @trofmary #sqadays18
  5. 5. 5 iOS UI Testing. Пример XCUIApplication *app = [[XCUIApplication alloc] init]; //ввод текста в UITextField XCUIElement *input1TextField = app.textFields[@"input1"]; [input1TextField tap]; [input1TextField typeText:@"sqadays18"]; //тап по UIButton [app.buttons[@"button"] tap]; //проверка содержимого UITextField XCTAssertEqualObjects(app.textFields[@"output"].value, @" sqadays18"); @trofmary #sqadays18
  6. 6. 6 iOS UI Testing. Атрибуты XCUIElement • identifier • frame • value • title • label • elementType • enabled • horizontalSizeClass, verticalSizeClass • placeholderValue • selected @trofmary #sqadays18
  7. 7. 7 KIF Достоинства: • Все возможности обычных unit-тестов • Обращение к элементам как через runtime, так и через accessibility labels Недостатки: • Сторонняя библиотека • Отсутствие record & play @trofmary #sqadays18
  8. 8. 8 KIF. Пример обращения через UIAccessibility • Обращение по accessibilityLabel [tester tapViewWithAccessibilityLabel:buttonName]; • Обращение к элементу CollectionView [tester tapItemAtIndexPath: [NSIndexPath indexPathForRow:11 inSection:0 inCollectionViewWithAccessibilityIdentifier:collectionViewName]; @trofmary #sqadays18
  9. 9. 9 KIF. Пример обращения через runtime-объекты SwipeView *swipeView = (SwipeView*)[tester waitForViewWithAccessibilityLabel:MAIN_SWIPE_VIEW]; ourSwipeView *ctr; if ([swipeView.nextResponderisKindOfClass:ourSwipeView.class]) ctr = (ourSwipeView *)swipeView.nextResponder; [ctr swipeView:swipeView didSelectItemAtIndex:1]; @trofmary #sqadays18
  10. 10. KIF. Проблемы с TableView @trofmary #sqadays18 Некоторые ячейки могут еще не подгрузиться
  11. 11. 11 Заключение ● Автотестам для iOS приложений — ДА! ● Выбор используемой технологии обусловлен проектом и зрелостью конкретной библиотеки ● В любой непонятной ситуации дружи с разработчиком☺ @trofmary #sqadays18
  12. 12. 12 Дополнительные материалы ● Статья канадского iOS разработчика Greg Heo по использованию KIF ● Обзор iOS UI Testing ● Неофициальный reference по XCTest @trofmary #sqadays18
  13. 13. 13 Вопросы Email: maria.ozhogina@surfstudio.ru Skype: mary_dandelion28 Twitter: trofmary surfstudio.ru @trofmary #sqadays18

×