Мы находимся на начальной стадии попытки внедрения TDD. Я демонстрационный код Visual Studio Team System/TDD, и команда взволнована возможностями. В настоящее время мы используем Devpartner для покрытия кода, но мы хотим его устранить, потому что это дорого. У нас очень ограниченный опыт в TDD и мы хотим убедиться, что мы не ошибаемся. В настоящее время мы используем SourceSafe для управления исходными кодами, но через год будем мигрировать в Team System.
Я могу сказать, что наши приложения очень ориентированы на данные. У нас около 900 таблиц, 6000 хранимых процедур и около 45 ГБ данных. У нас много расчетов, основанных на пользовательских данных и разных скоростях в системе. Также много нашего кода основано на времени (рассчитать интерес к текущей дате). Некоторые из этих расчетов очень сложны и очень интенсивны (лишь некоторые из них знают подробности для некоторых из них).
Мы хотим реализовать TDD для решения вопросов QA. Многим разработчикам приходится исправлять ошибки в областях, которые они не знакомы, и в конечном итоге что-то сломать. Есть также области, которые разработчики почти боятся касаться, потому что код используется всем в системе. Мы хотим смягчить эту проблему.
Я боюсь, поскольку наш код настолько ориентирован на данные, что внедрение TDD может быть немного более сложным, чем большинство систем. Я пытаюсь придумать игровой план, который я могу представить руководству, но я хочу, надеюсь, не попасться на некоторые ошибки начинающего TDD. Также, если инструменты/средства в Team System делают TDD более полным, это было бы неплохо, но мы не хотим ждать начала Team System.
Первый вопрос, который мы задаем, - это просто начать с инструментов в визуальной студии? Я прочитал сообщение: люди жалуются на встроенные инструменты в визуальной студии (нужно создать отдельный проект для создания вашего теста), но одна вещь о инструментах в визуальной студии - они свободны, и интеграция хороша. Если мы решим перейти на другой маршрут, используя что-то вроде XUnit, MBUnit или NUnit, то мы, скорее всего, будем иметь некоторые, возможно, значительные затраты:
1) Если мы хотим интегрировать IDE (не упоминается большая часть нашего кода - VB.Net)
---TestDriven.Net или Resharper или?????
2) Если мы хотим получить покрытие кода
--- NCover (кажется довольно дорогим для его функциональности)
Также я видел довольно классную функциональность, продемонстрированную в visual studio 2010. Как и возможность выполнять входное тестирование (данные, введенные в форме), или возможность записывать то, что сделал пользователь, а затем передавать их в ваш unit test для воспроизведения проблемы.
Кроме того, хотя я еще не совсем понимаю концепцию насмешливого объекта, я знаю, что многие люди считают это обязательным. Вопрос в том, могут ли все насмешливые фреймворки подключаться к визуальной студийной версии TDD (MSTEST)?
Я посоветовал руководству, что мы, вероятно, должны просто добавить регрессионное тестирование в будущем (новая разработка или обнаруженные ошибки), но не пытайтесь пройти весь наш код и вводить модульные тесты. Это был бы слишком большой проект.
В любом случае, я был бы признателен за помощь в любом случае.