SlideShare a Scribd company logo
   Пару слов про TDD
   Рекомендации по написанию тестов
   Что такое моки
   Когда и каким образом использовать моки
   Пример тестов с использованием
    фреймворков
     NUnit + NBehave
     Moq
     TestDox
Разработка через тестирование (test-driven
development, TDD) — техника разработки
программного обеспечения, которая основывается
на повторении очень коротких циклов разработки:

1. сначала пишется тест, покрывающий желаемое
   изменение
2. затем пишется код, который позволит пройти
   тест
3. и под конец проводится рефакторинг нового
   кода к соответствующим стандартам.
   Тест должен «говорить» какой сценарий
    он проверяет

   Наименование теста пишется в нотации
    pascal-case

Пример:
 Message_Should_Be_Deleted_After_Send
   Один тест проверяет один короткий
    сценарий работы класса/набора
    взаимодействующих классов

   В одном тесте содержится только одна
    проверка assert
Моки – это автоматически генерируемые
заглушки для интерфейсов и классов.

Моки позволяют моделировать поведение
объекта:
  Результаты работы методов
  Генерацию событий, обратный вызов
   методов
  Обращение к методам и свойствам класса
   Изоляция тестируемого кода – имитация
    БД.

   Имитация ненаписанного кода.

   Тестирование делегирования – проверка
    последовательности вызовов между
    классами.
   Возврат определенных значений метода
    объекта.

   Генерацию событий объекта.

   Верификацию количества вызовов
    методов.
Виды unit-
         тестов



  Тесты            Тесты
состояния     взаимодействия
   Генератор отчетов умеет создавать отчет
    на выбранную дату
   Отчеты могут быть созданы как за текущие
    сутки, так и за прошлые
   Формирование отчетов за будущее
    недоступно
   Отчеты сформированный в нечетные дни
    должны отправляться по почте
   Быстрый старт по библиотеке Moq –
    http://code.google.com/p/moq/wiki/QuickStart
   Александр Бындю «TDD для начинающих»
    – http://vimeo.com/9541997
   Андрей Бибичев «Быстрое введение в TDD
    от А до Я» – http://www.slideshare.net/biBIGine/fast-intro-into-tdd
   Написание unit-тестов
     Рекомендации по оформлению тестов
     Тестирование генерации исключений, событий
   Использование фреймворка Moq
     Имитация работы объекта в зависимости от
      параметра
     Верификация вызовов
   Трёшников Павел
     Ведущий разработчик СМС-ИТ
        ▪ www.sms-automation.ru

     e-mail: treshnikov@gmail.com
     twitter: @treshnikov

More Related Content

What's hot

Rambler.iOS #3: Test-Driven Development в iOS
Rambler.iOS #3: Test-Driven Development в iOSRambler.iOS #3: Test-Driven Development в iOS
Rambler.iOS #3: Test-Driven Development в iOS
RAMBLER&Co
 
Фофанов Илья - Лучшие практики проектирования и реализации API на C#
Фофанов Илья - Лучшие практики проектирования и реализации API на C#Фофанов Илья - Лучшие практики проектирования и реализации API на C#
Фофанов Илья - Лучшие практики проектирования и реализации API на C#
Elias Fofanov
 
Сергей Кащенко - Опыт внедрения метрик
Сергей Кащенко - Опыт внедрения метрикСергей Кащенко - Опыт внедрения метрик
Сергей Кащенко - Опыт внедрения метрик
Luxoft Education Center
 
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...Sergey Ponomarev
 
Инструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщикаИнструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщика
SQALab
 
Практическое применение принципа инверсии зависимостей на примере Ruby
Практическое применение принципа инверсии зависимостей на примере RubyПрактическое применение принципа инверсии зависимостей на примере Ruby
Практическое применение принципа инверсии зависимостей на примере Ruby
Provectus
 
Двухкратный публичный code review, Евгения Фирсова (Яндекс)
Двухкратный публичный code review, Евгения Фирсова (Яндекс)Двухкратный публичный code review, Евгения Фирсова (Яндекс)
Двухкратный публичный code review, Евгения Фирсова (Яндекс)Ontico
 
КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения
Iosif Itkin
 
Организация процесса ручного тестирования
Организация процесса ручного тестированияОрганизация процесса ручного тестирования
Организация процесса ручного тестирования
IT61
 
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
SQALab
 
Sqadays 8-barancev
Sqadays 8-barancevSqadays 8-barancev
Sqadays 8-barancevAlexei Lupan
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
Dima Denisenko
 
Выбор и тестирование Ngfw. Опыт Rambler
Выбор и тестирование Ngfw. Опыт RamblerВыбор и тестирование Ngfw. Опыт Rambler
Выбор и тестирование Ngfw. Опыт Rambler
Konstantin Sverdlov
 
QA Лекция2
QA Лекция2QA Лекция2
QA Лекция2
Svetlana Stoyan
 
лекция4 qa
лекция4 qaлекция4 qa
лекция4 qa
Svetlana Stoyan
 
Тестирование осень 2013 лекция 3
Тестирование осень 2013 лекция 3Тестирование осень 2013 лекция 3
Тестирование осень 2013 лекция 3Technopark
 
лекция3 QA
лекция3 QAлекция3 QA
лекция3 QA
Svetlana Stoyan
 
ClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDDClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDD
Club QA Kostroma
 
Нагрузочное тестирование: Нестандартные методы анализа потока данных в прилож...
Нагрузочное тестирование: Нестандартные методы анализа потока данных в прилож...Нагрузочное тестирование: Нестандартные методы анализа потока данных в прилож...
Нагрузочное тестирование: Нестандартные методы анализа потока данных в прилож...
SQALab
 
TMPA-2013 Itsykson: Java Program Analysis
TMPA-2013 Itsykson: Java Program AnalysisTMPA-2013 Itsykson: Java Program Analysis
TMPA-2013 Itsykson: Java Program Analysis
Iosif Itkin
 

What's hot (20)

Rambler.iOS #3: Test-Driven Development в iOS
Rambler.iOS #3: Test-Driven Development в iOSRambler.iOS #3: Test-Driven Development в iOS
Rambler.iOS #3: Test-Driven Development в iOS
 
Фофанов Илья - Лучшие практики проектирования и реализации API на C#
Фофанов Илья - Лучшие практики проектирования и реализации API на C#Фофанов Илья - Лучшие практики проектирования и реализации API на C#
Фофанов Илья - Лучшие практики проектирования и реализации API на C#
 
Сергей Кащенко - Опыт внедрения метрик
Сергей Кащенко - Опыт внедрения метрикСергей Кащенко - Опыт внедрения метрик
Сергей Кащенко - Опыт внедрения метрик
 
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
 
Инструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщикаИнструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщика
 
Практическое применение принципа инверсии зависимостей на примере Ruby
Практическое применение принципа инверсии зависимостей на примере RubyПрактическое применение принципа инверсии зависимостей на примере Ruby
Практическое применение принципа инверсии зависимостей на примере Ruby
 
Двухкратный публичный code review, Евгения Фирсова (Яндекс)
Двухкратный публичный code review, Евгения Фирсова (Яндекс)Двухкратный публичный code review, Евгения Фирсова (Яндекс)
Двухкратный публичный code review, Евгения Фирсова (Яндекс)
 
КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения
 
Организация процесса ручного тестирования
Организация процесса ручного тестированияОрганизация процесса ручного тестирования
Организация процесса ручного тестирования
 
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
 
Sqadays 8-barancev
Sqadays 8-barancevSqadays 8-barancev
Sqadays 8-barancev
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Выбор и тестирование Ngfw. Опыт Rambler
Выбор и тестирование Ngfw. Опыт RamblerВыбор и тестирование Ngfw. Опыт Rambler
Выбор и тестирование Ngfw. Опыт Rambler
 
QA Лекция2
QA Лекция2QA Лекция2
QA Лекция2
 
лекция4 qa
лекция4 qaлекция4 qa
лекция4 qa
 
Тестирование осень 2013 лекция 3
Тестирование осень 2013 лекция 3Тестирование осень 2013 лекция 3
Тестирование осень 2013 лекция 3
 
лекция3 QA
лекция3 QAлекция3 QA
лекция3 QA
 
ClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDDClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDD
 
Нагрузочное тестирование: Нестандартные методы анализа потока данных в прилож...
Нагрузочное тестирование: Нестандартные методы анализа потока данных в прилож...Нагрузочное тестирование: Нестандартные методы анализа потока данных в прилож...
Нагрузочное тестирование: Нестандартные методы анализа потока данных в прилож...
 
TMPA-2013 Itsykson: Java Program Analysis
TMPA-2013 Itsykson: Java Program AnalysisTMPA-2013 Itsykson: Java Program Analysis
TMPA-2013 Itsykson: Java Program Analysis
 

Viewers also liked

Использование Mock объектов в модульном тестировании
Использование Mock объектов в модульном тестированииИспользование Mock объектов в модульном тестировании
Использование Mock объектов в модульном тестированииGetDev.NET
 
Быстрое введение в TDD от А до Я
Быстрое введение в TDD от А до ЯБыстрое введение в TDD от А до Я
Быстрое введение в TDD от А до Я
Andrey Bibichev
 
SOLID – принципы объектно-ориентированного дизайна
SOLID – принципы объектно-ориентированного дизайнаSOLID – принципы объектно-ориентированного дизайна
SOLID – принципы объектно-ориентированного дизайна
Pavel Treshnikov
 
Разработка приложений работы с данными при помощи WPF
Разработка приложений работы с данными при помощи WPFРазработка приложений работы с данными при помощи WPF
Разработка приложений работы с данными при помощи WPF
Pavel Treshnikov
 
Working with .NET Threads
Working with .NET ThreadsWorking with .NET Threads
Working with .NET Threads
Pavel Treshnikov
 
ПАК Мониторинг - краткое описание системы
ПАК Мониторинг - краткое описание системыПАК Мониторинг - краткое описание системы
ПАК Мониторинг - краткое описание системы
Pavel Treshnikov
 
Системы контроля версий
Системы контроля версийСистемы контроля версий
Системы контроля версий
Pavel Treshnikov
 
Расчет и документирование технологических процессов на базе WinCC OA
Расчет и документирование технологических процессов на базе WinCC OAРасчет и документирование технологических процессов на базе WinCC OA
Расчет и документирование технологических процессов на базе WinCC OA
Pavel Treshnikov
 
WinCC OA
WinCC OAWinCC OA
Архитектура масштабируемых приложений. Микросервисы, CQRS, ESB
Архитектура масштабируемых приложений. Микросервисы, CQRS, ESBАрхитектура масштабируемых приложений. Микросервисы, CQRS, ESB
Архитектура масштабируемых приложений. Микросервисы, CQRS, ESB
Pavel Treshnikov
 
Процессы, практики, инструменты разработки программного обеспечения
Процессы, практики, инструменты разработки программного обеспеченияПроцессы, практики, инструменты разработки программного обеспечения
Процессы, практики, инструменты разработки программного обеспечения
Pavel Treshnikov
 
Siemens oil and gas 2016 WinCC OA
Siemens oil and gas 2016   WinCC OASiemens oil and gas 2016   WinCC OA
Siemens oil and gas 2016 WinCC OA
DMC, Inc.
 

Viewers also liked (13)

Использование Mock объектов в модульном тестировании
Использование Mock объектов в модульном тестированииИспользование Mock объектов в модульном тестировании
Использование Mock объектов в модульном тестировании
 
Быстрое введение в TDD от А до Я
Быстрое введение в TDD от А до ЯБыстрое введение в TDD от А до Я
Быстрое введение в TDD от А до Я
 
Коротко о Scrum
Коротко о ScrumКоротко о Scrum
Коротко о Scrum
 
SOLID – принципы объектно-ориентированного дизайна
SOLID – принципы объектно-ориентированного дизайнаSOLID – принципы объектно-ориентированного дизайна
SOLID – принципы объектно-ориентированного дизайна
 
Разработка приложений работы с данными при помощи WPF
Разработка приложений работы с данными при помощи WPFРазработка приложений работы с данными при помощи WPF
Разработка приложений работы с данными при помощи WPF
 
Working with .NET Threads
Working with .NET ThreadsWorking with .NET Threads
Working with .NET Threads
 
ПАК Мониторинг - краткое описание системы
ПАК Мониторинг - краткое описание системыПАК Мониторинг - краткое описание системы
ПАК Мониторинг - краткое описание системы
 
Системы контроля версий
Системы контроля версийСистемы контроля версий
Системы контроля версий
 
Расчет и документирование технологических процессов на базе WinCC OA
Расчет и документирование технологических процессов на базе WinCC OAРасчет и документирование технологических процессов на базе WinCC OA
Расчет и документирование технологических процессов на базе WinCC OA
 
WinCC OA
WinCC OAWinCC OA
WinCC OA
 
Архитектура масштабируемых приложений. Микросервисы, CQRS, ESB
Архитектура масштабируемых приложений. Микросервисы, CQRS, ESBАрхитектура масштабируемых приложений. Микросервисы, CQRS, ESB
Архитектура масштабируемых приложений. Микросервисы, CQRS, ESB
 
Процессы, практики, инструменты разработки программного обеспечения
Процессы, практики, инструменты разработки программного обеспеченияПроцессы, практики, инструменты разработки программного обеспечения
Процессы, практики, инструменты разработки программного обеспечения
 
Siemens oil and gas 2016 WinCC OA
Siemens oil and gas 2016   WinCC OASiemens oil and gas 2016   WinCC OA
Siemens oil and gas 2016 WinCC OA
 

Similar to Использование Mock-объектов в TDD на платформе .NET

Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
 Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва  Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
it-people
 
Модульное тестирование и TDD в .NET
Модульное тестирование и TDD в .NETМодульное тестирование и TDD в .NET
Модульное тестирование и TDD в .NET
Alexander Byndyu
 
Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"
Fwdays
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
Анастасия Асеева
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QAFest
 
QAFest. Роль тестирования в Devops
QAFest. Роль тестирования в DevopsQAFest. Роль тестирования в Devops
QAFest. Роль тестирования в Devops
Анастасия Асеева
 
Unit testing and TDD
Unit testing and TDDUnit testing and TDD
Unit testing and TDD
Iosif Itkin
 
Повышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииПовышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документации
CEE-SEC(R)
 
Test driven development in net
Test driven development in netTest driven development in net
Test driven development in net
Alex Tumanoff
 
Test Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsTest Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsAnton Vidishchev
 
Testing RIA with Selenium
Testing RIA with SeleniumTesting RIA with Selenium
Testing RIA with Selenium
Sergey Shvets
 
XP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architectureXP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architectureAnton Katkov
 
Создаем масштабируемое корпоративное JavaScript-приложение, Влад Плотник
Создаем масштабируемое корпоративное JavaScript-приложение, Влад ПлотникСоздаем масштабируемое корпоративное JavaScript-приложение, Влад Плотник
Создаем масштабируемое корпоративное JavaScript-приложение, Влад Плотник
Sigma Software
 
Java mocking frameworks: Mockito and PowerMock
Java mocking frameworks: Mockito and PowerMockJava mocking frameworks: Mockito and PowerMock
Java mocking frameworks: Mockito and PowerMock
khayrutdinov
 
Тестирование крупного проекта командой из одного тестировщика
Тестирование крупного проекта командой из одного тестировщикаТестирование крупного проекта командой из одного тестировщика
Тестирование крупного проекта командой из одного тестировщикаZestranec
 
Тестирование крупных проектов командой из одного тестировщика
Тестирование крупных проектов командой из одного тестировщика Тестирование крупных проектов командой из одного тестировщика
Тестирование крупных проектов командой из одного тестировщика
SQALab
 
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Mail.ru Group
 
Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3Anton Vidishchev
 
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙСтановление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
CEE-SEC(R)
 
MockServer-driven development
MockServer-driven developmentMockServer-driven development
MockServer-driven development
Testableapple
 

Similar to Использование Mock-объектов в TDD на платформе .NET (20)

Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
 Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва  Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
 
Модульное тестирование и TDD в .NET
Модульное тестирование и TDD в .NETМодульное тестирование и TDD в .NET
Модульное тестирование и TDD в .NET
 
Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
 
QAFest. Роль тестирования в Devops
QAFest. Роль тестирования в DevopsQAFest. Роль тестирования в Devops
QAFest. Роль тестирования в Devops
 
Unit testing and TDD
Unit testing and TDDUnit testing and TDD
Unit testing and TDD
 
Повышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииПовышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документации
 
Test driven development in net
Test driven development in netTest driven development in net
Test driven development in net
 
Test Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsTest Driven Development in .NET Applications
Test Driven Development in .NET Applications
 
Testing RIA with Selenium
Testing RIA with SeleniumTesting RIA with Selenium
Testing RIA with Selenium
 
XP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architectureXP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architecture
 
Создаем масштабируемое корпоративное JavaScript-приложение, Влад Плотник
Создаем масштабируемое корпоративное JavaScript-приложение, Влад ПлотникСоздаем масштабируемое корпоративное JavaScript-приложение, Влад Плотник
Создаем масштабируемое корпоративное JavaScript-приложение, Влад Плотник
 
Java mocking frameworks: Mockito and PowerMock
Java mocking frameworks: Mockito and PowerMockJava mocking frameworks: Mockito and PowerMock
Java mocking frameworks: Mockito and PowerMock
 
Тестирование крупного проекта командой из одного тестировщика
Тестирование крупного проекта командой из одного тестировщикаТестирование крупного проекта командой из одного тестировщика
Тестирование крупного проекта командой из одного тестировщика
 
Тестирование крупных проектов командой из одного тестировщика
Тестирование крупных проектов командой из одного тестировщика Тестирование крупных проектов командой из одного тестировщика
Тестирование крупных проектов командой из одного тестировщика
 
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
 
Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3
 
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙСтановление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
 
MockServer-driven development
MockServer-driven developmentMockServer-driven development
MockServer-driven development
 

Использование Mock-объектов в TDD на платформе .NET

  • 1.
  • 2. Пару слов про TDD  Рекомендации по написанию тестов  Что такое моки  Когда и каким образом использовать моки  Пример тестов с использованием фреймворков  NUnit + NBehave  Moq  TestDox
  • 3.
  • 4. Разработка через тестирование (test-driven development, TDD) — техника разработки программного обеспечения, которая основывается на повторении очень коротких циклов разработки: 1. сначала пишется тест, покрывающий желаемое изменение 2. затем пишется код, который позволит пройти тест 3. и под конец проводится рефакторинг нового кода к соответствующим стандартам.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9. Тест должен «говорить» какой сценарий он проверяет  Наименование теста пишется в нотации pascal-case Пример:  Message_Should_Be_Deleted_After_Send
  • 10. Один тест проверяет один короткий сценарий работы класса/набора взаимодействующих классов  В одном тесте содержится только одна проверка assert
  • 11.
  • 12.
  • 13.
  • 14. Моки – это автоматически генерируемые заглушки для интерфейсов и классов. Моки позволяют моделировать поведение объекта:  Результаты работы методов  Генерацию событий, обратный вызов методов  Обращение к методам и свойствам класса
  • 15. Изоляция тестируемого кода – имитация БД.  Имитация ненаписанного кода.  Тестирование делегирования – проверка последовательности вызовов между классами.
  • 16. Возврат определенных значений метода объекта.  Генерацию событий объекта.  Верификацию количества вызовов методов.
  • 17. Виды unit- тестов Тесты Тесты состояния взаимодействия
  • 18.
  • 19. Генератор отчетов умеет создавать отчет на выбранную дату  Отчеты могут быть созданы как за текущие сутки, так и за прошлые  Формирование отчетов за будущее недоступно  Отчеты сформированный в нечетные дни должны отправляться по почте
  • 20. Быстрый старт по библиотеке Moq – http://code.google.com/p/moq/wiki/QuickStart  Александр Бындю «TDD для начинающих» – http://vimeo.com/9541997  Андрей Бибичев «Быстрое введение в TDD от А до Я» – http://www.slideshare.net/biBIGine/fast-intro-into-tdd
  • 21. Написание unit-тестов  Рекомендации по оформлению тестов  Тестирование генерации исключений, событий  Использование фреймворка Moq  Имитация работы объекта в зависимости от параметра  Верификация вызовов
  • 22. Трёшников Павел  Ведущий разработчик СМС-ИТ ▪ www.sms-automation.ru  e-mail: treshnikov@gmail.com  twitter: @treshnikov