keep it calm and functional. Автотесты для ios приложений
TRANSCRIPT
@trofmary #sqadays18 1
Keep it calm and functional.Автотесты для iOS приложений
Мария Трофимова
2
На повестке дня
• iOS UI Testing– Добавлено в Xcode 7 для iOS 9+
• Фреймворк KIF– Первый релиз в сентябре 2013– Текущая версия в сентябре 2015– > 3 500 ★ на GitHab
@trofmary #sqadays18
3
iOS UI Testing
Достоинства:• Интеграция в среду разработки и поддержка Apple• Killer feature – record & play
Недостатки:• Нет официальной справки• Нет доступа к runtime-объектам приложения• Доступна только для iOS 9+• Требует отдельного типа target
@trofmary #sqadays18
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
iOS UI Testing. Атрибуты XCUIElement
• identifier• frame• value• title• label• elementType
• enabled• horizontalSizeClass,
verticalSizeClass• placeholderValue• selected
@trofmary #sqadays18
7
KIF
Достоинства:• Все возможности обычных unit-тестов• Обращение к элементам как через runtime, так и через accessibility labels
Недостатки:• Сторонняя библиотека• Отсутствие record & play
@trofmary #sqadays18
8
KIF. Пример обращения через UIAccessibility• Обращение по accessibilityLabel[tester tapViewWithAccessibilityLabel:buttonName];
• Обращение к элементу CollectionView[tester tapItemAtIndexPath: [NSIndexPath indexPathForRow:11 inSection:0inCollectionViewWithAccessibilityIdentifier:collectionViewName];
@trofmary #sqadays18
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
KIF. Проблемы с TableView
@trofmary #sqadays18
Некоторые ячейки могут еще не подгрузиться
11
Заключение
● Автотестам для iOS приложений — ДА!● Выбор используемой технологии обусловлен
проектом и зрелостью конкретной библиотеки● В любой непонятной ситуации дружи с
разработчиком☺
@trofmary #sqadays18
12
Дополнительные материалы
● Статья канадского iOS разработчика Greg Heo по использованию KIF
● Обзор iOS UI Testing● Неофициальный reference по XCTest
@trofmary #sqadays18
13
Вопросы
Email: [email protected]
Skype: mary_dandelion28
Twitter: trofmary
surfstudio.ru
@trofmary #sqadays18