Лондон
<<  Faces of London City of hero  >>
Test-Driven Development
Test-Driven Development
Основные правила
Основные правила
Следствия правил
Следствия правил
Следствия правил
Следствия правил
Порядок действий
Порядок действий
Что дает TDD
Что дает TDD
Что дает TDD
Что дает TDD
Тест - Это процедура, которая позволяет подтвердить или опровергнуть
Тест - Это процедура, которая позволяет подтвердить или опровергнуть
Изолированный тест (Isolated Test)
Изолированный тест (Isolated Test)
Список тестов (Test List)
Список тестов (Test List)
Вначале тест (Test First)
Вначале тест (Test First)
Вначале оператор assert (Assert First)
Вначале оператор assert (Assert First)
Пример – обмен данными с другой системой через сокет
Пример – обмен данными с другой системой через сокет
Откуда должен быть прочитан объект reply
Откуда должен быть прочитан объект reply
Откуда берется сокет
Откуда берется сокет
Открываем сервер
Открываем сервер
Тестовые данные (Test Data)
Тестовые данные (Test Data)
Реалистичные данные (Realistic Data)
Реалистичные данные (Realistic Data)
Понятные данные (Evident Rate)
Понятные данные (Evident Rate)
Понятные данные (Evident Rate)
Понятные данные (Evident Rate)
Тест одного шага (One Step Test)
Тест одного шага (One Step Test)
Начальный тест (Starter Test)
Начальный тест (Starter Test)
Объясняющий тест (Explanation Test)
Объясняющий тест (Explanation Test)
Тест для изучения (Learning Test)
Тест для изучения (Learning Test)
Регрессионный тест (Regression Test)
Регрессионный тест (Regression Test)
Перерыв (Break)
Перерыв (Break)
Начать сначала (Do over)
Начать сначала (Do over)
Дочерний тест (Child Test )
Дочерний тест (Child Test )
Поддельный объект (Mock Object)
Поддельный объект (Mock Object)
Самошунтирование (Self Shunt)
Самошунтирование (Self Shunt)
Строка журнал (Log String)
Строка журнал (Log String)
Тестирование обработки ошибок (Crush Test Dummy)
Тестирование обработки ошибок (Crush Test Dummy)
Поддельный объект
Поддельный объект
Сломанный тест (Broken Test)
Сломанный тест (Broken Test)
Чистый выпускаемый код (Clean Check-in)
Чистый выпускаемый код (Clean Check-in)
Подделка (Fake It)
Подделка (Fake It)
Триангуляция (Triangulate)
Триангуляция (Triangulate)
Триангуляция (Triangulate)
Триангуляция (Triangulate)
Очевидная реализация (Obvious Implementation)
Очевидная реализация (Obvious Implementation)
От одного ко многим (One to Many)
От одного ко многим (One to Many)
Насколько большими должны быть шаги
Насколько большими должны быть шаги
Что подлежит тестированию
Что подлежит тестированию
Как определить качество тестов
Как определить качество тестов
Когда следует удалять тесты
Когда следует удалять тесты
Нерешенные проблемы TDD
Нерешенные проблемы TDD
TDD и Экстремальное программирование
TDD и Экстремальное программирование

Презентация на тему: «Test-Driven Development». Автор: pasha. Файл: «Test-Driven Development.ppt». Размер zip-архива: 118 КБ.

Test-Driven Development

содержание презентации «Test-Driven Development.ppt»
СлайдТекст
1 Test-Driven Development

Test-Driven Development

Разработка через тестирование

2 Основные правила

Основные правила

Пишем новый код только тогда, когда автоматический тест не сработал. Устраняем дублирование.

3 Следствия правил

Следствия правил

Проектируя код, мы постоянно запускаем его и получаем представление о том, как он работает, это помогает нам принимать правильные решения. Мы самостоятельно пишем свои собственные тесты, так как не можем ждать, пока кто-нибудь напишет их для нас.

4 Следствия правил

Следствия правил

Наша среда разработки должна быстро реагировать на небольшие модификации кода. Дизайн программы должен базироваться на множестве сильно связанных компонент, которые слабо сцеплены друг с другом, благодаря чему тестирование упрощается.

5 Порядок действий

Порядок действий

Написать тест. Заставить компилироваться. Запустить тест и убедиться, что он не работает. Заставить тест работать. Рефакторинг. Проверить, что тест работает.

6 Что дает TDD

Что дает TDD

Если количество дефектов в программе становится достаточно низким, то команда контроля качества может перейти от реактивной к превентивной работе. Если количество неприятных сюрпризов будет небольшим, то менеджеры проекта смогут с высокой точностью оценивать трудозатраты и привлекать заказчиков к процессу ежедневной разработки проекта.

7 Что дает TDD

Что дает TDD

Если темы технических дискуссий будут четко определены, то программисты смогут взаимодействовать друг с другом постоянно, а не раз в день или раз в неделю. Если плотность дефектов будет достаточно небольшой мы сможем каждый день получать интегрированный рабочий продукт с добавленной в него новой функциональностью, что позволит построить принципиально иные отношения с заказчиком.

8 Тест - Это процедура, которая позволяет подтвердить или опровергнуть

Тест - Это процедура, которая позволяет подтвердить или опровергнуть

работоспособность кода

Автоматические тесты можно выполнить даже если не хватает времени на тестирование. Тесты должны выполняться быстро. Тест позволяет избежать страха и сомнений при изменении кода.

9 Изолированный тест (Isolated Test)

Изолированный тест (Isolated Test)

Выполнение одного теста не должно влиять на другие тесты. Порядок выполнения тестов не должен иметь значения. Приложение должно быть собрана из множества небольших, взаимодействующих друг с другом объектов.

10 Список тестов (Test List)

Список тестов (Test List)

Составить список задач. Задачи возникающие в процессе работы добавляются в этот список. Цикл Тест => Реализация => Рефакторинг не должен прерываться.

11 Вначале тест (Test First)

Вначале тест (Test First)

Тесты должны писаться до кода. Это позволяет контролировать количество работы и следить за дизайном кода.

12 Вначале оператор assert (Assert First)

Вначале оператор assert (Assert First)

Частью чего является новая функциональность? Какие имена присвоить используемым элементам? Каким образом можно правильно проверить результат работы функциональности? Что считать правильным результатом работы функциональности? Какие другие тесты можно придумать исходя из данного теста?

13 Пример – обмен данными с другой системой через сокет

Пример – обмен данными с другой системой через сокет

После обмена данными сокет должен быть закрыт, а в буфер должна быть прочитана строка abc

14 Откуда должен быть прочитан объект reply

Откуда должен быть прочитан объект reply

15 Откуда берется сокет

Откуда берется сокет

16 Открываем сервер

Открываем сервер

17 Тестовые данные (Test Data)

Тестовые данные (Test Data)

Данные должны быть простые в понимании и понятные. Более короткие списки данных предпочтительнее длинных списков Не стоит использовать одну константу в разных местах для обозначения более чем одного понятия.

18 Реалистичные данные (Realistic Data)

Реалистичные данные (Realistic Data)

Вы занимаетесь тестированием системы реального времени, используя цепочки внешних событий, которые возникают при эксплуатации этой системы. Вы сравниваете вывод текущей системы с выводом предыдущей системы. Вы выполняете рефакторинг кода, имитирующего некоторый реальный процесс, и ожидаете, что после выполнения рефакторинга результирующие данные будут в точности такими же как до рефакторинга

19 Понятные данные (Evident Rate)

Понятные данные (Evident Rate)

20 Понятные данные (Evident Rate)

Понятные данные (Evident Rate)

21 Тест одного шага (One Step Test)

Тест одного шага (One Step Test)

Тест должен добавить новую функциональность. Вы должны реализовать тест за один шаг.

22 Начальный тест (Starter Test)

Начальный тест (Starter Test)

Первый тест не выполняет каких либо сложных действий. Тривиальные входные и выходные данные.

23 Объясняющий тест (Explanation Test)

Объясняющий тест (Explanation Test)

Объясняйте работу кода в виде тестов. Просите у других объяснять работу их кода в виде тестов. Преобразовывайте диаграммы последовательностей в тесты.

24 Тест для изучения (Learning Test)

Тест для изучения (Learning Test)

Перед использованием метода библиотеки, поведение которого не совсем ясно. При проверки новой версии библиотеки, которую вы используете.

25 Регрессионный тест (Regression Test)

Регрессионный тест (Regression Test)

Напишите тест прежде чем исправлять ошибку.

26 Перерыв (Break)

Перерыв (Break)

Если вы зашли в тупик, то пора сделать перерыв.

27 Начать сначала (Do over)

Начать сначала (Do over)

Если не удается найти хорошего решения, то необходимо отказаться от неудачного кода.

28 Дочерний тест (Child Test )

Дочерний тест (Child Test )

Что делать, если тест оказался слишком большим?

29 Поддельный объект (Mock Object)

Поддельный объект (Mock Object)

Замена реального объекта (например, базы данных) его фальшивой реализацией. Не стоит использовать глобальные переменные для хранения объектов тестов. NMock

30 Самошунтирование (Self Shunt)

Самошунтирование (Self Shunt)

Для проверки корректности взаимодействия одного объекта с другим, можно заставить тестируемый объект взаимодействовать не с целевым объектом, а с вашим тестом.

31 Строка журнал (Log String)

Строка журнал (Log String)

Как проверить, что обращение к методам осуществляется в правильном порядке? Создать строку, использовать ее в качестве журнала, каждый раз при обращении к методу добавлять новый текст.

32 Тестирование обработки ошибок (Crush Test Dummy)

Тестирование обработки ошибок (Crush Test Dummy)

Создать специальный объект, который вместо реальной работы генерирует исключение.

33 Поддельный объект

Поддельный объект

34 Сломанный тест (Broken Test)

Сломанный тест (Broken Test)

Если вы работаете над проектом один, то можно оставить сломанный тест, как закладку.

35 Чистый выпускаемый код (Clean Check-in)

Чистый выпускаемый код (Clean Check-in)

При работе в составе команды к завершению рабочего дня все тесты должны работать.

36 Подделка (Fake It)

Подделка (Fake It)

Сделайте так, чтобы тестируемый метод возвращал константу. После того как тест начал срабатывать, трансформируйте константу в выражение.

37 Триангуляция (Triangulate)

Триангуляция (Triangulate)

38 Триангуляция (Triangulate)

Триангуляция (Triangulate)

39 Очевидная реализация (Obvious Implementation)

Очевидная реализация (Obvious Implementation)

Если вы точно знаете какой код нужно написать для того, чтобы тест заработал, то смело пишите его.

40 От одного ко многим (One to Many)

От одного ко многим (One to Many)

Как реализовать операцию, которая работает с коллекцией объектов? Сначала реализуйте операцию для одного объекта, затем модернизируйте ее для работы с коллекцией объектов.

41 Насколько большими должны быть шаги

Насколько большими должны быть шаги

Какой объем функциональности должен покрывать каждый тест? Сколько стадий должно быть преодолено в процессе каждого рефакторинга?

42 Что подлежит тестированию

Что подлежит тестированию

Условные операторы. Циклы. Операции. Полиморфизм.

43 Как определить качество тестов

Как определить качество тестов

Длинный код инициализации. Дублирование кода инициализации. Тесты выполняются слишком медленно. Хрупкие тесты.

44 Когда следует удалять тесты

Когда следует удалять тесты

Никогда не удаляйте тест, если в результате этого снизится ваша уверенность в корректности поведения системы. Если у вас есть два теста, которые тестируют один и тот же участок кода, но рассматриваются читателем как два различных сценария, сохраните оба теста.

45 Нерешенные проблемы TDD

Нерешенные проблемы TDD

Сложно произвести автоматическое тестирование GUI. Особенно в случае нестандартного интерфейса. Сложно тестировать распределенные объекты и много-поточные приложения. TDD нельзя использовать для разработки схемы базы данных. TDD нельзя использовать для разработки языка программирования.

46 TDD и Экстремальное программирование

TDD и Экстремальное программирование

Программирование в паре – тесты как инструмент общения Работа на свежую голову. Если вы не можете заставить тест работать, значит пришло время сделать перерыв. Частая интеграция. Интеграция после каждого цикла тестирования. Простой дизайн. Рефакторинг. Вы можете быть уверены, что поведение системы не изменилось. Частые выпуски версий.

«Test-Driven Development»
http://900igr.net/prezentacija/anglijskij-jazyk/test-driven-development-117331.html
cсылка на страницу

Лондон

14 презентаций о Лондоне
Урок

Английский язык

29 тем
Слайды