Развитие унаследованного
фреймворка тестирования
Илья Ляукин. Align Technology, Inc.
Обо мне
Илья Ляукин, Align Technology
ilyaukin@aligntech.com
Занимаюсь тестированием ~10 лет
Последние три года занимаюсь
...
Background
– WinRunner
– QT Pro
– Selenium 2
– Froglogic Squish
Roadmap
– Не бойтесь ломать старое
– Пример (тестирование одного
приложения)
– Пример (интеграционное
тестирование)
– Обща...
Legacy test automation
– Давным-давно, кто-то в вашей
компании решил, что тесты должны
быть автоматическими
– И стали тест...
Проблемы
– Тесты не структурированы, их трудно
поддерживать
– Тесты разрабатываются по
«догоняющему» принципу
– На поддерж...
Legacy application?
Legacy tests?
– Legacy приложение
• Устаревший пользовательский интерфейс
(например, WinAPI)
• Нет API...
IT infrastructure
ESB
File Storage
Custom Services
Custom Services
Manufacturing
Custom Services
Billing
Функциональное
тестирование
ESB
File Storage
Custom Services
Custom Services
Custom Services
Billing
Manufacturing
Рассмотрим хороший
случай…
– Внутренняя разработка, разработчики
сидят в 10 метрах от нас
– Приложение в фазе активной
раз...
Что такое qtp?
Расширять старые или
писать новые?
– Расширение тестового
покрытия
 Не надо писать базовые
вещи
 Не надо тратить время
н...
Выбор технологии?
– “Out of the box” решения
(TestComplete etc.)
– Создание своего решения на
основе существующих
библиоте...
Немного технической
информации…
– Мы используем Selenium 2
(webdriver), python binding.
– Мы используем nose с плагином
fr...
Немного технической
информации…
– Пример сценария
Scenario: Staff creation and login
Given I am authorized as en_US doctor...
Немного технической
информации…
– Параметризация
Scenario Outline: Verify primary submissions for IDS and RDS
Given I am a...
Обзор результатов
– До
• Тесты на новый функционал часто
дописывались после релиза, чтобы
включить в регрессию
– После
• П...
Обзор результатов
– Плюсы и минусы нового решения
Сценарии отделены от реализации
Изоляция внешних систем
oПриложение и ...
Обзор результатов
– Сценарии отделены от реализации
*.feature 26236 строк
*.py 11039 строк
Вариант 1. Разработчики решают...
Обзор результатов
– Изоляция внешних систем
Нам не нужно разворачивать весь стек
приложений, чтобы протестировать нашу
си...
Обзор результатов
– Приложение и тесты в разных
репозиториях
oРазработчики не владеют кодом тестов,
также как и QA не влад...
Обзор результатов
– Используется пользовательский
интерфейс там где нужно лишь
создать, изменить или получить
данные
oЛьви...
Обзор результатов
– До
• Тесты на новый функционал часто
дописывались после релиза, чтобы
включить в регрессию
– После
• П...
Расширять старые или
писать новые?
– Чем раньше начать разрабатывать
новый фреймфорк, тем меньше
издержки
Интеграционное
тестирование
– OK, мы протестировали наше
приложение, изолировав его от
внешних систем
– Но нам все еще нуж...
Интеграционное
тестирование
Интеграционное
тестирование
ESB
File Storage
Custom Services
Custom Services
Manufacturing
Custom Services
Billing
ROCS
– ROCS – legacy система запуска
интеграционных тестов
ROCS
– ROCS – legacy система запуска
интеграционных тестов
• Запускает последовательно несколько qtp
тестов, подавая на вх...
ROCS
– ROCS – legacy система запуска
интеграционных тестов
• Запускает последовательно несколько qtp
тестов, подавая на вх...
ROCS
– ROCS – legacy система запуска
интеграционных тестов
• Запускает последовательно несколько qtp
тестов, подавая на вх...
ROCS
– ROCS – legacy система запуска
интеграционных тестов
• Запускает последовательно несколько qtp
тестов, подавая на вх...
ROCS
– Формат записи задачи в ROCS
id шага * qtp тест * описание
id шага2 * qtp тест * описание
…
ROCS
– Гетерогенные тесты
id шага * qtp тест * описание
id шага2 * qtp тест * описание
id шага3 * репозиторий:тест * описа...
ROCS
– Хорошее ли это решение?
Оно требует минимальных изменений, так
что было сделано быстро
oЭто полумеры – мы оставляе...
“Быстро” vs “Правильно”
– У меня нет универсального ответа на
этот вопрос
– Стоит делать «максимально общее
решение, котор...
“Быстро” vs “Правильно”
Задача занимает все отведенное на нее
время
Закон Паркинсона
Бесконечное познание требует
бесконеч...
Два подхода к
тестированию
Недостатки перевернутой
пирамиды
– Меньше знаний -> больше времени на
реализацию, на локализацию багов
– Большее время про...
Уменьшение времени
прохождения тестов
– Делать все проверки, требующие
одинакового набора данных, на одних
и тех же данных...
А если по нормальному?
– Готовить данные одним запросом
• Приложение предоставляет интерфейс
подготовки тестовых данных
• ...
Вопросы?
of 42

Развитие унаследованного фреймворка тестирования

Доклад Ильи Ляукина на SQA Days-15. 18-19 апреля, 2014, Москва. www.sqadays.com
Published on: Mar 4, 2016
Published in: Education      
Source: www.slideshare.net


Transcripts - Развитие унаследованного фреймворка тестирования

  • 1. Развитие унаследованного фреймворка тестирования Илья Ляукин. Align Technology, Inc.
  • 2. Обо мне Илья Ляукин, Align Technology ilyaukin@aligntech.com Занимаюсь тестированием ~10 лет Последние три года занимаюсь автоматизацией тестирования в Align
  • 3. Background – WinRunner – QT Pro – Selenium 2 – Froglogic Squish
  • 4. Roadmap – Не бойтесь ломать старое – Пример (тестирование одного приложения) – Пример (интеграционное тестирование) – Общайтесь с разработчиками!
  • 5. Legacy test automation – Давным-давно, кто-то в вашей компании решил, что тесты должны быть автоматическими – И стали тесты автоматическими – И стало их много – И все бы хорошо…
  • 6. Проблемы – Тесты не структурированы, их трудно поддерживать – Тесты разрабатываются по «догоняющему» принципу – На поддержку уходят все ресурсы – Добавление нового сценария все дороже и дороже – Эффективность команды автоматизации стремится к нулю
  • 7. Legacy application? Legacy tests? – Legacy приложение • Устаревший пользовательский интерфейс (например, WinAPI) • Нет API • Не обновляется – Legacy тесты • Приложение написано на современных технологиях и развивается, но тесты по историческим причинам написаны на устаревшем инструменте
  • 8. IT infrastructure ESB File Storage Custom Services Custom Services Manufacturing Custom Services Billing
  • 9. Функциональное тестирование ESB File Storage Custom Services Custom Services Custom Services Billing Manufacturing
  • 10. Рассмотрим хороший случай… – Внутренняя разработка, разработчики сидят в 10 метрах от нас – Приложение в фазе активной разработки – Нормальный пользовательский интерфейс (web) – Существует набор тестов, написанных с использованием устаревшего инструмента (qtp)
  • 11. Что такое qtp?
  • 12. Расширять старые или писать новые? – Расширение тестового покрытия  Не надо писать базовые вещи  Не надо тратить время на исследование o Мы наследуем все недостатки существующего подхода, такие как ограниченная концепция (data driven вместо behavior driven), устаревший инструмент или невыразительный язык программирования – Создание нового фреймворка  Позволяет выбрать наиболее подходящие технологии  Позволяет учесть недостатки старого подхода  Нет скрытых особенностей o Требуется существенное время, для того чтобы сделать хотя бы что-то работающее («тест авторизации», который сам по себе не нужен)
  • 13. Выбор технологии? – “Out of the box” решения (TestComplete etc.) – Создание своего решения на основе существующих библиотек / фреймворков, каждый из которых решает свою задачу
  • 14. Немного технической информации… – Мы используем Selenium 2 (webdriver), python binding. – Мы используем nose с плагином freshen, который позволяет писать тесты как сценарии – Мы используем nose+multiprocess и grid для распраллеливания – Мы используем систему непрерывной интеграции (bamboo) для запусков и хранения результатов
  • 15. Немного технической информации… – Пример сценария Scenario: Staff creation and login Given I am authorized as en_US doctor And I have Staff logins enabled When I am on Account tab in IDS When I am on Staff Accounts tab in IDS And I create new staff member Then I landed on Staff Accounts page And I see current staff member in Staffs table Given I am authorized as current staff member Then I landed on GATI page And I see correct salutation for current staff user
  • 16. Немного технической информации… – Параметризация Scenario Outline: Verify primary submissions for IDS and RDS Given I am authorized as <doctor> doctor And I have Intra oral scanning disabled And I have a patient with <order> Primary order submitted When I am on Patient File page in <app> Then I see Patient ID And I see transient status as Waiting for patient's records And I see last final status as Prescription submitted Examples: | doctor | order | app | | any RDS | Realine | RDS | | en_GB | Lite | IDS |
  • 17. Обзор результатов – До • Тесты на новый функционал часто дописывались после релиза, чтобы включить в регрессию – После • Порядка 80% тестовых сценариев готовы до первой фазы тестирования • Их реализация готова в начале первой фазы тестирования
  • 18. Обзор результатов – Плюсы и минусы нового решения Сценарии отделены от реализации Изоляция внешних систем oПриложение и тесты в разных репозиториях oИспользуется пользовательский интерфейс там где нужно лишь создать, изменить или получить данные
  • 19. Обзор результатов – Сценарии отделены от реализации *.feature 26236 строк *.py 11039 строк Вариант 1. Разработчики решаются поддерживать тесты самостоятельно. Мы готовы к этому – нужно переписать лишь реализацию, сценарии остаются! Вариант 2. Разработчики решаются переписать приложение на ruby. Мы готовы к этому – нужно лишь реализовать шаги на Cucumber, сценарии остаются!
  • 20. Обзор результатов – Изоляция внешних систем Нам не нужно разворачивать весь стек приложений, чтобы протестировать нашу систему Дисфункция внешней системы не мешает нашему тестированию
  • 21. Обзор результатов – Приложение и тесты в разных репозиториях oРазработчики не владеют кодом тестов, также как и QA не владеют кодом приложения oМешает непрерывной интеграции – Если сделано изменение, не совместимое с UI тестами, починить его можно только в следующем билде – Разработчики просто не хотят видеть красный билд из-за того что упали UI тесты
  • 22. Обзор результатов – Используется пользовательский интерфейс там где нужно лишь создать, изменить или получить данные oЛьвиная доля времени выполнения тестов уходит на подготовку тестовых данных
  • 23. Обзор результатов – До • Тесты на новый функционал часто дописывались после релиза, чтобы включить в регрессию – После • Порядка 80% тестовых сценариев готовы до первой фазы тестирования • Их реализация готова в начале первой фазы тестирования
  • 24. Расширять старые или писать новые? – Чем раньше начать разрабатывать новый фреймфорк, тем меньше издержки
  • 25. Интеграционное тестирование – OK, мы протестировали наше приложение, изолировав его от внешних систем – Но нам все еще нужно тестировать интеграцию • Вспоминаем про биллинг 10-летней давности без API и web интерфейса
  • 26. Интеграционное тестирование
  • 27. Интеграционное тестирование ESB File Storage Custom Services Custom Services Manufacturing Custom Services Billing
  • 28. ROCS – ROCS – legacy система запуска интеграционных тестов
  • 29. ROCS – ROCS – legacy система запуска интеграционных тестов • Запускает последовательно несколько qtp тестов, подавая на вход следующему выходную таблицу данных предыдущего
  • 30. ROCS – ROCS – legacy система запуска интеграционных тестов • Запускает последовательно несколько qtp тестов, подавая на вход следующему выходную таблицу данных предыдущего • Автоматически выбирает машину для запуска тестов
  • 31. ROCS – ROCS – legacy система запуска интеграционных тестов • Запускает последовательно несколько qtp тестов, подавая на вход следующему выходную таблицу данных предыдущего • Автоматически выбирает машину для запуска тестов • Имеет web интерфейс
  • 32. ROCS – ROCS – legacy система запуска интеграционных тестов • Запускает последовательно несколько qtp тестов, подавая на вход следующему выходную таблицу данных предыдущего • Автоматически выбирает машину для запуска тестов • Имеет web интерфейс • Широко используется для регрессионного тестирования, подготовки тестовых данных и мониторинга тестовых стендов
  • 33. ROCS – Формат записи задачи в ROCS id шага * qtp тест * описание id шага2 * qtp тест * описание …
  • 34. ROCS – Гетерогенные тесты id шага * qtp тест * описание id шага2 * qtp тест * описание id шага3 * репозиторий:тест * описание …
  • 35. ROCS – Хорошее ли это решение? Оно требует минимальных изменений, так что было сделано быстро oЭто полумеры – мы оставляем старый способ параметризации (Excel data sheets) и вынуждены привнести его в новое решение
  • 36. “Быстро” vs “Правильно” – У меня нет универсального ответа на этот вопрос – Стоит делать «максимально общее решение, которое вы можете себе позволить при имеющихся ресурсах»
  • 37. “Быстро” vs “Правильно” Задача занимает все отведенное на нее время Закон Паркинсона Бесконечное познание требует бесконечного количества времени, а потому что работай, что не работай – все едино «Понедельник начинается в субботу»
  • 38. Два подхода к тестированию
  • 39. Недостатки перевернутой пирамиды – Меньше знаний -> больше времени на реализацию, на локализацию багов – Большее время прохождение тестов – Инструменты не рассчитаны на запуск большого количества долгоиграющих тестов
  • 40. Уменьшение времени прохождения тестов – Делать все проверки, требующие одинакового набора данных, на одних и тех же данных Уменьшается время на подготовку данных oНарушается условие, что один тест должен проверять одну вещь
  • 41. А если по нормальному? – Готовить данные одним запросом • Приложение предоставляет интерфейс подготовки тестовых данных • Процедуры подготовки тестовых данных поддерживаются разработчиками • Это самый сложный, но видимо самый правильный путь
  • 42. Вопросы?