Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
И никуда не надо ехать!


Читабельные отчеты для
 автоматизации на 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


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

More Related Content

Читабельные отчеты для автоматизации на 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 Спасибо за поддержку: