SlideShare a Scribd company logo
1 of 21
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
   Меньше времени тратится на отладку
   Стимулирует стройность архитектуры
   Повышает уверенность в написанном коде
   Сложность тестирования БД, сервисов
   Ошибочный тест ведет к ошибочному коду
   Тесты необходимо поддерживать
   Характеристики
    ◦ 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
   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

More Related Content

What's hot

QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестированияQA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестированияQAFest
 
Speeding up UI tests, profiling of UI tests
Speeding up UI tests, profiling of UI testsSpeeding up UI tests, profiling of UI tests
Speeding up UI tests, profiling of UI testsAnton Stepanenko
 
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...WrikeTechClub
 
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNgДело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNgIT61
 
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...Andrey Rebrov
 
(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA EngineerYan Alexeenko
 
Rambler.iOS #5: TDD и VIPER
Rambler.iOS #5: TDD и VIPERRambler.iOS #5: TDD и VIPER
Rambler.iOS #5: TDD и VIPERRAMBLER&Co
 
Тестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практикТестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практикSQALab
 
Functional Testing with Selenium
Functional Testing with SeleniumFunctional Testing with Selenium
Functional Testing with SeleniumQA Club Kiev
 
Full stack веб-разработка используя C# и WebAssembly
Full stack веб-разработка используя C# и WebAssemblyFull stack веб-разработка используя C# и WebAssembly
Full stack веб-разработка используя C# и WebAssemblyAndrei Amialchenia
 
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...Badoo Development
 
AntonSaburov (Gemini-Systems) @ CodeCamp2011
AntonSaburov (Gemini-Systems) @ CodeCamp2011AntonSaburov (Gemini-Systems) @ CodeCamp2011
AntonSaburov (Gemini-Systems) @ CodeCamp2011CodeCamp
 
Integration / Acceptance тестирование с помощью Cucumber
Integration / Acceptance тестирование с помощью CucumberIntegration / Acceptance тестирование с помощью Cucumber
Integration / Acceptance тестирование с помощью Cucumberrailsclub
 
The fast and the continuous
The fast and the continuousThe fast and the continuous
The fast and the continuousSQALab
 
Использование игровой модели для выполнения сложных сценарных тестов
Использование игровой модели для выполнения сложных сценарных тестовИспользование игровой модели для выполнения сложных сценарных тестов
Использование игровой модели для выполнения сложных сценарных тестовSQALab
 
Backbone js for expert fridays.pptx
Backbone js for  expert fridays.pptxBackbone js for  expert fridays.pptx
Backbone js for expert fridays.pptxProvectus
 
GUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioGUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioSQALab
 
Как мы приручили демона или процесс тестирования демонов в Badoo
Как мы приручили демона или процесс тестирования демонов в BadooКак мы приручили демона или процесс тестирования демонов в Badoo
Как мы приручили демона или процесс тестирования демонов в BadooSQALab
 
Как играть без игрока
Как играть без игрокаКак играть без игрока
Как играть без игрокаSQALab
 

What's hot (20)

QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестированияQA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
 
Speeding up UI tests, profiling of UI tests
Speeding up UI tests, profiling of UI testsSpeeding up UI tests, profiling of UI tests
Speeding up UI tests, profiling of UI tests
 
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
 
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNgДело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
 
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
 
(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer
 
Rambler.iOS #5: TDD и VIPER
Rambler.iOS #5: TDD и VIPERRambler.iOS #5: TDD и VIPER
Rambler.iOS #5: TDD и VIPER
 
Тестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практикТестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практик
 
Functional Testing with Selenium
Functional Testing with SeleniumFunctional Testing with Selenium
Functional Testing with Selenium
 
Full stack веб-разработка используя C# и WebAssembly
Full stack веб-разработка используя C# и WebAssemblyFull stack веб-разработка используя C# и WebAssembly
Full stack веб-разработка используя C# и WebAssembly
 
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
 
AntonSaburov (Gemini-Systems) @ CodeCamp2011
AntonSaburov (Gemini-Systems) @ CodeCamp2011AntonSaburov (Gemini-Systems) @ CodeCamp2011
AntonSaburov (Gemini-Systems) @ CodeCamp2011
 
Integration / Acceptance тестирование с помощью Cucumber
Integration / Acceptance тестирование с помощью CucumberIntegration / Acceptance тестирование с помощью Cucumber
Integration / Acceptance тестирование с помощью Cucumber
 
The fast and the continuous
The fast and the continuousThe fast and the continuous
The fast and the continuous
 
Использование игровой модели для выполнения сложных сценарных тестов
Использование игровой модели для выполнения сложных сценарных тестовИспользование игровой модели для выполнения сложных сценарных тестов
Использование игровой модели для выполнения сложных сценарных тестов
 
Backbone js for expert fridays.pptx
Backbone js for  expert fridays.pptxBackbone js for  expert fridays.pptx
Backbone js for expert fridays.pptx
 
GUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioGUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test Studio
 
Behavior Driven Development
Behavior Driven DevelopmentBehavior Driven Development
Behavior Driven Development
 
Как мы приручили демона или процесс тестирования демонов в Badoo
Как мы приручили демона или процесс тестирования демонов в BadooКак мы приручили демона или процесс тестирования демонов в Badoo
Как мы приручили демона или процесс тестирования демонов в Badoo
 
Как играть без игрока
Как играть без игрокаКак играть без игрока
Как играть без игрока
 

Viewers also liked

Тестирование приложений с помощью Visual studio 2010
Тестирование приложений с помощью Visual studio 2010Тестирование приложений с помощью Visual studio 2010
Тестирование приложений с помощью Visual studio 2010Anton Vidishchev
 
Test Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsTest Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsAnton Vidishchev
 
Разработка мобильных приложений с помощью HTML5 и JavaScript
Разработка мобильных приложений с помощью HTML5 и JavaScriptРазработка мобильных приложений с помощью HTML5 и JavaScript
Разработка мобильных приложений с помощью HTML5 и JavaScriptAnton Vidishchev
 
Идентификация и контроль доступа в приложениях Windows Azure
Идентификация и контроль доступа в приложениях Windows AzureИдентификация и контроль доступа в приложениях Windows Azure
Идентификация и контроль доступа в приложениях Windows AzureAnton Vidishchev
 
Countable and uncountable nouns
Countable and uncountable nounsCountable and uncountable nouns
Countable and uncountable nounsteacherpepe
 
Continuous Deployments in Azure Web Sites
Continuous Deployments in Azure Web SitesContinuous Deployments in Azure Web Sites
Continuous Deployments in Azure Web SitesAnton Vidishchev
 
Traffalgar square, london
Traffalgar square, londonTraffalgar square, london
Traffalgar square, londonteacherpepe
 
Windows Azure Overview (DevLab Odessa)
Windows Azure Overview (DevLab Odessa)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 BuzzsmithThe Do's & Don'ts to Social Media by Buzzsmith
The Do's & Don'ts to Social Media by BuzzsmithDenise Garciano Nafarrete
 
La lectura y las competencias docentes
La lectura y las competencias docentesLa lectura y las competencias docentes
La lectura y las competencias docentesRené Victores
 
Verb to be for slow learners
Verb to be for slow learnersVerb to be for slow learners
Verb to be for slow learnersteacherpepe
 
New Features in Windows Azure
New Features in Windows AzureNew Features in Windows Azure
New Features in Windows AzureAnton Vidishchev
 
Howard gardner’s theory of multiple intelligences
Howard gardner’s theory of multiple intelligencesHoward gardner’s theory of multiple intelligences
Howard gardner’s theory of multiple intelligencesLoftus
 
Windows Azure Storage: Overview, Internals, and Best Practices
Windows Azure Storage: Overview, Internals, and Best PracticesWindows Azure Storage: Overview, Internals, and Best Practices
Windows Azure Storage: Overview, Internals, and Best PracticesAnton Vidishchev
 
Strategi pengajaran pencapaian rendah
Strategi pengajaran pencapaian rendahStrategi pengajaran pencapaian rendah
Strategi pengajaran pencapaian rendahjamilahja81
 
Windows Azure Active Directory: единая система безопасности для облачных серв...
Windows Azure Active Directory: единая система безопасности для облачных серв...Windows Azure Active Directory: единая система безопасности для облачных серв...
Windows Azure Active Directory: единая система безопасности для облачных серв...Anton Vidishchev
 
Steb by step evan kim
Steb by step evan kimSteb by step evan kim
Steb by step evan kimiRiceNoodles
 

Viewers also liked (20)

Тестирование приложений с помощью Visual studio 2010
Тестирование приложений с помощью Visual studio 2010Тестирование приложений с помощью Visual studio 2010
Тестирование приложений с помощью Visual studio 2010
 
Test Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsTest Driven Development in .NET Applications
Test Driven Development in .NET Applications
 
Разработка мобильных приложений с помощью HTML5 и JavaScript
Разработка мобильных приложений с помощью HTML5 и JavaScriptРазработка мобильных приложений с помощью HTML5 и JavaScript
Разработка мобильных приложений с помощью HTML5 и JavaScript
 
Идентификация и контроль доступа в приложениях Windows Azure
Идентификация и контроль доступа в приложениях Windows AzureИдентификация и контроль доступа в приложениях Windows Azure
Идентификация и контроль доступа в приложениях Windows Azure
 
Countable and uncountable nouns
Countable and uncountable nounsCountable and uncountable nouns
Countable and uncountable nouns
 
Continuous Deployments in Azure Web Sites
Continuous Deployments in Azure Web SitesContinuous Deployments in Azure Web Sites
Continuous Deployments in Azure Web Sites
 
Traffalgar square, london
Traffalgar square, londonTraffalgar square, london
Traffalgar square, london
 
Capabilties Deck_SlideShare
Capabilties Deck_SlideShareCapabilties Deck_SlideShare
Capabilties Deck_SlideShare
 
Windows Azure Overview (DevLab Odessa)
Windows Azure Overview (DevLab Odessa)Windows Azure Overview (DevLab Odessa)
Windows Azure Overview (DevLab Odessa)
 
The Do's & Don'ts to Social Media by Buzzsmith
The Do's & Don'ts to Social Media by BuzzsmithThe Do's & Don'ts to Social Media by Buzzsmith
The Do's & Don'ts to Social Media by Buzzsmith
 
La lectura y las competencias docentes
La lectura y las competencias docentesLa lectura y las competencias docentes
La lectura y las competencias docentes
 
Verb to be for slow learners
Verb to be for slow learnersVerb to be for slow learners
Verb to be for slow learners
 
New Features in Windows Azure
New Features in Windows AzureNew Features in Windows Azure
New Features in Windows Azure
 
Howard gardner’s theory of multiple intelligences
Howard gardner’s theory of multiple intelligencesHoward gardner’s theory of multiple intelligences
Howard gardner’s theory of multiple intelligences
 
Windows Azure Storage: Overview, Internals, and Best Practices
Windows Azure Storage: Overview, Internals, and Best PracticesWindows Azure Storage: Overview, Internals, and Best Practices
Windows Azure Storage: Overview, Internals, and Best Practices
 
Strategi pengajaran pencapaian rendah
Strategi pengajaran pencapaian rendahStrategi pengajaran pencapaian rendah
Strategi pengajaran pencapaian rendah
 
Windows Azure Active Directory: единая система безопасности для облачных серв...
Windows Azure Active Directory: единая система безопасности для облачных серв...Windows Azure Active Directory: единая система безопасности для облачных серв...
Windows Azure Active Directory: единая система безопасности для облачных серв...
 
Alexia's References
Alexia's ReferencesAlexia's References
Alexia's References
 
Steb by step evan kim
Steb by step evan kimSteb by step evan kim
Steb by step evan kim
 
Flores emilia
Flores emiliaFlores emilia
Flores emilia
 

Similar to Test Driven Development in ASP.NET MVC 3

ASP.NET MVC 3 Anton Vidishchev
ASP.NET MVC 3 Anton VidishchevASP.NET MVC 3 Anton Vidishchev
ASP.NET MVC 3 Anton VidishchevAlex Tumanoff
 
Оптимизация производительности и нагрузочное тестирование в среде Visual Stud...
Оптимизация производительности и нагрузочное тестирование в среде Visual Stud...Оптимизация производительности и нагрузочное тестирование в среде Visual Stud...
Оптимизация производительности и нагрузочное тестирование в среде Visual Stud...Dmitry Andreev
 
Great functional testing with WebDriver and Thucydides
Great functional testing with WebDriver and ThucydidesGreat functional testing with WebDriver and Thucydides
Great functional testing with WebDriver and ThucydidesMikalai Alimenkou
 
The Old New ASP.NET
The Old New ASP.NETThe Old New ASP.NET
The Old New ASP.NETVitaly Baum
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCGetDev.NET
 
Do you know what you are testing?
Do you know what you are testing?Do you know what you are testing?
Do you know what you are testing?Mikalai Alimenkou
 
А вы знаете что тестируют ваши тесты?
А вы знаете что тестируют ваши тесты?А вы знаете что тестируют ваши тесты?
А вы знаете что тестируют ваши тесты?SQALab
 
Simonova CSEDays
Simonova CSEDaysSimonova CSEDays
Simonova CSEDaysLiloSEA
 
Katerina Simonova CSEDays
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDaysLiloSEA
 
Katerina Simonova CSEDays
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDaysLiloSEA
 
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiРазработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiSoftengi
 
Андрей Лазарев “Архітектура тестування Enterprise Web додатків”
Андрей Лазарев “Архітектура тестування Enterprise Web додатків”Андрей Лазарев “Архітектура тестування Enterprise Web додатків”
Андрей Лазарев “Архітектура тестування Enterprise Web додатків”Dakiry
 
Готовим Docker для Автоматизации Тестирования
Готовим Docker для Автоматизации ТестированияГотовим Docker для Автоматизации Тестирования
Готовим Docker для Автоматизации ТестированияCOMAQA.BY
 
Web application testing architecture
Web application testing architectureWeb application testing architecture
Web application testing architectureAndrey Lazarev
 
Simonova sql server-enginetesting
Simonova sql server-enginetestingSimonova sql server-enginetesting
Simonova sql server-enginetestingLiloSEA
 
Тестирование осень 2013 лекция 4
Тестирование осень 2013 лекция 4Тестирование осень 2013 лекция 4
Тестирование осень 2013 лекция 4Technopark
 

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

ASP.NET MVC: new era?
ASP.NET MVC: new era?ASP.NET MVC: new era?
ASP.NET MVC: new era?
 
ASP.NET MVC 3 Anton Vidishchev
ASP.NET MVC 3 Anton VidishchevASP.NET MVC 3 Anton Vidishchev
ASP.NET MVC 3 Anton Vidishchev
 
Оптимизация производительности и нагрузочное тестирование в среде Visual Stud...
Оптимизация производительности и нагрузочное тестирование в среде Visual Stud...Оптимизация производительности и нагрузочное тестирование в среде Visual Stud...
Оптимизация производительности и нагрузочное тестирование в среде Visual Stud...
 
Great functional testing with WebDriver and Thucydides
Great functional testing with WebDriver and ThucydidesGreat functional testing with WebDriver and Thucydides
Great functional testing with WebDriver and Thucydides
 
The Old New ASP.NET
The Old New ASP.NETThe Old New ASP.NET
The Old New ASP.NET
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
 
Do you know what you are testing?
Do you know what you are testing?Do you know what you are testing?
Do you know what you are testing?
 
А вы знаете что тестируют ваши тесты?
А вы знаете что тестируют ваши тесты?А вы знаете что тестируют ваши тесты?
А вы знаете что тестируют ваши тесты?
 
ASP.NET MVC 3
ASP.NET MVC 3ASP.NET MVC 3
ASP.NET MVC 3
 
Simonova sql server-enginetesting
Simonova sql server-enginetestingSimonova sql server-enginetesting
Simonova sql server-enginetesting
 
Simonova CSEDays
Simonova CSEDaysSimonova CSEDays
Simonova CSEDays
 
Katerina Simonova CSEDays
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDays
 
Katerina Simonova CSEDays
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDays
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiРазработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
 
Андрей Лазарев “Архітектура тестування Enterprise Web додатків”
Андрей Лазарев “Архітектура тестування Enterprise Web додатків”Андрей Лазарев “Архітектура тестування Enterprise Web додатків”
Андрей Лазарев “Архітектура тестування Enterprise Web додатків”
 
Готовим Docker для Автоматизации Тестирования
Готовим Docker для Автоматизации ТестированияГотовим Docker для Автоматизации Тестирования
Готовим Docker для Автоматизации Тестирования
 
Web application testing architecture
Web application testing architectureWeb application testing architecture
Web application testing architecture
 
Simonova sql server-enginetesting
Simonova sql server-enginetestingSimonova sql server-enginetesting
Simonova sql server-enginetesting
 
Тестирование осень 2013 лекция 4
Тестирование осень 2013 лекция 4Тестирование осень 2013 лекция 4
Тестирование осень 2013 лекция 4
 

Test Driven Development in ASP.NET MVC 3

  • 1. Anton Vidishchev Team Leader at Sigma Ukraine MCPD A.Vidishchev@gmail.com @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
  • 7.
  • 8.
  • 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
  • 18.
  • 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  A.Vidishchev@gmail.com  @antonvidishchev