Показаны сообщения с ярлыком TDD. Показать все сообщения

Инструменты для проекта на .NET и JavaScript: TDD, PostgreSQL и российское облако

В предыдущей статье рассказал инструментах, которые используются в ByndyuSoft. На этот раз опишу проект, который делался через TDD, на PostgreSQL и российском облаке Infobox.

Что за проект?

Предметная область продукта — наружная видео-реклама на мониторах в транспорте. Управление мониторами работает через единый веб-интерфейс. Если вы пользуетесь общественным транспортом, то видели эти мониторы в трамваях и троллейбусах.

Заказчики пришли к нам с готовым бизнесом — 10 лет опыта на рынке, первые в России, кто создает мониторы и встроенное ПО от сборки до сопровождения. За время роста бизнеса в IT накопились технические и дизайнерские долги. IT тормозило развитие компании, понадобился новый подход и свежие решения.

Видео. Онлайн лекция по Refactoring Legacy Code

На прошедший вебинар зарегистрировался 51 человек, около 30 приняли участие, из которых 20 держались все 3 часа. Я не стал выкладывать видео целиком, а разделил 3 часа на две логические части и убрал лишнее.

Это был довольно необычный опыт «парного программирования» — я за клавиатурой и 30 программистов обсуждают дальнейшие шаги. Часто спорили, иногда начинали говорить несколько человек одновременно.

Онлайн лекция

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

Мы договорились 18 декабря в 17.00 (время московское) сделать онлайн лекцию с разбором кода этого семестрового задания. Раз уж это будет онлайн лекция, я подумал, что можно предоставить доступ всем желающим (заодно опробовать идею с онлайн конференцией dotnetconf).

Материалы конференции разработчиков. Доклад «Организация работы команды в Agile: разработка + тестирование»

Доклад от меня. Прозвучал на конференции разработчиков.

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

IoC-контейнер в ASP.NET с использованием шаблона MVP (Model-View-Presenter)

После видео про управление зависимостями в коде многие интересуются, как же сделать тоже самое в классическом ASP.NET. Проблема в том, что нужно найти точку старта для активного внесения зависимостей. В ASP.NET MVC она создана за нас – это фабрика контроллеров IControllerFactory.

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

Видео. Пример разработки приложения с помощью TDD

18 февраля 2010 г.

В этом видео я разрабатываю приложение с помощью TDD на языке C#. Кроме демонстрации того, как надо писать модульные тесты, я постарался показать, как работает TDD на уровне приложения в целом.

При разработке применил принцип инверсии зависимости, а также использовал IoC-контейнер.

Ссылки:

Когда TDD начинает обгонять?

После статьи «TDD для начинающих. Ответы на популярные вопросы» мне на почту прислали довольно много разных вопросов. Большинство из них было про границы применимости TDD и о том, когда мы начинаем получать плюсы от использования этой практики. Вот один из типичных вопросов:

Насколько оправданно использовать этот подход [TDD] в небольших проектах в плане скорости?

Сейчас читаю книгу «Applying Domain-Driven Design and Patterns» Jimmy Nilsson. Автор книги пишет, что применение TDD по сравнению с обычными подходами приводит к более скорому завершению проекта. Но скорость разработки растет не сразу, а даже изначально проект будет продвигаться медленнее. (Понятно, что написание тестов и постоянный рефакторинг отнимает много времени). Вот мне интересно наступит ли в небольшом проекте этот момент, когда подход TDD начнет выигрывать по времени по сравнению с обычными подходами разработки?

TDD для начинающих. Ответы на популярные вопросы.

Исходники проекта написанного с помощью TDD (git, C#)

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

Мне задают много вопросов про TDD. Из этих вопросов я выбрал ключевые и написал на них ответы. Сами вопросы вы можете найти в тексте, они выделены курсивом.

Принцип инверсии зависимости

Формулировка:

  • Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракции.
  • Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

Сейчас мы создадим и отрефакторим приложение. Будем двигаться по шагам и я покажу применение принципа инверсии зависимостей в действии.

Сравнение двух способов внесения зависимостей в проектах c ASP.NET MVC приложением

Первый способ внесения зависимостей я показал в прошлый раз. Сейчас хочу показать второй способ и сравнить оба подхода. На этот раз мы будем использовать модель push.

Наши инструменты и приемы для TDD

Путь, который должен пройти настоящий TDD-программист тернист и опасен. Чтобы не пасть духом и не повернуть назад, понадобится специальное снаряжение. Инструменты TDD-программиста должны быть легки, чтобы он мог преодолевать препятствия не уставая, и заточены как лезвие, чтобы смог справиться с любыми трудностями.

TDD и LLBLGen Pro v 2.0

Сейчас мы активно используем ORM LLBLGen Pro в своих проектах. Я уже рассказывал, как мы решили проблему с тестированием DataAccessApater и запросов на Linq, которые по своему реализованы в этой ORM.

Эффективный модульный тест

На сколько ваши тесты эффективны? Получаете ли вы максимум отдачи от создания тестов? Тесты должны экономить время, затраченное на разработку системы в целом. Время - это деньги вашего заказчика.

Рабочее пространство JavaScript программиста

Уже более чем пол года наша команда постоянно работает с JavaScript (библиотека ExtJS), который используется вместе с ASP.NET для слоя отображения. За это время мы перебрали большое количество инструментов, с помощью которых пытались сделать свою работу наиболее комфортной. Сейчас мы собрали приближенное к нашим потребностям рабочее место. О нем подробнее.

Научные исследования эффективности Test-First Development

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

Технические долги

Этот термин впервые ввел Ward Cunningham:

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

Red-Green-Refactoring. Зачем красная полоска?

Напомню «мантру» TDD — Red-Green-Refactoring. И главное правило — Никогда не пиши рабочий код без неудачно завершившегося теста.

TDD и LLBLGen Pro

LLBLGen Pro - это O/R mapper, который генерирует .NET код, основываясь на схеме в базе данных.

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

Тесты вперед?

Многие меня спрашивают: "Не жалко тебе тратить время на написание тестов?". Могу ответить коротко: "Нет".