|
|
-
Насколько я помню, в классике модульного тестирования принято, что порядок выполнения модульных тестов не определен - то есть, модульные тесты не могут зависеть от результатов выполнения других модульных тестов. Но разработчики mstest пошли еще дальше: среда исполнения многопоточна и запускает на выполнение несколько модульных тестов одновременно. Это означает, что нужно быть очень осторожным, если в коде ваших тестов используются статические объекты, такие как "Одиночки" (Singleton) или фабрики классов, поведение которых зависит от внешних условий, задаваемых индивидуально в каждом тесте. Например, это может быть фабрика классов внутри тестируемой системы, которая создает реальный объект или "дублера для тестирования" (Test Double, он же в просторечии mock object ) в зависимости от заданного модульным тестом режима. Проще всего даже будет отказаться от подобных сценариев и решать задачу внедрения зависимостей другими способами, например через конструктор или специальное свойство. А родробнее про исследование порядка выполнения модульных тестов можно прочитать у Naysawn Naderi: That Pesky MSTest Execution Ordering..
|
-
По какому-то странному стечению обстоятельств разработчики Team Explorer упустили возможность изъятия для редактирования (check out) хранящихся на портале группового проекта документов непосредственно из узла Documents. В результате, открыть документ для редактирования можно, но при сохранении есть вероятность переписать текущую версию без сохранения истории изменений. Частично проблему в TFS 2008 и Windows SharePoint Services 3.0 можно решить таким образом. В SharePoint заходим в настройки контроля версий для нужной библиотеки документов (Settings | Document Library Settings | Versioning Settings) и для опции Require documents to be checked out before they can be edited? ставим Yes. Теперь, даже если документ был открыт для редактирования, переписать текущую версию без явного выполнения операции Check out не получится. С другой стороны, если вы используете Office 2007, то изъять документ для редактирования можно непосредственно из Word или Excel сразу же после открытия. Более удобное решение потребовало бы написания адд-ина к Team Explorer, что уже само по себе - задача нетривиальная, но еще сложнее, мне кажется, было бы получить URL документа, на котором нажали правой кнопкой мыши. Быстрый поиск в Google, возможно, именно по причине сложности реализации, такого решения не нашел.
|
-
В новой версии, из самого интересного, обещают: - Наконец-то, "родной" человеческий инструментарий для подписки на события
- Поддержка переименования пользователей в Windows/Active Directory
- Обновление Team System Web Access,которое выйдет сразу на 10 языках, но на месяц позже
|
-
Хотя я уже довольно много времени занимаюсь TFS, его хранилище данных и создание собственных отчетов до сих пор оставались terra incognita. В основном, из-за "технологического барьера" - в своем программистском прошлом сталкиваться с OLAP не приходилось вообще, а с отчетами - очень поверхностно. Но... все когда-то бывает в первый раз. Сейчас одна из моих задач на работе - разработка метрик для нашего процесса разработки, а известно, что без автоматического сбора данных метрики, по-хорошему, не работают. Благо, наши разработчики все активнее используют TFS, который собирает довольно много данных автоматически, а там, где этого не хватает, задача решается вводом одного-двух дополнительных полей. Собрать данные мало - их нужно обработать, чтобы получить интересующие показатели, а потом представить в удобоваримой форме. Чтобы не писать "голословно-теоретическую" спецификацию, я решил поэкспериментировать, сделав один-два отчета-прототипа, иллюстрирующих общую концепцию. Пришлось закатать рукава и разобраться в том, как устроено хранилище данных TFS, что такое схема "звезда", как создавать запросы к многомерному кубу и показывать результаты хотя бы в виде простенького отчета. Начать мне очень помогли брошюра Creating and Customizing TFS Reports и пост в блоге Team WIT Tools под названием Understanding the TFS Cube - без этих материалов мое разбирательство затянулось бы на несколько дней, а так уже через часов 6-7 чистого времени (и то, по большей части из-за разбирательства с аггрегирующими функциями в языке запросов MDX) был получен первый результат. Очень рекомендую всем, кто планирует работать с хранилищем данных TFS. По моим впечатлениям, самое трудное, если вы раньше не сталкивались с OLAP - понять, как "работают" хранилища данных и построенные по ним многомерные кубы. Освоившись с этим, уже гораздо легче будет понять структуру куба TFS Warehouse и "набить руку" в использовании его основных измерений (dimensions) и мер (measures) - заодно попрактикуетесь в составлении MDX-запросов. С получением же данных из самого хранилища, если вы раньше работали с базами данных Microsoft SQL Server, серьезных проблем вообще быть не должно - хотя сама схема базы и отличается от привычных нам 3й и более высоких нормальных форм, во всем остальном получение данных происходит точно также (за исключением не всегда очевидных пар первичных и внешних ключей). Пока что я не планирую заниматься отчетами серьезно, на уровне производственной эксплуатации, но чем, как говорится, черт не шутит... поэтому добавил себе в закладки подборку материалов.
|
-
В идеале, при гибкой (Agile) разработке процесс сборки решения и его развертывания в среде тестирования или опытной эксплуатации должен быть полностью автоматизированным, как и большая часть самого тестирования - это позволяет производить сборку и ее тестовый прогон как минимум раз в день. Такая частота тестирования помогает выявлять дефекты практически сразу же после того, как они были внесены в код, а общеизвестно, что стоимость исправления дефекта очень быстро растет со временем. К сожалению, в стандартной поставке Team Build отсутствует возможность сборки инсталляционных пакетов, но не беда: решения существуют как для стандартных проектов создания инсталляций, так и для нестандартных/сторонних решений: Обычные проекты создания инсталляций Visual Studio (.vdproj) Web Deployment Projects WIX 2.0
|
-
Сегодня искал информацию о структуре хранилища данных TFS (data warehouse) и попутно набрел на блог разработчика из Норвегии, который описывает свою эпопею создания своего адаптера к хранилищу для накопления статистики о метриках кода. Интересно, кто-нибудь вообще пытался создавать адаптер для других целей? - мы в свое время писали собственный тоже именно для сбора метрик. К сожалению, записи в дневнике обрываются перед Рождеством 2007 года, поэтому неизвестно, чем закончилось дело, удалось ли Tommy запустить адаптер. Я написал ему письмо, дай Бог, ответит... Между тем, если вы занимаетесь подобной задачей, стоит почитать его заметки, чтобы обойти наиболее вероятные "грабли": Октябрь 2007 г. Ноябрь 2007 г. Декабрь 2007 г.
|
-
Любопытно, но, похоже, пока еще никто не реализовал полноценную подписку на события TFS (eventing service) через RSS-каналы. Есть отдельные некоммерческие реализации для подсистемы контроля версий (и то, судя по коду, делает рекурсивный обход дерева, а не накапливает информацию от поступающих событий) и для отслеживания статуса групповых сборок. А вот какого-то универсального решения, которое позволяло бы мне "на лету" создавать нужные мне RSS-каналы, не существует. Как идея, при реализации можно было бы использовать механизмы TFS Migration and Synchronization Toolkit для периодического получения списков изменений в рабочих элементах и системе контроля версий - но еще вопрос, лучше ли это с точки зрения производительности, чем подписка на события и последующий анализ данных без дополнительной нагрузки на TFS... С другой стороны, при использовании событий их придется где-то накапливать для последующей обработки, и периодически вычищать это хранилище по критерию "срока давности".
|
-
Поиск рабочих элементов, содержащих заданный текст - задача, встречающаяся довольно часто. Однако же, в Team Explorer нет встроенной функции поиска, а городить "одноразовые" запросы - неудобно и непроизводительно. К счастью, существует более удобное решение: небольшой add-in для Visual Studio, который предназначен именно для этой цели:
http://blogs.msdn.com/noahc/archive/2007/03/08/search-work-items-team-system-addin.aspx
Add-in бесплатный, с открытым исходным кодом, написан сотрудником Microsoft. "Инструкция по эксплуатации" (кстати, ее советую-таки прочитать - в текущей версии настройка шаблона запроса для поиска неочевидна) - в упомянутом выше посте.
Upd: Коллега подсказал альтернативный add-in, которым пользуется сам и очень доволен:
http://www.acorns.com.au/projects/vsaddins/
|
-
Набрел случайно на презентацию о шаблоне процесса для TFS на основе принципов гибкой разработки (фактически - некий гибрид SCRUM и XP) от ThoughtWorks. Понравился шаблон рабочего элемента для Story - формализовано описание "Как [персона] я хочу [потребность] для того, чтобы [какой практический результат получу]" Hint: В этой компании работает Мартин Фаулер 
|
-
Коллеги озадачили меня вопросом - как в Visual Studio Code Analysis поменять пороговые значения для метрик кода (цикломатическая сложность, глубина наследования и т.п.), поскольку в "stand-alone" FxCop это возможно. Оказалось, что в текущей версии Visual Studio сделать этого нельзя . В грядущем SP1 каких-либо улучшений в плане метрик кода тоже не обещают, хотя в подробном обзоре можно найти немало вкусностей, в частности - выявление потенциальных проблем в коде "на лету", подобно тому, как это уже реализовано в Visual Basic (см. секцию "For C# Developers").
|
-
По "правилам игры" TFS, чтобы переименовать однажды созданное поле или изменить способ его включения в отчетность, нужно: - Обладать правами администратора сервера: прав администратора группового проекта, в котором проводятся изменения шаблона рабочего элемента, недостаточно;
- Использовать специальный инструмент командной строки witfields. Обратите внимание - в форумах MSDN вы можете встретить упоминания о том, что этот инструмент устарел (deprecated) и вместо него нужно использовать witadmin. С выходом Rosario это, скорее всего, действительно будет так, но пока witfields вполне актуален.
На практике же, возьмусь утверждать, редко кто будет возиться с командной строкой, если в распоряжении есть Process Template Editor, входящий в Team Foundation Power Tools (для TFS 2008 рекомендую TFPT March 2008 Release). А с этим инструментом возможна вот какая интересная коллизия: - Вы работаете над шаблоном рабочего элемента локально (т.е. не импортируете его в TFS);
- В этом шаблоне вы переопределяете способ включения в отчетность для одного из уже существующих в TFS полей;
- Закончив основную работу над шаблоном, вы импортируете его в TFS и получаете совершенно замечательное сообщение об ошибке:
You do not have permission to modify this field. Информативно, не правда ли? Не зная, что пункт №2 требует привилегий администратора TFS, можно долго гадать о том, какие же права нужны и какое именно поле приводит к ошибке. Тут, при всей своей про-Microsoft направленности, однозначно могу сказать: команде разработчиков TFPT - "низачот". На самом же деле происходит следующее: TFPT совершенно не возражает против изменения типа отчетности для уже существующих полей при локальном редактировании шаблона (но, что странно, если вы откроете шаблон с сервера, поменять тип отчетности не удастся). Само по себе это логично, раз уж TFPT, как оказывается, умеет корректно обрабатывать эту ситуацию и "в фоне" производить аналогичные witfields действия при импорте. Но, если вы производите импорт шаблона, не обладая правами администратора TFS, то получите вышеупомянутое "дружественное" сообщение об ошибке. На мой взгляд, раз уж такая полезная возможность предусмотрена, то было бы очень полезно добавить ее продуманную поддержку в пользовательский интерфейс Process Template Editor - как минимум: - Выдавать предупреждение при попытке изменить тип отчетности для существующего поля с объяснением необходимых для этого прав и глобальности последствий (тип отчетности распространяется на все рабочие элементы во всех групповых проектах, ссылающиеся на поле);
- При недостаточных полномочиях выдавать дружественное сообщение об ошибке с объяснением ситуации и списком приводящих к ошибке полей;
- Разрешить изменение типа отчетности для полей в шаблонах рабочих элементов, открытых с сервера при соблюдении пунктов №1 и №2.
|
-
TFS в Харьковском отделении GlobalLogic был доступен уже достаточно давно, года, наверное, с 2006го. Тем не менее, интерес к продукту заметно вырос только в последние месяцы. Причин несколько: во-первых, конечно же, небезызвестный фактор "первого service pack'a", но гораздо интереснее вторая причина: нужен был катализатор, а именно - люди, которым довелось успешно поработать с TFS. Как же работает этот катализатор? Очень просто - разработчики редко доверяют рекламным заявлениям, но достаточно доверительно относятся к положительному опыту своих коллег. Следовательно, залог успешного внедрения TFS в организации - получить первый положительный опыт. А для этого нужно две составляющие: - Люди, занимающие позицию руководителя проекта, или по крайней мере имеющие на него влияние, и при этом готовые идти на риск и эксперименты ("пионеры") - на их проектах и будет производиться пилотное внедрение;
- Эксперт, который возьмет на себя роль "капитана", а также все задачи по настройке продукта, обучению и консультированию.
Нужно отметить, что участие выделенного эксперта во внедрении обязательно. Задачи по необходимой настройке TFS требуют специфических знаний в нескольких областях, на приобретение которых нужно время. Конечно, в идеале хорошо иметь такого эксперта среди сотрудников компании, но может иметь смысл пригласить внешнего эксперта для пилотного внедрения и обучения сотрудников, а затем готовить специалистов внутри организации для задач по поддержке и развитию цикла управления разработкой ПО.
|
-
Все мы знаем, что означает аббревиатура FAQ, или, по-нашему, ЧаВо. А консалтинговая компания Northwest Cadence пошла путем "от противного" и опубликовала в своем блоге подборку вопросов-"крепких орешков", которые часто остаются без ответа в форумах: Frequently Unanswered Questions: В частности, довольно долго ни в форумах, ни в блогосфере не было практически никакой полезной информации об экзамене 70-510. А здесь - пожалуйста, directly from composer информация из первых рук.
|
-
Да-да, Стив Баллмер собственной персоной. Не к нам буквально, конечно - едет Стив в Microsoft Ukraine, но все равно приятно - раньше в Украину, по-моему, большие "шишки" из корпа не приезжали. Интересно, только, с хорошими или плохими новостями...
|
-
Ждать Rosario нам еще долго - в лучшем случае до 2010 года. Между тем, есть ряд возможных улучшений как в клиентской, так и в серверной частях TFS, реализация которых не влечет за собой значительных рисков, а, следовательно, такие улучшения можно реализовать, не дожидаясь следующего крупного релиза. Именно это и будет сделано в TFS 2008 SP1, первая Beta которого ожидается уже совсем скоро: http://blogs.msdn.com/bharry/archive/2008/04/28/team-foundation-server-2008-sp1.aspx Честно говоря, не счел нужным переводить описание всех ожидающихся в SP1 "плюшек", так как их довольно немало. Но - если потребность в таком переводе или хотя бы пояснениях есть - дайте мне, пожалуйста, знать через комментарии, и я буду дополнять этот пост нужной информацией.
|
|
|
|