Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Тесты в стиле BDD на C# (Подходы и инструменты; SpecFlow, BDDfy)

6,460 views

Published on

  • Be the first to comment

Тесты в стиле BDD на C# (Подходы и инструменты; SpecFlow, BDDfy)

  1. 1. A U T O M A T E D -T E S T I N G . I N F OТесты в стиле BDD на C#Подходы и инструменты (SpecFlow, BDDfy)Дмитрий Жарий,http://zhariy.comEPAM Systems, Май 2013
  2. 2. A U T O M A T E D -T E S T I N G . I N F O2BEHAVIOR-DRIVEN DEVELOPMENTБез лишней философии
  3. 3. 3 A U T O M A T E D -T E S T I N G . I N F OBDD – это обсуждениеКогда команда собирается вместе дляобсуждения конкретной (новой)функциональности.Участники команды приходят кобщему пониманию работы системы,иллюстрируя эту работу примерами.
  4. 4. 4 A U T O M A T E D -T E S T I N G . I N F OBDD – это когда результатобсуждения записываетсяРаз мы уж мы приняли решение, так почему быне записать его? Или нарисовать?Идея BDD не ограничивает нас ни в чём
  5. 5. 5 A U T O M A T E D -T E S T I N G . I N F OBDD – это когда мыавтоматизируем важные примерыВ момент обсуждения – мы находимтребования. Вместе создаем спецификацию.Если мы автоматизируем проверкутребований…Документация будет проверять систему.Это – живая документация
  6. 6. 6 A U T O M A T E D -T E S T I N G . I N F OЕсли бы Маслоу придумалтреугольник BDD1. Обсуждение. Общие понимание (Достаточно)2. Запись требований (Круто)3.Автоматизация(Ваще супер!)
  7. 7. A U T O M A T E D -T E S T I N G . I N F O7О ЧЕМ ДОКЛАД, КЭП?
  8. 8. 8 A U T O M A T E D -T E S T I N G . I N F OBDD-инструмент… Так это ж топор!• Рубить дерево• Забивать гвозди• Отбиваться от зомби
  9. 9. 9 A U T O M A T E D -T E S T I N G . I N F OВ BDD есть инструменты, которыерешают определенную задачу1. SpecFlow (Cucumber, JBehave )Используется для созданиявысокоуровневых сценариев для «бизнеса»2. BDDfy/MSpec (Rspec, easyb…) ближе к коду,ближе к разработчикам3. Unit Tests (юнит тест фреймворки ) – это код.Понятен разработчикам
  10. 10. 10 A U T O M A T E D -T E S T I N G . I N F OОт «техники» к «бизнесу»
  11. 11. 11 A U T O M A T E D -T E S T I N G . I N F O
  12. 12. 12 A U T O M A T E D -T E S T I N G . I N F OUnit SaibotОчень гибкий, но порой,его трудно разглядеть.Особенно в темное время
  13. 13. 13 A U T O M A T E D -T E S T I N G . I N F OUnit Saibot - код[TestMethod]public void When_Player_X_puts_three_in_a_row_it_should_win(){// Arrangevar row1 = new[] { "X", "X", "O" };var row2 = new[] { "X", "O", "O" };var row3 = new[] { " ", " ", " " };var game = new Game(row1, row2, row3);// Actgame.PlayAt(2, 0);// AssertAssert.AreEqual("X", game.Winner);}
  14. 14. 14 A U T O M A T E D -T E S T I N G . I N F OUnit Saibot отчет
  15. 15. 15 A U T O M A T E D -T E S T I N G . I N F OUnit Saibot – резюме
  16. 16. 16 A U T O M A T E D -T E S T I N G . I N F OBDDfy-tanaНаходится где-то междудобром (кодом) итребованиями…https://github.com/TestStack/TestStack.BDDfy
  17. 17. 17 A U T O M A T E D -T E S T I N G . I N F OBDDfy-tana - код[TestMethod]public void X_Wins_situation(){var row1 = new[] { "X", "X", "O" };var row2 = new[] { "X", "O", "O" };var row3 = new[] { " ", " ", " " };this.Given(_ => Given_the_following_board(row1, row2, row3)).When(_ => When_X_moves_at(2, 0)).Then(_ => Then_the_winner_should_be("X")).BDDfy();}
  18. 18. 18 A U T O M A T E D -T E S T I N G . I N F OBDDfy-tana - отчеты
  19. 19. 19 A U T O M A T E D -T E S T I N G . I N F OBDDfy-tana – резюме
  20. 20. 20 A U T O M A T E D -T E S T I N G . I N F OSub-SpecFlowНу… работа на сторонетребований… это значитчасто «морозиться»http://www.specflow.org/specflownew/
  21. 21. 21 A U T O M A T E D -T E S T I N G . I N F OSub-SpecFlow (бизнес сценарий)Сценарий: Ничейный исход игрыДано игровая доска в след. состоянии:| * | C0 | C1 | C2 || Р0 | X | X | O || Р1 | O | O | X || Р2 | | O | X |Когда "X"-ки делают ход Ряд="2", Строка="0"То игра должна завершиться ничьейСценарий: 0-ки выигрываютДано игровая доска в след. состоянии:| * | C0 | C1 | C2 || Р0 | X | X | O || Р1 | X | O | || Р2 | | | |Когда “0"-ки делают ход Ряд="2", Строка="0"Тогда победить должны “0"-ки
  22. 22. 22 A U T O M A T E D -T E S T I N G . I N F OSub-SpecFlow (Keyword-driven)Сценарий: Создание нового проектаДано Залогинится «admin» «admin»И Кликнуть ссылка-текст «Проекты»И Кликнуть ссылка-css «a[dataid=’addnew’]»И Напечатать «Привет» в поле-css “input[id=name]”Когда Нажать кнопка-id “btnSave”То Подождать 2000И Проверить заголовок содержит “Привет - Project”Это не бизнес-сценарий. Это – КОД
  23. 23. 23 A U T O M A T E D -T E S T I N G . I N F OSub-SpecFlow - отчеты
  24. 24. 24 A U T O M A T E D -T E S T I N G . I N F OSub-SpecFlow – резюме
  25. 25. A U T O M A T E D -T E S T I N G . I N F O25READY?
  26. 26. 26 A U T O M A T E D -T E S T I N G . I N F ORound 1. Fight!Юнит тест для игрового движкаЦель игры в крестики–нолики – выстроить ряд из трехсвоих фигур. Вы играете на поле 3 на 3. Первый игрокизвестен как X, второй – 0. Игроки по очереди ставятX-ки и 0-ки на игровом поле пока один не выстроит 3фигуры в ряд или все 9 квадратов не будут заполнены.X-ки всегда ходят первыми. В случае, если всеквадраты заполнены, и ни один игрок не выстроил рядиз 3-х фигур – объявляется ничья.
  27. 27. 27 A U T O M A T E D -T E S T I N G . I N F ORound 1. Юнит-тесты. ВыводыUnit Saibot BDDfy-tana Sub SpecFlowЧитабельность* высокая высокая высокаяУсилия наподдержкуочень низкие низкие средниеСкоростьсозданияочень высокая высокая средняяСкорость прохода очень высокая очень высокая очень высокая* Читают тесты -- программисты
  28. 28. 28 A U T O M A T E D -T E S T I N G . I N F ORound 2. Fight!Системные тесты на Selenium(Record&Play)
  29. 29. 29 A U T O M A T E D -T E S T I N G . I N F ORound 2. Системные тесты(Record&Play). ВыводыUnit Saibot BDDfy-tana Sub SpecFlowЧитабельность* низкая высокая высокаяУсилия наподдержку**высокие высокие высокиеСкоростьсозданиянизкая низкая низкаяСкорость прохода средняя средняя средняя* Читабельность теста, не кода** Сам подход Record&Play не позволяет достичь низких усилий на поддержку
  30. 30. 30 A U T O M A T E D -T E S T I N G . I N F ORound 3. Fight!Свой ФреймворкЛицо: BDD-фреймворк, отчеты и т.д.Тело: Свой фреймворк, абстракции,библиотеки методов, подходы,лучшие практики, Page Objects,Ноги: Юнит-тест фреймворк:MbUnit, NUnit, MSTest
  31. 31. 31 A U T O M A T E D -T E S T I N G . I N F ORound 3. Системные тесты(Framework). ВыводыUnit Saibot BDDfy-tana Sub SpecFlowЧитабельность* высокая высокая очень высокаяУсилия наподдержкунизкие низкие средниеСкоростьсозданиявысокая высокая средняяСкоростьпрохода**средняя средняя средняя* Читабельность теста, не кода** Системные UI тесты по своей природе не могут быть быстрыми
  32. 32. 32 A U T O M A T E D -T E S T I N G . I N F OНе Выводы• Не ограничивайтесь одним подходом• Не ограничивайтесь одним инструментом• Не брезгуйте помощью программистов
  33. 33. 33 A U T O M A T E D -T E S T I N G . I N F OВыводы: инвестируйте в созданиефреймворка
  34. 34. 34 A U T O M A T E D -T E S T I N G . I N F OМатериалы. Наглый самопиарПрезентация на ATDays 2013. “За пределами PageObject” (видео, слайды, код)О том, как создать свой фремворк автоматизации UI тестирования с нуляhttp://blog.zhariy.com/2013/02/atdays-pageobject.htmlДоклад «Создание читабельных отчетов для автоматизациитестирования на .NET/C# + Webdriver + Gallio Icarus/MbUnit + BDDfy» (видео)Демонстрация работы Gallio Icarus и BDDfy для создания красивых отчетов послепрохода тестовhttp://blog.zhariy.com/2012/12/confet-netc-webdriver-gallio.htmlСлайды доклада «Запускаемая спецификация на SpecFlowс использованием WatiN для .NET» (слайды)Как работает Given When Then. Какие бывают сценарииhttp://www.slideshare.net/dzhariy/specflow-watin-net
  35. 35. 35 A U T O M A T E D -T E S T I N G . I N F OМатериалыАвтоматизация тестирования Web-приложенийОтличная статья, описывающая построение своего фреймворка тестирования,использования PageObjects, SpecFlow (C#)http://habrahabr.ru/post/178407/Подборка лучших статей по BDDТолько самые лучшие статьи, объясняющие что такое BDD икак применять эту методологиюhttp://goodrequirements.com/bdd/Книгиhttp://it-ebooks.info/book/675/http://www.specificationbyexample.com/
  36. 36. 36 A U T O M A T E D -T E S T I N G . I N F OИнструменты (C#)BDDfyhttp://www.mehdi-khalili.com/bddify-in-action/introductionSpecFlowhttp://www.specflow.org/specflownew/MSpechttps://github.com/machine/machine.specifications
  37. 37. 37 A U T O M A T E D -T E S T I N G . I N F OДмитрий Жарийhttp://zhariy.comEPAM SystemsСпециально дляпосиделок AT.info

×