Заметки консультанта

Шамрай Александр Владимирович

Archive for Апрель 2017

Отчет по возрасту ошибок в TFS

Posted by Шамрай Александр на Апрель 3, 2017

«Борьба» с техническим долгом команды является неотъемлемой частью любого процесса разработки. Команда всегда старается минимизировать количество существующих проблем, но зачастую для нового релиза устанавливаются пороги качества, которым он должен соответствовать, и в него входит пограничное количество ошибок определенной важности. Пороги могут варьировать в зависимости от сложности проекта, а иногда приходится выпускать релиз с превышением установленных порогов, находясь под давлением различных обстоятельств (дедлайны, требования заказчика или прямого руководства). В случае если выпущенный релиз содержит ошибки с высокой важностью, то команда старается описать ее как «известную проблему» и в ближайшее время старается ее решить. TFS обеспечивает необходимые отчеты, которые позволяют акцентировать внимание на текущие проблемы качества и их тренды. Но, к сожалению, нет отчетов, которые бы показали насколько старыми являются наши ошибки или насколько долго они находятся в определенном состоянии. Такие отчеты позволяют шире посмотреть на существующие ошибки:

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

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

  1. Поле для отслеживания изменения состояния. Это поле «Microsoft.VSTS.Common.StateChangeDate», которое обновляется при изменении состоянии соответствующей датой. Для того, чтобы оно попадало в отчетную базу, ему нужно установить атрибут Reportable в значение dimension. Для этого мы воспользуемся TFS Power Tools. На скриншотах ниже отображена последовательность шагов для обновления. После изменения атрибута сохраняем результаты работы.

Рисунок 1. Изменение свойства отчетности для поля

  1. Шаблон отчета. ALM Ranger-ы выпустили Руководство по отчетности TFS, которое было переведено в рамках данного блога. Данное руководство содержит предварительно подготовленный шаблон отчета на английском языке. Тут можно получить шаблон на русском языке. Шаблон отчета открываем в Report Builder и сохраняем в необходимом каталоге проекта на сервере отчетности.
  2. Параметры отчета. Для отчета можно установить параметры, которые позволят сузить количество выдаваемой информации, например, по состояниям. Для этого мы добавим новый параметр, установим для него возможные значения, установим значение по умолчанию.

Рисунок 2. Добавление нового параметра

Рисунок 3. Список выбора для параметра

  1. Набор данных отчета. Набор данных включает в себя запрос, который должен отобрать необходимые ошибки согласно заданным параметрам и при этом установить соответствующий атрибут его возраста. В рамках данного запроса устанавливаются атрибуты 1 неделя, 2 недели, 3 недели, 4 недели и более. Пример запроса:
SELECT

CurrentWorkItemView.System_Id

,CurrentWorkItemView.System_Title

,CurrentWorkItemView.System_State

,CurrentWorkItemView.System_AssignedTo

,CurrentWorkItemView.Microsoft_VSTS_Common_Priority

,CurrentWorkItemView.Microsoft_VSTS_Common_Severity

,CurrentWorkItemView.Microsoft_VSTS_Common_StateChangeDate

,CurrentWorkItemView.System_CreatedDate

,CASE WHEN (DATEDIFF(day, CurrentWorkItemView.Microsoft_VSTS_Common_StateChangeDate, GETDATE())>0) AND (DATEDIFF(day, CurrentWorkItemView.Microsoft_VSTS_Common_StateChangeDate, GETDATE())<8) THEN 1 ELSE 0 END One_Week

,CASE WHEN (DATEDIFF(day, CurrentWorkItemView.Microsoft_VSTS_Common_StateChangeDate, GETDATE())>7) AND (DATEDIFF(day, CurrentWorkItemView.Microsoft_VSTS_Common_StateChangeDate, GETDATE())<15) THEN 1 ELSE 0 END Two_Weeks

,CASE WHEN (DATEDIFF(day, CurrentWorkItemView.Microsoft_VSTS_Common_StateChangeDate, GETDATE())>14) AND (DATEDIFF(day, CurrentWorkItemView.Microsoft_VSTS_Common_StateChangeDate, GETDATE())<22) THEN 1 ELSE 0 END Three_Weeks

,CASE WHEN (DATEDIFF(day, CurrentWorkItemView.Microsoft_VSTS_Common_StateChangeDate, GETDATE())>21) AND (DATEDIFF(day, CurrentWorkItemView.Microsoft_VSTS_Common_StateChangeDate, GETDATE())<29) THEN 1 ELSE 0 END Four_Weeks

,CASE WHEN (DATEDIFF(day, CurrentWorkItemView.Microsoft_VSTS_Common_StateChangeDate, GETDATE())>28) THEN 1 ELSE 0 END Very_Old

FROM

CurrentWorkItemView

WHERE

CurrentWorkItemView.System_WorkItemType = N’Ошибка’

AND CurrentWorkItemView.System_State IN (@State)

AND CurrentWorkItemView.ProjectNodeGUID = @ProjectGuid

  1. Отображение отчета. Отчет может быть представлен в табличном или графическом виде. Мы же воспользуемся столбиковой диаграммой. Шаги установки атрибутов диаграммы отображены ниже.

Рисунок 4. Выбор набора данных для диаграммы

Рисунок 5. Тип диаграммы

Рисунок 6. Выбор полей для диаграммы

Рисунок 7. Стиль диаграммы

  1. Отчет готов. Можно оценить его результат.

Рисунок 8. Отчет «Возраст ошибок»

Готовый отчет можно скачать здесь.

Posted in Microsoft, Team Foundation Server, Visual Studio | Отмечено: , | Leave a Comment »

 
%d такие блоггеры, как: