Юнит Тестирование
DESCRIPTION
Материалы второго дня тренинга "Refactoring. Unit Testing. TDD", который проводился 11 Декабря 2013 г. в Нижнем НовгородеTRANSCRIPT
UNIT TESTING
Дмитрий Павлов
Александр Андронов
http://get.cardmone.net
Контакты
Перерывы
Жест
Никаких мобил
Ноуты только на упражнениях
Парковка
Правила
Проверка домашней работы
1. Зачем тестировать?
2. Структура теста
3. Assert first
4. Именование (3 подхода)
5. DSL
6. Mock, Stub, Fake, Spy
7. Тесты на поведение и состояние
8. Хороший тест
9. Интеграционный тест
10. Автоматический приемочный тест
11. SpecFlow
12. Пирамида тестирования
План
WHY TEST?
Зачем тестировать?
FEAR
Страх
THE OTHER GUY
Другой парень
FEEDBACK
Обратная связь
Когда интерн заявляет «Тесты для тех, кто не умеет программировать»
Польза от тестов
http://martinvalasek.com/blog/pictures-from-a-developers-life-part-2
ИМЕНОВАНИЕ
When<Action>
<Arrange><Assert>
WhenAuthorizeUserAdminCanLogin
HackerCanNotLogin
WhenLoadMovies
AdminCanSeeAllMovies
ChildrenMustNotNotSeeRestrictedMovies
When…
<Arrange>
<Assert>
RegularMovieWith18RateIs
RestrictedForUser
AvailableForAdmin
SeriesMovieWith18RateIs
AvailableForChild
AvailableForAdmin
<Arrange>… <Assert>
<Assert>
<Arrange>
RegularMovieIsAvailableFor
Admin
UserOlder14Years
NewReleaseWith18RestrictionIsNotAvailableFor
UserYounger14Years
<Assert>… <Arrange>
<ClassName>Should
<Assert>
AuthenticationServiceShould
StoreLoggedInUserName
LoginPageShould
RedirectToDefaultPage
DefaultPageShould
ShowSalesReportToAdmin
<ClassName> Should
<ClassName>Tests
<Act>_<Arrange>_<Assert>
DefaultPageTests
LoadMovies_Admin_ShowAll
LoadMovies_UserElder18_ShowAll
LoadMovies_UserYonger18_ShowNewReleases
<Act>_<Arrange>_<Assert>
Упражнение. Переименуйте тесты
СТРУКТУРА ТЕСТА
Arrange Act Assert
Упражнение. Структурируйте тесты AAA
DSL
Игра «Жизнь»
Тест, который трудно понять
Тест, который легко понять
Так пишите так!
Упражнение. Придумайте DSLиз разных доменов
STUB, FAKE, SPY, MOCK
Session
Response.Redirect
XML файл
Упражнение. Fake It
Отправить отчет по email
Упражнение. Новое требование
ТЕСТЫ НА ПОВЕДЕНИЕ И СОСТОЯНИЕ
Тест на поведение
Перетащить StatementFormatter
Отправить отформатированный отчет по email
Написать тест на поведение
Написать тест на состояние
Упражнение. Тест на поведение и на состояние
ХОРОШИЙ ТЕСТ
МУТНЫЕ ТЕСТЫ
Мутные тесты
Запахи тестов
Assert.AreEqual(1, collection.Count)
StringAssert.Contains
CollectionAssert.Contains
Assert.WasCalled
Много сломанных тестов после рефакторинга
Медленные тесты
ИНТЕГРАЦИОННЫЙ ТЕСТ
Интеграционные тесты
АВТОМАТИЧЕСКИЙ ПРИЕМОЧНЫЙ ТЕСТ
SpecFlow
ПИРАМИДА ТЕСТИРОВАНИЯ
Зачем тестировать?
Структура теста
Именование
DSL
Stub, Fake, Spy, Mock
Тесты на поведение и состояние
Хороший тест
Пирамида тестирования
Чему мы научились
Придумать DSL для вашего проекта
Домашнее задание
Книги
Roy Osherove “The art of unit testing” http://artofunittesting.com/
Ссылки
Вопросы?
http://get.cardmone.net
Контакты