2. ‣ Работаю в Альфа-Лаборатории
‣ Занимаюсь автоматизацией
тестирования мобильных
приложений
Обо мне
3.
4. Инструменты для автоматизации тестирования
Android iOS Cross-platform
Robotium UI Recorder Appium
Espresso Keep it Functional Calabash
5. Инструменты для автоматизации тестирования
Android iOS Cross-platform
Robotium UI Recorder Appium
Espresso Keep it Functional Calabash
6. Какие проблемы мы решали?
‣ Высокий порог входа для
функциональных тестировщиков
‣ Поддержка двух платформ: iOS,
Android внутри одного проекта
‣ Универсальность,
переиспользование компонент
внутри проекта
‣ Параллельный запуск UI - тестов
на CI
‣ Масштабирование на другие
мобильные проекты
8. Meta:
@regressCycle
@smokeCycle
Narrative:
TESTAM-819 Успешная оплата шаблона Мобильная связь
Lifecycle:
Before:
Given вернуться на "Главный экран"
Scenario: Успешная оплата шаблона Мобильная связь
Given приложение запущено
Then загружена страница "Главный экран"
When скролл внутри "Основной список" до "Платежи и переводы"
When выполнено нажатие на "Шаблоны"
Then загружена страница "Платежи и переводы"
…
Then загружена страница "Главный экран"
Examples:
|phoneNumber |amount|
|+7 916 666-66-66|10.00 |
Пример сценария, написанного с использованием JBehave
9. Элементы на странице
‣ resourceId / accessibilityidentifier (Android / iOS)
‣ text
‣ content-desc (Android)
‣ XPath
11. Как не завалить весь прогон из-за одного теста?
Scenario: Успешная оплата шаблона Мобильная связь
Given приложение запущено
Then загружена страница "Главный экран"
When скролл внутри "Основной список" до "Платежи и переводы"
When выполнено нажатие на "Шаблоны"
…
Then загружена страница "Главный экран"
12. Точка входа
Scenario: Успешная оплата шаблона Мобильная связь
Given приложение запущено
Then загружена страница "Главный экран"
When скролл внутри "Основной список" до "Платежи и переводы"
When выполнено нажатие на "Шаблоны"
…
Then загружена страница "Главный экран"
13. Шаг возврата на точку входа
Lifecycle:
Before:
Given вернуться на "Главный экран"
Scenario: Успешная оплата шаблона Мобильная связь
Given приложение запущено
17. ‣ Не нужно поддерживать
два проекта
‣ Не нужно иметь экспертизу сразу
в нескольких языках
программирования
‣ Используется один инструмент
для автоматизации
‣ Переиспользуем низкоуровневую
логику
‣ Переиспользуем тестовые
данные
Плюсы
18. ‣ Не все компоненты удается
переиспользовать
‣ Различное поведение iOS и Android
драйвера
‣ Релиз Appium может что-то сломать
для Anroid или iOS и наоборот
Минусы
19. Пример шага для двух платформ
@Step
@When("выполнено нажатие на "$button"")
public void buttonClick(@Named("$button") String button) {
getWebElementByName(button).click();
}
protected WebElement getWebElementByName(String elementName) {
IElement element = getCurrentPage().getElementByName(elementName);
return finder.findWebElement(element);
}
20. Пример шага только для Android
@Step
@When("выполнено нажатие на Назад")
public void systemBackClick() {
((AndroidDriver) driver).pressKeyCode(AndroidKeyCode.BACK);
}
39. Проблемы Appium
‣ Ждем обновлений Appium после выхода новых платформ
‣ XCUIElementType на версии iOS 9.3
‣ Собираем различные дефекты appium (1.6.1 долгий поиск элементов на iOS и т.д.)
‣ Проблемы в работе с web-view
‣ Проблема с доступами на iOS
‣ …
41. Что мы получили!
‣ Универсальную, масштабируемую библиотеку
‣ Два мобильных проекта уже запускают e2e ui-автотесты с использованием
нашего фреймфорка
‣ Функциональные тестировщики избавляются от части ручного тестирования
‣ Регрессионное тестирование на обратную совместимость с backend
прогоняется автоматизированно