Свободу тестировщикам десктопа: внедряем автотесты! Александр Зиновьев, B2B Soft
О себе • QA Tech Lead @ B2B Soft • Automation Inspirer @ B2B Soft • ISTQB® Certified Tester, Foundation Level • 7+ лет опыта в тестировании • 3+ лет опыта в тест менеджменте • 1+ лет опыта в автоматизации Контакты: e-mail: shurik.zinovyev@gmail.com skype: alexandr.zinoviev Blog: azinoviev.com 2
План • Проблема • Особенности тестирования Desktop приложений • Выбор framework • Как мы пишем тесты • Сложности • Как их решать • Наш результат 3
Проблема 4
Наше приложение •Клиент •Сервер •База данных 5
Рост скорости процесса разработки •SP – раз в 1-2 месяца •Client – раз в квартал 6
Частые релизы •Service Pack: ~ 160 человеко-часов •Новой версии клиента: ~ 320 человеко-часов 7
Команда 4 Manual QA 8
Особенности тестирования Desktop • Инсталляция: • Обновление • Новая установка • Работа с внешними устройствами • Кроссплатформенное тестирование • Довольно низкая скорость работы 9
Особенности нашего приложения • Приложение на рынке уже 15 лет • За это время сменилась не одна команда • Каждая команда привносила в разработку что-то свое • Отсутствие code convention • Приложение довольно хрупкое • Не зависимо от изменений регрессия проходит через все приложение 10
В среднем неделя в месяц у нас регрессия 11
Много релизов – много регрессии – пора автоматизировать! 12
Начинаем выбор framework 13
Из чего мы выбирали • Ranorex • Coded UI • Python + Selenium + Winium • Python + Pywinauto 14
Ranorex: плюсы • Готовая платформа • Есть возможность записивоспроизведения тестовых сценариев 15
Ranorex: минусы • Стоимость • C# • Тяжело поддерживать 16
Coded UI: плюсы • Готовая платформа • Есть возможность записивоспроизведения тестовых сценариев 17
Coded UI: минусы • C# • Тяжело поддерживать 18
Python + Selenium + Winium: плюсы • Python – легкий порог входа • Большое количество библиотек для Python • Автоматизация на Python популярнее чем на С# • Selenium • Полный контроль написания тестов • Паттерн Page Object 19
Python + Selenium + Winium: минусы • Не стабильный драйвер Winium • Не все возможности поиска элементов поддерживаются – Winium не поддерживает все возможности Selenium 20
Python + Pywinauto: плюсы • Python – легкий порог входа • Большое количество библиотек для Python • Автоматизация на Python довольно популярна • Pywinauto – библиотека для работы с Desktop • Полный контроль написания тестов • Паттерн Page Object 21
Python + Pywinauto: минусы • Не ко всем элементам можно достучаться – но это скорее сложности имплементации древнего приложения • Очень мало информации о Pywinauto на просторах интернета 22
Это наш вариант 23
Как мы пишем • Gherkin • Page Object pattern • Код хранится в GIT • Отдельная база для автотестов • Запуск через Jenkins каждую ночь 24
Gherkin Тесты пишутся в стиле Behavior Driven Development: When I…. And I…. Then I…. Examples – содержит набор тестов Каждый степ можно использовать неоднократно в разных тестах 25
Вспомогательные приложения 26
Visual UI Automation Verify 27
SWAPY 28
Репортинг • После запуска автотестов – приходит нотификация на почту • Если Failed: • Скриншот аттачится в репорт • Текст ошибки 29
30
31
Сложности • Общая проблема UI-тестов – это скорость • ~90 тестов идут 2,5 часа • Частые падения тестов по различным причинам: • Элемент не найден если предыдущий тест где-то упал • Приложение загружалось дольше чем планировалось – Desktop • Сетевые лаги • В интернете почти нет инфы по автоматизации Desktop 32
Как их решать • Параллелизация тестов: • Виртуальные машины • Docker/Vagrant • Больше проверок • На закрытие приложения • На открытие скринов 33
Параллелизация – вроде просто? 34
Docker? 35
Vagrant! Выход 36
Так показалось… 37
Но, мы нашли для себя выход... 38
Отдельные сборки • Отдельный PC для автотестов • Отдельные юзеры в системе • Под ними отдельные агенты Jenkins • Отдельный билд-план в Jenkins • Тесты разделены независимо • И запуск идет паралельно 39
Отдельные сборки 40
Что мы получили? • На данном этапе покрытие 15% • Количество тестов ~90 • Smoke Test длится 40-45 минут • Regression Test длится 1 час 20 минут 41
42

Free Desktop QA Engineers: implement automation testing

  • 1.
    Свободу тестировщикам десктопа: внедряемавтотесты! Александр Зиновьев, B2B Soft
  • 2.
    О себе • QATech Lead @ B2B Soft • Automation Inspirer @ B2B Soft • ISTQB® Certified Tester, Foundation Level • 7+ лет опыта в тестировании • 3+ лет опыта в тест менеджменте • 1+ лет опыта в автоматизации Контакты: e-mail: shurik.zinovyev@gmail.com skype: alexandr.zinoviev Blog: azinoviev.com 2
  • 3.
    План • Проблема • Особенноститестирования Desktop приложений • Выбор framework • Как мы пишем тесты • Сложности • Как их решать • Наш результат 3
  • 4.
  • 5.
  • 6.
    Рост скорости процессаразработки •SP – раз в 1-2 месяца •Client – раз в квартал 6
  • 7.
    Частые релизы •Service Pack:~ 160 человеко-часов •Новой версии клиента: ~ 320 человеко-часов 7
  • 8.
  • 9.
    Особенности тестирования Desktop •Инсталляция: • Обновление • Новая установка • Работа с внешними устройствами • Кроссплатформенное тестирование • Довольно низкая скорость работы 9
  • 10.
    Особенности нашего приложения •Приложение на рынке уже 15 лет • За это время сменилась не одна команда • Каждая команда привносила в разработку что-то свое • Отсутствие code convention • Приложение довольно хрупкое • Не зависимо от изменений регрессия проходит через все приложение 10
  • 11.
    В среднем неделяв месяц у нас регрессия 11
  • 12.
    Много релизов –много регрессии – пора автоматизировать! 12
  • 13.
  • 14.
    Из чего мывыбирали • Ranorex • Coded UI • Python + Selenium + Winium • Python + Pywinauto 14
  • 15.
    Ranorex: плюсы • Готоваяплатформа • Есть возможность записивоспроизведения тестовых сценариев 15
  • 16.
    Ranorex: минусы • Стоимость •C# • Тяжело поддерживать 16
  • 17.
    Coded UI: плюсы •Готовая платформа • Есть возможность записивоспроизведения тестовых сценариев 17
  • 18.
    Coded UI: минусы •C# • Тяжело поддерживать 18
  • 19.
    Python + Selenium+ Winium: плюсы • Python – легкий порог входа • Большое количество библиотек для Python • Автоматизация на Python популярнее чем на С# • Selenium • Полный контроль написания тестов • Паттерн Page Object 19
  • 20.
    Python + Selenium+ Winium: минусы • Не стабильный драйвер Winium • Не все возможности поиска элементов поддерживаются – Winium не поддерживает все возможности Selenium 20
  • 21.
    Python + Pywinauto:плюсы • Python – легкий порог входа • Большое количество библиотек для Python • Автоматизация на Python довольно популярна • Pywinauto – библиотека для работы с Desktop • Полный контроль написания тестов • Паттерн Page Object 21
  • 22.
    Python + Pywinauto:минусы • Не ко всем элементам можно достучаться – но это скорее сложности имплементации древнего приложения • Очень мало информации о Pywinauto на просторах интернета 22
  • 23.
  • 24.
    Как мы пишем •Gherkin • Page Object pattern • Код хранится в GIT • Отдельная база для автотестов • Запуск через Jenkins каждую ночь 24
  • 25.
    Gherkin Тесты пишутся встиле Behavior Driven Development: When I…. And I…. Then I…. Examples – содержит набор тестов Каждый степ можно использовать неоднократно в разных тестах 25
  • 26.
  • 27.
  • 28.
  • 29.
    Репортинг • После запускаавтотестов – приходит нотификация на почту • Если Failed: • Скриншот аттачится в репорт • Текст ошибки 29
  • 30.
  • 31.
  • 32.
    Сложности • Общая проблемаUI-тестов – это скорость • ~90 тестов идут 2,5 часа • Частые падения тестов по различным причинам: • Элемент не найден если предыдущий тест где-то упал • Приложение загружалось дольше чем планировалось – Desktop • Сетевые лаги • В интернете почти нет инфы по автоматизации Desktop 32
  • 33.
    Как их решать •Параллелизация тестов: • Виртуальные машины • Docker/Vagrant • Больше проверок • На закрытие приложения • На открытие скринов 33
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
    Но, мы нашлидля себя выход... 38
  • 39.
    Отдельные сборки • ОтдельныйPC для автотестов • Отдельные юзеры в системе • Под ними отдельные агенты Jenkins • Отдельный билд-план в Jenkins • Тесты разделены независимо • И запуск идет паралельно 39
  • 40.
  • 41.
    Что мы получили? •На данном этапе покрытие 15% • Количество тестов ~90 • Smoke Test длится 40-45 минут • Regression Test длится 1 час 20 минут 41
  • 42.

Editor's Notes

  • #10 Работа с внешними устройствами, принтеры, Пин-пады (для обработки карточных платежей)
  • #13 Когда команда начала загрузать в мануальном тестировании при каждом релизе – появилась идея а не попробовать ли нам автоматизацию
  • #16 Тяжело поддерживать – имеется ввиду что при записи тестового сценария в автоматическом режиме гораздо сложнее в нем разобраться чем при ручном написании
  • #17 Тяжело поддерживать – имеется ввиду что при записи тестового сценария в автоматическом режиме гораздо сложнее в нем разобраться чем при ручном написании
  • #18 Тяжело поддерживать – имеется ввиду что при записи тестового сценария в автоматическом режиме гораздо сложнее в нем разобраться чем при ручном написании
  • #19 Тяжело поддерживать – имеется ввиду что при записи тестового сценария в автоматическом режиме гораздо сложнее в нем разобраться чем при ручном написании
  • #20 Python + Selenium В дальнейшем в компании планируется переход на веб платформу – связка Python + Selenium позволит более просто перейти на веб
  • #21 Python + Selenium В дальнейшем в компании планируется переход на веб платформу – связка Python + Selenium позволит более просто перейти на веб
  • #22 Pywinauto живая библиотека – она open source, последний коммит в средине июля 2017 года, сейчас вресия 0.6.1
  • #23 Pywinauto живая библиотека – она open source, последний коммит в средине июля 2017 года, сейчас вресия 0.6.1
  • #25 Что говорим: Gherkin – framework для написания тестов, BDD подход Page object pattern – не смотря на то что это десктопное приложение – мы все равно имеем возможность использовать Page Object Patterm – каждый модуль описываем в отдельном python file GIT у нас локально – разработка ведется в feature branch – после чего идет commit and push. Merge request создается на коллегу по цеху –> после code review проходит merge Отдельная база для автотестов – на нее по CI идет накатка новых изменений И запуск ---- Про конфиг приложения перед запуском тестов - подумать ------ Скриншоты – ближе к репортингу
  • #26 Вставить пример теста с Examples ??? Что на будущее? Как преподнести подумать
  • #27 Visual UI – стандартное приложение которое идет в коробке с Visual Studio – оно отлично подходит для отслеживания иерархии до нужного обьекта, дает возможность получить айдишки, имена и типы элементов SWAPY – рекомендуют использовать в связке с pyWinAuto, но это круто если ваше приложение, которое вы хотите автоматизаровать - калькулятор
  • #28 Visual UI – стандартное приложение которое идет в коробке с Visual Studio – оно отлично подходит для отслеживания иерархии до нужного обьекта, дает возможность получить айдишки, имена и типы элементов SWAPY – рекомендуют использовать в связке с pyWinAuto, но это круто если ваше приложение, которое вы хотите автоматизаровать - калькулятор
  • #29 Visual UI – стандартное приложение которое идет в коробке с Visual Studio – оно отлично подходит для отслеживания иерархии до нужного обьекта, дает возможность получить айдишки, имена и типы элементов SWAPY – рекомендуют использовать в связке с pyWinAuto, но это круто если ваше приложение, которое вы хотите автоматизаровать - калькулятор
  • #35 убрать
  • #36 Нет, он нам не подходит – он работает в бекенде – Добавить дельфина
  • #37 Тоже есть сложности – в процессе проработки…… Добавить лейбл вагрант
  • #38 Vagrant создает виртуальную машину, но опять жае таки как и в случае с докером – он работает не так как физическая виртуальная машина, а эти автотестам нужно видеть и нажимать на кнопки, двигать курсор
  • #39 Vagrant создает виртуальную машину, но опять жае таки как и в случае с докером – он работает не так как физическая виртуальная машина, а эти автотестам нужно видеть и нажимать на кнопки, двигать курсор убрать