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

13
@trofmary #sqadays18 1 Keep it calm and functional. Автотесты для iOS приложений Мария Трофимова

Upload: sqalab

Post on 08-Feb-2017

691 views

Category:

Education


2 download

TRANSCRIPT

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

@trofmary #sqadays18 1

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

Мария Трофимова

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

2

На повестке дня

• iOS UI Testing– Добавлено в Xcode 7 для iOS 9+

• Фреймворк KIF– Первый релиз в сентябре 2013– Текущая версия в сентябре 2015– > 3 500 ★ на GitHab

@trofmary #sqadays18

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

3

iOS UI Testing

Достоинства:• Интеграция в среду разработки и поддержка Apple• Killer feature – record & play

Недостатки:• Нет официальной справки• Нет доступа к runtime-объектам приложения• Доступна только для iOS 9+• Требует отдельного типа target

@trofmary #sqadays18

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

4

iOS UI Testing. Record & play

@trofmary #sqadays18

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

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 приложений

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 приложений

7

KIF

Достоинства:• Все возможности обычных unit-тестов• Обращение к элементам как через runtime, так и через accessibility labels

Недостатки:• Сторонняя библиотека• Отсутствие record & play

@trofmary #sqadays18

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

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 приложений

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 приложений

KIF. Проблемы с TableView

@trofmary #sqadays18

Некоторые ячейки могут еще не подгрузиться

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

11

Заключение

● Автотестам для iOS приложений — ДА!● Выбор используемой технологии обусловлен

проектом и зрелостью конкретной библиотеки● В любой непонятной ситуации дружи с

разработчиком☺

@trofmary #sqadays18

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

13

Вопросы

Email: [email protected]

Skype: mary_dandelion28

Twitter: trofmary

surfstudio.ru

@trofmary #sqadays18