Юнит Тестирование

Preview:

DESCRIPTION

Материалы второго дня тренинга "Refactoring. Unit Testing. TDD", который проводился 11 Декабря 2013 г. в Нижнем Новгороде

Citation preview

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

Контакты

Recommended