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