SlideShare una empresa de Scribd logo
1 de 39
И никуда не надо ехать!


Читабельные отчеты для
 автоматизации на C# и
   Selenium Webdriver
  Дмитрий Жарий     2012
О себе
О чем доклад?
Selenium IDE – это хорошо!
                          2. Можно быстренько записать тест и чуть допилить


1. Просто начать:
можно вот так
вот взять – и сделать!
                                                   3. Не нужно знать «сложного»
                                                   языка программирования




5. Отличный инструмент, когда UI и                4. Много учебных материалов
архитектура продукта не меняется, а новые         Есть трейнинги, видео, книги,
фичи не ломают старые тесты.                      на форуме
(Вполне реально для старых проектов, c            можно спросить если чё.
~ 10-ти летней историей)
Но, в динамически развивающихся
                проектах…
                         2. Mozilla штампует Firefox’ы так быстро, что разработчики
                         Selenium IDE просто не успевают обеспечить совместимость
1. Хочу тестировать в
разных браузерах,
а есть только
Firefox :(                                           3. Хочу использовать
                                                     все возможности современных
                                                     языков программирования



                                                    4. Хочу читать данные их Excel
5. А может быть и разработчики                      или из Базы Данных
будут помогать писать тесты? Если тесты будут
на их «родном» языке.
А давайте экспортируем тесты в
        C#/ WebDriver!
Прощай, уютный Selenium IDE :(
                      Удобные ошибки
Список тестов




Статистика




Журнал/Справочник
Привет, Gallio Icarus, MbUnit, BDDfy!
• Gallio Icarus – богатая графическая оболочка,
  позволяющая запускать тесты и получать
  красивые отчеты
• MbUnit – тест-фреймворк, позволяющий
  создавать модульные и интеграционные
  тесты. «Родной» для Gallio Icarus. Позволяет
  задействовать все функции отчетности.
• BDDfy – фреймворк, позволяющий писать
  тесты в BDD-стиле. Т.е., пользовательские
  истории, Given/When/Then, сценарии и т.д.
А что получилось? Вот это?!
driver.Navigate().GoToUrl(baseURL + "/register/");
driver.FindElement(By.LinkText("Зарегистрируйсяпрямо сейчас!")).Click();
driver.FindElement(By.Name("your-email")).Clear();
driver.FindElement(By.Name("your-email")).SendKeys(" ");
driver.FindElement(By.Name("text-765")).Clear();
driver.FindElement(By.Name("text-765")).SendKeys(" ");
driver.FindElement(By.Name("your-name")).Clear();
driver.FindElement(By.Name("your-name")).SendKeys(" ");
driver.FindElement(By.CssSelector("input.wpcf7-submit.submitf")).Click();
// ERROR: Caught exception [ERROR: Unsupported command [selectWindow]]
driver.FindElement(By.Id("fbInspectButton")).Click();
// ERROR: Caught exception [ERROR: Unsupported command [selectWindow]]
driver.FindElement(By.XPath("//div[@id='wpcf7-f1-p16-o1']/form/div[3]")).Click();
// ERROR: Caught exception [ERROR: Unsupported command [isTextPresent]]
А что будет если просто
     скопировать…
… Скопировать… и…
Запустить в Gallio Icarus!
1. Удобный лог в формате HTML
 сразу после тестового прогона

                           Результат




                         Эта ссылка откроет
                         Visual Studio
1. Удобный лог в формате HTML
 сразу после тестового прогона
                        Можно просмотреть
                        результат как одного,
                        так и группы тестов




                       Можно вставить любой
                       HTML код.
                       Например, Flash-игру,
                       Чтобы не было скучно
2. Тестовые наборы
       • Фильтр по категориям
       • Может Показать только Failed тесты
       • Отображает тестовый набор как в
         древовидном, так и в линейном стиле
3. Проект и отчеты
Еще плюшки: можно записать видео
И открыть его из отчета
Gallio Icarus
• Бесплатный, с открытым исходным кодом
• Простая установка в пару кликов
• Интеграция с Visual Studio
• Возможность запускать тесты без
  установленной Visual Studio
• Богатое форматирование отчета
• Возможность вставки HTML
Gallio Icarus
• Запись видео и снятие скриншотов «из
  коробки»
• Тестовый фреймворк MbUnit – родной для
  Icarus
• Поддерживает запуск тестов написанных на
  NUnit, MSTest
• Интегрируется с множеством других проектов
  (NCover, RSpec + IronRuby, TeamCity )
• Не менее уютен, чем Selenium IDE :)
Связь между кодом и процессом
         разработки
Карточки, Аджайлы, пользовательские истории
                     и BDD
История: Валидация значений на Форме Регистрации
      Как Админ Конфетки
      Я хочу чтобы на странице регистрации была базовая валидация
      Которая бы не пропускала некорректные значения

Сценарий: Форма не должна принимать поля, состоящие из пробелов
       Дано Я на Странице Регистрации
       Когда Я заполняю все поля пробелами
       И нажимаю на кнопку отправки
       Тогда форма должна предупредить о некорректном вводе
Карточки, Аджайлы, пользовательские истории
                     и BDD
Story: Input validation on the Registration From
         As a Confet&QA Administrator
         I want the Registration Page to have basic validation
         So that it won’t accept the incorrect input

Scenario: The user form should not accept fields filled with only spaces
        Given I am on the Registration Form
        When I fill all the fields with space (“ ”)
        And click the Submit Button
        Then the page should warn me on invalid input
А связь то между тем и этим где?
driver.Navigate().GoToUrl(baseURL + "/register/");
driver.FindElement(By.LinkText("Зарегистрируйсяпрямо сейчас!")).Click();
driver.FindElement(By.Name("your-email")).Clear();
driver.FindElement(By.Name("your-email")).SendKeys(" ");
driver.FindElement(By.Name("text-765")).Clear();
driver.FindElement(By.Name("text-765")).SendKeys(" ");
driver.FindElement(By.Name("your-name")).Clear();
driver.FindElement(By.Name("your-name")).SendKeys(" ");
driver.FindElement(By.CssSelector("input.wpcf7-submit.submitf")).Click();
// ERROR: Caught exception [ERROR: Unsupported command [selectWindow]]
driver.FindElement(By.Id("fbInspectButton")).Click();
// ERROR: Caught exception [ERROR: Unsupported command [selectWindow]]
driver.FindElement(By.XPath("//div[@id='wpcf7-f1-p16-o1']/form/div[3]")).Click();
// ERROR: Caught exception [ERROR: Unsupported command [isTextPresent]]
А связи нет. Но, будет!


             BDDfy
    БыДиДирует тесты!
* То есть, делает их понятней
До…
После (Часть 1)
После (Часть 2)
Зачем?
У BDDfy есть отдельный лог
       (bddfy.html)
BDDfy: отчет из стандартного
          примера
Но, все это – красивая обвертка
Форма + Содержание
Форма:
  – Удобные и красивые отчеты (Gallio Icarus +
    MbUnit)
  – Разбить тесты на отдельные шаги (BDDfy)

Содержание:
 – Использовать высокоуровневый язык
 – Разбить код на переиспользуемые блоки
 – Методы, функции, паттерн PageObject
Давайте вынесем
переиспользуемый код
Код стал веселее :)
Венгерская нотация
txtEmail     – text        – текстовое поле
lblMessage   – label       – строка текста
btnSubmit    – button      – кнопка
ddlCountry   – drop down list
                           – выпадающий
                              список
chkAutoConfeTQA – checkbox – чек-бокс

*Как никогда актуальна, когда все элементы –
это IWebElement
Хочешь текстовое поле?
    – Пиши “txt…”
Выводы
1. Кладём код в Gallio Icarus
2. В формочку из BDDfy
3. Добавим лучших практик по написанию
   кода (по вкусу)

И вуаля! Красивые и аппетитные отчеты
готовы!
Спасибо за внимание!
Я готов ответить на Ваши вопросы.

Дмитрий Жарий

http://blog.zhariy.com
dzhariy@gmail.com


     Спасибо за поддержку:

Más contenido relacionado

La actualidad más candente

Баба Яга против!
Баба Яга против!Баба Яга против!
Баба Яга против!Roman Dvornov
 
Алексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кодаАлексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кодаYandex
 
Жизнь в изоляции
Жизнь в изоляцииЖизнь в изоляции
Жизнь в изоляцииRoman Dvornov
 
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Fwdays
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...IT-Portfolio
 
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"IT Event
 
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Ontico
 
Расширь границы возможного вместе с Gradle
Расширь границы возможного вместе с GradleРасширь границы возможного вместе с Gradle
Расширь границы возможного вместе с GradleAleksandr Tarasov
 
Презентация: 1С-Bitrix — как начать
Презентация: 1С-Bitrix — как начатьПрезентация: 1С-Bitrix — как начать
Презентация: 1С-Bitrix — как начатьDmitriy Polisadov
 
Грязная автоматизация
Грязная автоматизацияГрязная автоматизация
Грязная автоматизацияSQALab
 
kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDDkranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDDKrivoy Rog IT Community
 
Опыт разработки эффективного SPA
Опыт разработки эффективного SPAОпыт разработки эффективного SPA
Опыт разработки эффективного SPAEugene Abrosimov
 
Фронтенд разработка без боли
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без болиAnton Piskunov
 
Let's Talk About Junit 5
Let's Talk About Junit 5Let's Talk About Junit 5
Let's Talk About Junit 5SQALab
 
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИСTARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС2ГИС Технологии
 
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"IT Event
 

La actualidad más candente (20)

Баба Яга против!
Баба Яга против!Баба Яга против!
Баба Яга против!
 
Алексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кодаАлексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кода
 
Жизнь в изоляции
Жизнь в изоляцииЖизнь в изоляции
Жизнь в изоляции
 
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
 
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
 
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
 
Скриншоты как сервис
Скриншоты как сервисСкриншоты как сервис
Скриншоты как сервис
 
Расширь границы возможного вместе с Gradle
Расширь границы возможного вместе с GradleРасширь границы возможного вместе с Gradle
Расширь границы возможного вместе с Gradle
 
Презентация: 1С-Bitrix — как начать
Презентация: 1С-Bitrix — как начатьПрезентация: 1С-Bitrix — как начать
Презентация: 1С-Bitrix — как начать
 
Chef @DevWeb
Chef @DevWebChef @DevWeb
Chef @DevWeb
 
Грязная автоматизация
Грязная автоматизацияГрязная автоматизация
Грязная автоматизация
 
Automation testing desktop applications
Automation testing desktop applicationsAutomation testing desktop applications
Automation testing desktop applications
 
kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDDkranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
 
Опыт разработки эффективного SPA
Опыт разработки эффективного SPAОпыт разработки эффективного SPA
Опыт разработки эффективного SPA
 
Фронтенд разработка без боли
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без боли
 
WepPerfomance,
WepPerfomance, WepPerfomance,
WepPerfomance,
 
Let's Talk About Junit 5
Let's Talk About Junit 5Let's Talk About Junit 5
Let's Talk About Junit 5
 
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИСTARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
 
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
 

Destacado

Запускаемая спецификация на SpecFlow с использованием WatiN для .NET
Запускаемая спецификация на SpecFlow с использованием WatiN для .NETЗапускаемая спецификация на SpecFlow с использованием WatiN для .NET
Запускаемая спецификация на SpecFlow с использованием WatiN для .NETDmytro Zharii
 
Тестирование в изоляции: Играем в драконий покер
Тестирование в изоляции: Играем в драконий покерТестирование в изоляции: Играем в драконий покер
Тестирование в изоляции: Играем в драконий покерSQALab
 
Полуавтоматизация third-party API
Полуавтоматизация third-party APIПолуавтоматизация third-party API
Полуавтоматизация third-party APISQALab
 
GUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioGUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioSQALab
 
Фреймворк Html Elements или как удобно взаимодействовать с веб-интерфейсами в...
Фреймворк Html Elements или как удобно взаимодействовать с веб-интерфейсами в...Фреймворк Html Elements или как удобно взаимодействовать с веб-интерфейсами в...
Фреймворк Html Elements или как удобно взаимодействовать с веб-интерфейсами в...AlexanderTolmachev
 
2016-03-22_Стратегия в стиле Agile. Внедрение корпоративных стратегий_8
2016-03-22_Стратегия в стиле Agile. Внедрение корпоративных стратегий_82016-03-22_Стратегия в стиле Agile. Внедрение корпоративных стратегий_8
2016-03-22_Стратегия в стиле Agile. Внедрение корпоративных стратегий_8Emil Burganov
 
Разработка через тестирование (TDD и BDD)
Разработка через тестирование (TDD и BDD)Разработка через тестирование (TDD и BDD)
Разработка через тестирование (TDD и BDD)Vyacheslav Lyalkin
 
Webium: Page Objects in Python
Webium: Page Objects in PythonWebium: Page Objects in Python
Webium: Page Objects in PythonIgor Khrol
 

Destacado (9)

Запускаемая спецификация на SpecFlow с использованием WatiN для .NET
Запускаемая спецификация на SpecFlow с использованием WatiN для .NETЗапускаемая спецификация на SpecFlow с использованием WatiN для .NET
Запускаемая спецификация на SpecFlow с использованием WatiN для .NET
 
Тестирование в изоляции: Играем в драконий покер
Тестирование в изоляции: Играем в драконий покерТестирование в изоляции: Играем в драконий покер
Тестирование в изоляции: Играем в драконий покер
 
Полуавтоматизация third-party API
Полуавтоматизация third-party APIПолуавтоматизация third-party API
Полуавтоматизация third-party API
 
GUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioGUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test Studio
 
Фреймворк Html Elements или как удобно взаимодействовать с веб-интерфейсами в...
Фреймворк Html Elements или как удобно взаимодействовать с веб-интерфейсами в...Фреймворк Html Elements или как удобно взаимодействовать с веб-интерфейсами в...
Фреймворк Html Elements или как удобно взаимодействовать с веб-интерфейсами в...
 
2016-03-22_Стратегия в стиле Agile. Внедрение корпоративных стратегий_8
2016-03-22_Стратегия в стиле Agile. Внедрение корпоративных стратегий_82016-03-22_Стратегия в стиле Agile. Внедрение корпоративных стратегий_8
2016-03-22_Стратегия в стиле Agile. Внедрение корпоративных стратегий_8
 
Разработка через тестирование (TDD и BDD)
Разработка через тестирование (TDD и BDD)Разработка через тестирование (TDD и BDD)
Разработка через тестирование (TDD и BDD)
 
Pandas: обзор основных функций
Pandas: обзор основных функцийPandas: обзор основных функций
Pandas: обзор основных функций
 
Webium: Page Objects in Python
Webium: Page Objects in PythonWebium: Page Objects in Python
Webium: Page Objects in Python
 

Similar a Читабельные отчеты для автоматизации на C# / Gallio / BDDfy

Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
Подводная часть айсберга: что делать, чтобы автотесты не превратились в ТитаникПодводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
Подводная часть айсберга: что делать, чтобы автотесты не превратились в ТитаникSQALab
 
Tech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...it-people
 
Проходим тест Джоэла
Проходим тест ДжоэлаПроходим тест Джоэла
Проходим тест Джоэла0leGG
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGDataArt
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5Provectus
 
Froglogic Squish
Froglogic Squish Froglogic Squish
Froglogic Squish SQALab
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012InTRUEdeR
 
Embarcadero All-Access
Embarcadero All-AccessEmbarcadero All-Access
Embarcadero All-AccessSerghei Urban
 
Виды QA: Всё что вы не знали и боялись спростить
Виды QA: Всё что вы не знали и боялись спроститьВиды QA: Всё что вы не знали и боялись спростить
Виды QA: Всё что вы не знали и боялись спроститьGoIT
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...jazzteam
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0akrakovetsky
 
Microsoft Visual Studio 2010
Microsoft Visual Studio 2010Microsoft Visual Studio 2010
Microsoft Visual Studio 2010Alexander Babich
 
Codeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCodeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCOMAQA.BY
 
Построение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кодаПостроение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кодаTatyanazaxarova
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовSQALab
 

Similar a Читабельные отчеты для автоматизации на C# / Gallio / BDDfy (20)

Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
Подводная часть айсберга: что делать, чтобы автотесты не превратились в ТитаникПодводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
 
Tech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест Джоэла
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
 
Проходим тест Джоэла
Проходим тест ДжоэлаПроходим тест Джоэла
Проходим тест Джоэла
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
Froglogic Squish
Froglogic Squish Froglogic Squish
Froglogic Squish
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012
 
Embarcadero All-Access
Embarcadero All-AccessEmbarcadero All-Access
Embarcadero All-Access
 
Виды QA: Всё что вы не знали и боялись спростить
Виды QA: Всё что вы не знали и боялись спроститьВиды QA: Всё что вы не знали и боялись спростить
Виды QA: Всё что вы не знали и боялись спростить
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0
 
Microsoft Visual Studio 2010
Microsoft Visual Studio 2010Microsoft Visual Studio 2010
Microsoft Visual Studio 2010
 
Codeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCodeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышло
 
UI+unit testing in iOS
UI+unit testing in iOSUI+unit testing in iOS
UI+unit testing in iOS
 
Построение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кодаПостроение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кода
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
 

Читабельные отчеты для автоматизации на C# / Gallio / BDDfy

  • 1. И никуда не надо ехать! Читабельные отчеты для автоматизации на C# и Selenium Webdriver Дмитрий Жарий 2012
  • 4. Selenium IDE – это хорошо! 2. Можно быстренько записать тест и чуть допилить 1. Просто начать: можно вот так вот взять – и сделать! 3. Не нужно знать «сложного» языка программирования 5. Отличный инструмент, когда UI и 4. Много учебных материалов архитектура продукта не меняется, а новые Есть трейнинги, видео, книги, фичи не ломают старые тесты. на форуме (Вполне реально для старых проектов, c можно спросить если чё. ~ 10-ти летней историей)
  • 5. Но, в динамически развивающихся проектах… 2. Mozilla штампует Firefox’ы так быстро, что разработчики Selenium IDE просто не успевают обеспечить совместимость 1. Хочу тестировать в разных браузерах, а есть только Firefox :( 3. Хочу использовать все возможности современных языков программирования 4. Хочу читать данные их Excel 5. А может быть и разработчики или из Базы Данных будут помогать писать тесты? Если тесты будут на их «родном» языке.
  • 6. А давайте экспортируем тесты в C#/ WebDriver!
  • 7. Прощай, уютный Selenium IDE :( Удобные ошибки Список тестов Статистика Журнал/Справочник
  • 8. Привет, Gallio Icarus, MbUnit, BDDfy! • Gallio Icarus – богатая графическая оболочка, позволяющая запускать тесты и получать красивые отчеты • MbUnit – тест-фреймворк, позволяющий создавать модульные и интеграционные тесты. «Родной» для Gallio Icarus. Позволяет задействовать все функции отчетности. • BDDfy – фреймворк, позволяющий писать тесты в BDD-стиле. Т.е., пользовательские истории, Given/When/Then, сценарии и т.д.
  • 9. А что получилось? Вот это?! driver.Navigate().GoToUrl(baseURL + "/register/"); driver.FindElement(By.LinkText("Зарегистрируйсяпрямо сейчас!")).Click(); driver.FindElement(By.Name("your-email")).Clear(); driver.FindElement(By.Name("your-email")).SendKeys(" "); driver.FindElement(By.Name("text-765")).Clear(); driver.FindElement(By.Name("text-765")).SendKeys(" "); driver.FindElement(By.Name("your-name")).Clear(); driver.FindElement(By.Name("your-name")).SendKeys(" "); driver.FindElement(By.CssSelector("input.wpcf7-submit.submitf")).Click(); // ERROR: Caught exception [ERROR: Unsupported command [selectWindow]] driver.FindElement(By.Id("fbInspectButton")).Click(); // ERROR: Caught exception [ERROR: Unsupported command [selectWindow]] driver.FindElement(By.XPath("//div[@id='wpcf7-f1-p16-o1']/form/div[3]")).Click(); // ERROR: Caught exception [ERROR: Unsupported command [isTextPresent]]
  • 10. А что будет если просто скопировать…
  • 13. 1. Удобный лог в формате HTML сразу после тестового прогона Результат Эта ссылка откроет Visual Studio
  • 14. 1. Удобный лог в формате HTML сразу после тестового прогона Можно просмотреть результат как одного, так и группы тестов Можно вставить любой HTML код. Например, Flash-игру, Чтобы не было скучно
  • 15. 2. Тестовые наборы • Фильтр по категориям • Может Показать только Failed тесты • Отображает тестовый набор как в древовидном, так и в линейном стиле
  • 16. 3. Проект и отчеты
  • 17. Еще плюшки: можно записать видео
  • 18. И открыть его из отчета
  • 19. Gallio Icarus • Бесплатный, с открытым исходным кодом • Простая установка в пару кликов • Интеграция с Visual Studio • Возможность запускать тесты без установленной Visual Studio • Богатое форматирование отчета • Возможность вставки HTML
  • 20. Gallio Icarus • Запись видео и снятие скриншотов «из коробки» • Тестовый фреймворк MbUnit – родной для Icarus • Поддерживает запуск тестов написанных на NUnit, MSTest • Интегрируется с множеством других проектов (NCover, RSpec + IronRuby, TeamCity ) • Не менее уютен, чем Selenium IDE :)
  • 21. Связь между кодом и процессом разработки
  • 22. Карточки, Аджайлы, пользовательские истории и BDD История: Валидация значений на Форме Регистрации Как Админ Конфетки Я хочу чтобы на странице регистрации была базовая валидация Которая бы не пропускала некорректные значения Сценарий: Форма не должна принимать поля, состоящие из пробелов Дано Я на Странице Регистрации Когда Я заполняю все поля пробелами И нажимаю на кнопку отправки Тогда форма должна предупредить о некорректном вводе
  • 23. Карточки, Аджайлы, пользовательские истории и BDD Story: Input validation on the Registration From As a Confet&QA Administrator I want the Registration Page to have basic validation So that it won’t accept the incorrect input Scenario: The user form should not accept fields filled with only spaces Given I am on the Registration Form When I fill all the fields with space (“ ”) And click the Submit Button Then the page should warn me on invalid input
  • 24. А связь то между тем и этим где? driver.Navigate().GoToUrl(baseURL + "/register/"); driver.FindElement(By.LinkText("Зарегистрируйсяпрямо сейчас!")).Click(); driver.FindElement(By.Name("your-email")).Clear(); driver.FindElement(By.Name("your-email")).SendKeys(" "); driver.FindElement(By.Name("text-765")).Clear(); driver.FindElement(By.Name("text-765")).SendKeys(" "); driver.FindElement(By.Name("your-name")).Clear(); driver.FindElement(By.Name("your-name")).SendKeys(" "); driver.FindElement(By.CssSelector("input.wpcf7-submit.submitf")).Click(); // ERROR: Caught exception [ERROR: Unsupported command [selectWindow]] driver.FindElement(By.Id("fbInspectButton")).Click(); // ERROR: Caught exception [ERROR: Unsupported command [selectWindow]] driver.FindElement(By.XPath("//div[@id='wpcf7-f1-p16-o1']/form/div[3]")).Click(); // ERROR: Caught exception [ERROR: Unsupported command [isTextPresent]]
  • 25. А связи нет. Но, будет! BDDfy БыДиДирует тесты! * То есть, делает их понятней
  • 30. У BDDfy есть отдельный лог (bddfy.html)
  • 31. BDDfy: отчет из стандартного примера
  • 32. Но, все это – красивая обвертка
  • 33. Форма + Содержание Форма: – Удобные и красивые отчеты (Gallio Icarus + MbUnit) – Разбить тесты на отдельные шаги (BDDfy) Содержание: – Использовать высокоуровневый язык – Разбить код на переиспользуемые блоки – Методы, функции, паттерн PageObject
  • 36. Венгерская нотация txtEmail – text – текстовое поле lblMessage – label – строка текста btnSubmit – button – кнопка ddlCountry – drop down list – выпадающий список chkAutoConfeTQA – checkbox – чек-бокс *Как никогда актуальна, когда все элементы – это IWebElement
  • 37. Хочешь текстовое поле? – Пиши “txt…”
  • 38. Выводы 1. Кладём код в Gallio Icarus 2. В формочку из BDDfy 3. Добавим лучших практик по написанию кода (по вкусу) И вуаля! Красивые и аппетитные отчеты готовы!
  • 39. Спасибо за внимание! Я готов ответить на Ваши вопросы. Дмитрий Жарий http://blog.zhariy.com dzhariy@gmail.com Спасибо за поддержку: