Мой доклад про создание читабельных отчетов для автоматизации тестирования на .NET/C# + Webdriver + Gallio Icarus/MbUnit + BDDfy
Доклад был сделан специально для онлайн конференции Auto ConfeT&QA, прошедшей в октябре 2012 года.
http://confetqa.ru/
======================================
См. также:
Gallio Icarus:
http://gallio.org
BDDfy – фреймворк для БыДиДификации кода :)
Страница проекта на Github:
http://teststack.github.com/TestStack.BDDfy/
Описание на английском:
http://www.mehdi-khalili.com/bddify-in-action/introduction
4. Selenium IDE – это хорошо!
2. Можно быстренько записать тест и чуть допилить
1. Просто начать:
можно вот так
вот взять – и сделать!
3. Не нужно знать «сложного»
языка программирования
5. Отличный инструмент, когда UI и 4. Много учебных материалов
архитектура продукта не меняется, а новые Есть трейнинги, видео, книги,
фичи не ломают старые тесты. на форуме
(Вполне реально для старых проектов, c можно спросить если чё.
~ 10-ти летней историей)
5. Но, в динамически развивающихся
проектах…
2. Mozilla штампует Firefox’ы так быстро, что разработчики
Selenium IDE просто не успевают обеспечить совместимость
1. Хочу тестировать в
разных браузерах,
а есть только
Firefox :( 3. Хочу использовать
все возможности современных
языков программирования
4. Хочу читать данные их Excel
5. А может быть и разработчики или из Базы Данных
будут помогать писать тесты? Если тесты будут
на их «родном» языке.
8. Привет, Gallio Icarus, MbUnit, BDDfy!
• Gallio Icarus – богатая графическая оболочка,
позволяющая запускать тесты и получать
красивые отчеты
• MbUnit – тест-фреймворк, позволяющий
создавать модульные и интеграционные
тесты. «Родной» для Gallio Icarus. Позволяет
задействовать все функции отчетности.
• BDDfy – фреймворк, позволяющий писать
тесты в BDD-стиле. Т.е., пользовательские
истории, Given/When/Then, сценарии и т.д.
13. 1. Удобный лог в формате HTML
сразу после тестового прогона
Результат
Эта ссылка откроет
Visual Studio
14. 1. Удобный лог в формате HTML
сразу после тестового прогона
Можно просмотреть
результат как одного,
так и группы тестов
Можно вставить любой
HTML код.
Например, Flash-игру,
Чтобы не было скучно
15. 2. Тестовые наборы
• Фильтр по категориям
• Может Показать только Failed тесты
• Отображает тестовый набор как в
древовидном, так и в линейном стиле
19. Gallio Icarus
• Бесплатный, с открытым исходным кодом
• Простая установка в пару кликов
• Интеграция с Visual Studio
• Возможность запускать тесты без
установленной Visual Studio
• Богатое форматирование отчета
• Возможность вставки HTML
20. Gallio Icarus
• Запись видео и снятие скриншотов «из
коробки»
• Тестовый фреймворк MbUnit – родной для
Icarus
• Поддерживает запуск тестов написанных на
NUnit, MSTest
• Интегрируется с множеством других проектов
(NCover, RSpec + IronRuby, TeamCity )
• Не менее уютен, чем Selenium IDE :)
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
БыДиДирует тесты!
* То есть, делает их понятней
33. Форма + Содержание
Форма:
– Удобные и красивые отчеты (Gallio Icarus +
MbUnit)
– Разбить тесты на отдельные шаги (BDDfy)
Содержание:
– Использовать высокоуровневый язык
– Разбить код на переиспользуемые блоки
– Методы, функции, паттерн PageObject
36. Венгерская нотация
txtEmail – text – текстовое поле
lblMessage – label – строка текста
btnSubmit – button – кнопка
ddlCountry – drop down list
– выпадающий
список
chkAutoConfeTQA – checkbox – чек-бокс
*Как никогда актуальна, когда все элементы –
это IWebElement
38. Выводы
1. Кладём код в Gallio Icarus
2. В формочку из BDDfy
3. Добавим лучших практик по написанию
кода (по вкусу)
И вуаля! Красивые и аппетитные отчеты
готовы!
39. Спасибо за внимание!
Я готов ответить на Ваши вопросы.
Дмитрий Жарий
http://blog.zhariy.com
dzhariy@gmail.com
Спасибо за поддержку: