SlideShare a Scribd company logo
Anton Vidishchev
Team Leader at Sigma Ukraine
                       MCPD
    A.Vidishchev@gmail.com
           @antonvidishchev
   Низкий контроль над разметкой
   Сложность тестирования
    ◦ Жесткая привязка к контексту
    ◦ Page Lifecycle
    ◦ ViewState
Model




View           Controller
   Полный контроль над разметкой
   SEO-friendly
   Широкие возможности тестирования
   Низкая связанность между компонентами
   Razor ViewEngine
   NuGet
   HTML Helpers
   Dependency Injection
   Валидация модели
   Безсессионные контроллеры
   Свойство ViewBag
   JSON Model Binding
   Partial Page Output Cache
   Global Action Filters
   Новые типы Action Result
Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3
   Меньше времени тратится на отладку
   Стимулирует стройность архитектуры
   Повышает уверенность в написанном коде
   Сложность тестирования БД, сервисов
   Ошибочный тест ведет к ошибочному коду
   Тесты необходимо поддерживать
   Характеристики
    ◦ Single responsibility
    ◦ Малый размер
    ◦ Изолированность
   Unit test != Integration test
   Fakes
   Mocks
   Stubs
   Dummies
   Technology stack
    ◦   ASP.NET MVC 3
    ◦   Wcf rest services
    ◦   Entity Framework 4.0
    ◦   EF POCO
    ◦   T4 Templates for Fake repository
    ◦   SQL Azure
   NUnit
   Moq
   Resharper
   dotCover
   Тестирование контроллеров
    ◦   Создать mock HttpContextBase
    ◦   Заполнить в контроллере ControllerContext
    ◦   Вызвать action
    ◦   Проверить результат
         Тип результата (ViewResult, RedirectToRouteResult)
         Имя View
         Корректность модели
   Setup




   Test ViewResult

   Test RedirectToRouteResult
   Тестирование routes
    ◦ Создать mock HttpContextBase
    ◦ Создать mock свойства context.Request.
      AppRelativeCurrentExecutionFilePath
    ◦ Вызвать GetRouteData
    ◦ Проверить результат:
      Route найден
      Controller
      Action
Test Driven Development in ASP.NET MVC 3
   Mocks + Fakes
   Fakes
    ◦ In-memory storage, заполняется с помощью
      ObjectMother
    ◦ Помогает протестировать Linq запросы
   Mocks
    ◦ Тестируем вызовы SaveChanges()
   Testability and Entity Framework 4.0
    http://msdn.microsoft.com/en-us/library/ff714955.aspx
   Mocks aren’t Stubs. Martin Fowler
     http://martinfowler.com/articles/mocksArentStubs.html
   ASP.NET MVC (Installation, tutorials)
   http://asp.net/mvc
   Moq
     http://code.google.com/p/moq/
   Kent Beck. Test Driven Development: By Example
    http://www.amazon.com/Test-Driven-Development-Kent-
    Beck/dp/0321146530/
   Вопросы и, надеюсь, ответы.




                                       Anton Vidishchev
                          Team Leader at Sigma Ukraine
                                                  MCPD
                               A.Vidishchev@gmail.com
                                      @antonvidishchev
Ad

Recommended

Автоматизируем тестирование UI с Ruby, Cucumber и Selenium
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium
SQALab
 
Web application framework
Web application framework
Viktor Chukhantsev
 
Причины и способы имитации back-end'а
Причины и способы имитации back-end'а
Oksana Avchinnikova
 
Как улучшить тесты на Selenium с помощью "визуального тестирования"?
Как улучшить тесты на Selenium с помощью "визуального тестирования"?
Oksana Avchinnikova
 
Scrum глазами тестировщика или как создать стратегию для любой задачи
Scrum глазами тестировщика или как создать стратегию для любой задачи
IT61
 
Организация процесса ручного тестирования
Организация процесса ручного тестирования
IT61
 
SQADAYS 21 Москва 2017
SQADAYS 21 Москва 2017
Adam Sandman
 
Seamy side of autotests
Seamy side of autotests
Anton Stepanenko
 
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QAFest
 
Speeding up UI tests, profiling of UI tests
Speeding up UI tests, profiling of UI tests
Anton Stepanenko
 
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
WrikeTechClub
 
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
IT61
 
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Andrey Rebrov
 
(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer
Yan Alexeenko
 
Rambler.iOS #5: TDD и VIPER
Rambler.iOS #5: TDD и VIPER
RAMBLER&Co
 
Тестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практик
SQALab
 
Functional Testing with Selenium
Functional Testing with Selenium
QA Club Kiev
 
Full stack веб-разработка используя C# и WebAssembly
Full stack веб-разработка используя C# и WebAssembly
Andrei Amialchenia
 
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
Badoo Development
 
AntonSaburov (Gemini-Systems) @ CodeCamp2011
AntonSaburov (Gemini-Systems) @ CodeCamp2011
CodeCamp
 
Integration / Acceptance тестирование с помощью Cucumber
Integration / Acceptance тестирование с помощью Cucumber
railsclub
 
The fast and the continuous
The fast and the continuous
SQALab
 
Использование игровой модели для выполнения сложных сценарных тестов
Использование игровой модели для выполнения сложных сценарных тестов
SQALab
 
Backbone js for expert fridays.pptx
Backbone js for expert fridays.pptx
Provectus
 
GUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test Studio
SQALab
 
Behavior Driven Development
Behavior Driven Development
Return on Intelligence
 
Как мы приручили демона или процесс тестирования демонов в Badoo
Как мы приручили демона или процесс тестирования демонов в Badoo
SQALab
 
Как играть без игрока
Как играть без игрока
SQALab
 
Тестирование приложений с помощью Visual studio 2010
Тестирование приложений с помощью Visual studio 2010
Anton Vidishchev
 
Test Driven Development in .NET Applications
Test Driven Development in .NET Applications
Anton Vidishchev
 

More Related Content

What's hot (20)

QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QAFest
 
Speeding up UI tests, profiling of UI tests
Speeding up UI tests, profiling of UI tests
Anton Stepanenko
 
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
WrikeTechClub
 
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
IT61
 
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Andrey Rebrov
 
(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer
Yan Alexeenko
 
Rambler.iOS #5: TDD и VIPER
Rambler.iOS #5: TDD и VIPER
RAMBLER&Co
 
Тестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практик
SQALab
 
Functional Testing with Selenium
Functional Testing with Selenium
QA Club Kiev
 
Full stack веб-разработка используя C# и WebAssembly
Full stack веб-разработка используя C# и WebAssembly
Andrei Amialchenia
 
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
Badoo Development
 
AntonSaburov (Gemini-Systems) @ CodeCamp2011
AntonSaburov (Gemini-Systems) @ CodeCamp2011
CodeCamp
 
Integration / Acceptance тестирование с помощью Cucumber
Integration / Acceptance тестирование с помощью Cucumber
railsclub
 
The fast and the continuous
The fast and the continuous
SQALab
 
Использование игровой модели для выполнения сложных сценарных тестов
Использование игровой модели для выполнения сложных сценарных тестов
SQALab
 
Backbone js for expert fridays.pptx
Backbone js for expert fridays.pptx
Provectus
 
GUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test Studio
SQALab
 
Behavior Driven Development
Behavior Driven Development
Return on Intelligence
 
Как мы приручили демона или процесс тестирования демонов в Badoo
Как мы приручили демона или процесс тестирования демонов в Badoo
SQALab
 
Как играть без игрока
Как играть без игрока
SQALab
 
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QAFest
 
Speeding up UI tests, profiling of UI tests
Speeding up UI tests, profiling of UI tests
Anton Stepanenko
 
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
WrikeTechClub
 
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
IT61
 
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Andrey Rebrov
 
(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer
Yan Alexeenko
 
Rambler.iOS #5: TDD и VIPER
Rambler.iOS #5: TDD и VIPER
RAMBLER&Co
 
Тестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практик
SQALab
 
Functional Testing with Selenium
Functional Testing with Selenium
QA Club Kiev
 
Full stack веб-разработка используя C# и WebAssembly
Full stack веб-разработка используя C# и WebAssembly
Andrei Amialchenia
 
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
Badoo Development
 
AntonSaburov (Gemini-Systems) @ CodeCamp2011
AntonSaburov (Gemini-Systems) @ CodeCamp2011
CodeCamp
 
Integration / Acceptance тестирование с помощью Cucumber
Integration / Acceptance тестирование с помощью Cucumber
railsclub
 
The fast and the continuous
The fast and the continuous
SQALab
 
Использование игровой модели для выполнения сложных сценарных тестов
Использование игровой модели для выполнения сложных сценарных тестов
SQALab
 
Backbone js for expert fridays.pptx
Backbone js for expert fridays.pptx
Provectus
 
GUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test Studio
SQALab
 
Как мы приручили демона или процесс тестирования демонов в Badoo
Как мы приручили демона или процесс тестирования демонов в Badoo
SQALab
 
Как играть без игрока
Как играть без игрока
SQALab
 

Viewers also liked (20)

Тестирование приложений с помощью Visual studio 2010
Тестирование приложений с помощью Visual studio 2010
Anton Vidishchev
 
Test Driven Development in .NET Applications
Test Driven Development in .NET Applications
Anton Vidishchev
 
Разработка мобильных приложений с помощью HTML5 и JavaScript
Разработка мобильных приложений с помощью HTML5 и JavaScript
Anton Vidishchev
 
Идентификация и контроль доступа в приложениях Windows Azure
Идентификация и контроль доступа в приложениях Windows Azure
Anton Vidishchev
 
Countable and uncountable nouns
Countable and uncountable nouns
teacherpepe
 
Continuous Deployments in Azure Web Sites
Continuous Deployments in Azure Web Sites
Anton Vidishchev
 
Traffalgar square, london
Traffalgar square, london
teacherpepe
 
Capabilties Deck_SlideShare
Capabilties Deck_SlideShare
Denise Garciano Nafarrete
 
Windows Azure Overview (DevLab Odessa)
Windows Azure Overview (DevLab Odessa)
Anton Vidishchev
 
The Do's & Don'ts to Social Media by Buzzsmith
The Do's & Don'ts to Social Media by Buzzsmith
Denise Garciano Nafarrete
 
La lectura y las competencias docentes
La lectura y las competencias docentes
René Victores
 
Verb to be for slow learners
Verb to be for slow learners
teacherpepe
 
New Features in Windows Azure
New Features in Windows Azure
Anton Vidishchev
 
Howard gardner’s theory of multiple intelligences
Howard gardner’s theory of multiple intelligences
Loftus
 
Windows Azure Storage: Overview, Internals, and Best Practices
Windows Azure Storage: Overview, Internals, and Best Practices
Anton Vidishchev
 
Strategi pengajaran pencapaian rendah
Strategi pengajaran pencapaian rendah
jamilahja81
 
Windows Azure Active Directory: единая система безопасности для облачных серв...
Windows Azure Active Directory: единая система безопасности для облачных серв...
Anton Vidishchev
 
Alexia's References
Alexia's References
Alexia Prisbrey
 
Steb by step evan kim
Steb by step evan kim
iRiceNoodles
 
Flores emilia
Flores emilia
yanina vera
 
Тестирование приложений с помощью Visual studio 2010
Тестирование приложений с помощью Visual studio 2010
Anton Vidishchev
 
Test Driven Development in .NET Applications
Test Driven Development in .NET Applications
Anton Vidishchev
 
Разработка мобильных приложений с помощью HTML5 и JavaScript
Разработка мобильных приложений с помощью HTML5 и JavaScript
Anton Vidishchev
 
Идентификация и контроль доступа в приложениях Windows Azure
Идентификация и контроль доступа в приложениях Windows Azure
Anton Vidishchev
 
Countable and uncountable nouns
Countable and uncountable nouns
teacherpepe
 
Continuous Deployments in Azure Web Sites
Continuous Deployments in Azure Web Sites
Anton Vidishchev
 
Traffalgar square, london
Traffalgar square, london
teacherpepe
 
Windows Azure Overview (DevLab Odessa)
Windows Azure Overview (DevLab Odessa)
Anton Vidishchev
 
The Do's & Don'ts to Social Media by Buzzsmith
The Do's & Don'ts to Social Media by Buzzsmith
Denise Garciano Nafarrete
 
La lectura y las competencias docentes
La lectura y las competencias docentes
René Victores
 
Verb to be for slow learners
Verb to be for slow learners
teacherpepe
 
New Features in Windows Azure
New Features in Windows Azure
Anton Vidishchev
 
Howard gardner’s theory of multiple intelligences
Howard gardner’s theory of multiple intelligences
Loftus
 
Windows Azure Storage: Overview, Internals, and Best Practices
Windows Azure Storage: Overview, Internals, and Best Practices
Anton Vidishchev
 
Strategi pengajaran pencapaian rendah
Strategi pengajaran pencapaian rendah
jamilahja81
 
Windows Azure Active Directory: единая система безопасности для облачных серв...
Windows Azure Active Directory: единая система безопасности для облачных серв...
Anton Vidishchev
 
Steb by step evan kim
Steb by step evan kim
iRiceNoodles
 
Ad

Similar to Test Driven Development in ASP.NET MVC 3 (20)

Test driven development in net
Test driven development in net
Alex Tumanoff
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
GetDev.NET
 
Fubu mvc -- нафига оно мне
Fubu mvc -- нафига оно мне
Serhiy Kalinets
 
CiklumNetSat17032012SergeyKalinets- FubuMVC
CiklumNetSat17032012SergeyKalinets- FubuMVC
Ciklum Ukraine
 
Автотесты и образ мышления
Автотесты и образ мышления
Andrei Zubov
 
Использование Mock-объектов в TDD на платформе .NET
Использование Mock-объектов в TDD на платформе .NET
Pavel Treshnikov
 
А вы знаете что тестируют ваши тесты?
А вы знаете что тестируют ваши тесты?
SQALab
 
Do you know what you are testing?
Do you know what you are testing?
Mikalai Alimenkou
 
Автоматическое тестирование Web api
Автоматическое тестирование Web api
Igor Lyubin
 
Тестируем код с Visual Studio 2012 - XP Days Ukraine 2012
Тестируем код с Visual Studio 2012 - XP Days Ukraine 2012
Dmytro Mindra
 
Паттерны проектирования в автотестах [NoBugs WTF PRO уровень]
Паттерны проектирования в автотестах [NoBugs WTF PRO уровень]
NoBugs
 
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...
Tech Talks @NSU
 
ASP.NET MVC 3 Anton Vidishchev
ASP.NET MVC 3 Anton Vidishchev
Alex Tumanoff
 
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...
WDDay
 
Тестирование крупных проектов командой из одного тестировщика
Тестирование крупных проектов командой из одного тестировщика
SQALab
 
Тестирование крупного проекта командой из одного тестировщика
Тестирование крупного проекта командой из одного тестировщика
Zestranec
 
C# Desktop. Занятие 17.
C# Desktop. Занятие 17.
Igor Shkulipa
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя система
Igor Lyubin
 
Тестирование веб-проектов в Agile
Тестирование веб-проектов в Agile
SQALab
 
Sqadays 8-barancev
Sqadays 8-barancev
Alexei Lupan
 
Test driven development in net
Test driven development in net
Alex Tumanoff
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
GetDev.NET
 
Fubu mvc -- нафига оно мне
Fubu mvc -- нафига оно мне
Serhiy Kalinets
 
CiklumNetSat17032012SergeyKalinets- FubuMVC
CiklumNetSat17032012SergeyKalinets- FubuMVC
Ciklum Ukraine
 
Автотесты и образ мышления
Автотесты и образ мышления
Andrei Zubov
 
Использование Mock-объектов в TDD на платформе .NET
Использование Mock-объектов в TDD на платформе .NET
Pavel Treshnikov
 
А вы знаете что тестируют ваши тесты?
А вы знаете что тестируют ваши тесты?
SQALab
 
Do you know what you are testing?
Do you know what you are testing?
Mikalai Alimenkou
 
Автоматическое тестирование Web api
Автоматическое тестирование Web api
Igor Lyubin
 
Тестируем код с Visual Studio 2012 - XP Days Ukraine 2012
Тестируем код с Visual Studio 2012 - XP Days Ukraine 2012
Dmytro Mindra
 
Паттерны проектирования в автотестах [NoBugs WTF PRO уровень]
Паттерны проектирования в автотестах [NoBugs WTF PRO уровень]
NoBugs
 
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...
Tech Talks @NSU
 
ASP.NET MVC 3 Anton Vidishchev
ASP.NET MVC 3 Anton Vidishchev
Alex Tumanoff
 
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...
WDDay
 
Тестирование крупных проектов командой из одного тестировщика
Тестирование крупных проектов командой из одного тестировщика
SQALab
 
Тестирование крупного проекта командой из одного тестировщика
Тестирование крупного проекта командой из одного тестировщика
Zestranec
 
C# Desktop. Занятие 17.
C# Desktop. Занятие 17.
Igor Shkulipa
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя система
Igor Lyubin
 
Тестирование веб-проектов в Agile
Тестирование веб-проектов в Agile
SQALab
 
Sqadays 8-barancev
Sqadays 8-barancev
Alexei Lupan
 
Ad

Test Driven Development in ASP.NET MVC 3

  • 1. Anton Vidishchev Team Leader at Sigma Ukraine MCPD [email protected] @antonvidishchev
  • 2. Низкий контроль над разметкой  Сложность тестирования ◦ Жесткая привязка к контексту ◦ Page Lifecycle ◦ ViewState
  • 3. Model View Controller
  • 4. Полный контроль над разметкой  SEO-friendly  Широкие возможности тестирования  Низкая связанность между компонентами
  • 5. Razor ViewEngine  NuGet  HTML Helpers  Dependency Injection  Валидация модели
  • 6. Безсессионные контроллеры  Свойство ViewBag  JSON Model Binding  Partial Page Output Cache  Global Action Filters  Новые типы Action Result
  • 9. Меньше времени тратится на отладку  Стимулирует стройность архитектуры  Повышает уверенность в написанном коде
  • 10. Сложность тестирования БД, сервисов  Ошибочный тест ведет к ошибочному коду  Тесты необходимо поддерживать
  • 11. Характеристики ◦ Single responsibility ◦ Малый размер ◦ Изолированность  Unit test != Integration test
  • 12. Fakes  Mocks  Stubs  Dummies
  • 13. Technology stack ◦ ASP.NET MVC 3 ◦ Wcf rest services ◦ Entity Framework 4.0 ◦ EF POCO ◦ T4 Templates for Fake repository ◦ SQL Azure
  • 14. NUnit  Moq  Resharper  dotCover
  • 15. Тестирование контроллеров ◦ Создать mock HttpContextBase ◦ Заполнить в контроллере ControllerContext ◦ Вызвать action ◦ Проверить результат  Тип результата (ViewResult, RedirectToRouteResult)  Имя View  Корректность модели
  • 16. Setup  Test ViewResult  Test RedirectToRouteResult
  • 17. Тестирование routes ◦ Создать mock HttpContextBase ◦ Создать mock свойства context.Request. AppRelativeCurrentExecutionFilePath ◦ Вызвать GetRouteData ◦ Проверить результат:  Route найден  Controller  Action
  • 19. Mocks + Fakes  Fakes ◦ In-memory storage, заполняется с помощью ObjectMother ◦ Помогает протестировать Linq запросы  Mocks ◦ Тестируем вызовы SaveChanges()
  • 20. Testability and Entity Framework 4.0 http://msdn.microsoft.com/en-us/library/ff714955.aspx  Mocks aren’t Stubs. Martin Fowler http://martinfowler.com/articles/mocksArentStubs.html  ASP.NET MVC (Installation, tutorials)  http://asp.net/mvc  Moq http://code.google.com/p/moq/  Kent Beck. Test Driven Development: By Example http://www.amazon.com/Test-Driven-Development-Kent- Beck/dp/0321146530/
  • 21. Вопросы и, надеюсь, ответы.  Anton Vidishchev  Team Leader at Sigma Ukraine  MCPD  [email protected]  @antonvidishchev