將 Bug 加入待處理項目或工作面板
有些小組喜歡將 Bug 當作待處理項目來追蹤,例如產品待處理項目、使用者劇本或需求。 其他商業程序可能需要在待處理項目或工作面板上追蹤其他工作項目類型 (WIT)。
如果您使用 Scrum 專案,則 Bug 已經出現在您的待處理項目中。 不過,如果 Team 專案是使用 Agile 或 CMMI 等其他流程範本所建立,則 Bug 不會出現在待處理項目或工作面板中。
若要加入 Bug 或其他 WIT,您可以設定小組設定,或是自訂 Team 專案來支援下列選擇:
部署 |
選擇 |
---|---|
Visual Studio Online |
|
含 TFS 2013.4 更新的內部部署 |
|
不含 TFS 2013.4 更新的內部部署 |
|
如果您在 TFS 內部部署上工作,您可以自訂 Team 專案,讓 Bug 或其他 WIT 出現在待處理項目或工作面板上,但不能同時出現在兩者上。
如果您要變更 TFS 2012 上定義的 Team 專案,請檢視本主題的 Visual Studio 2012 版本。
選項 A:允許小組選擇在待處理項目上追蹤 Bug (Visual Studio Online 或 TFS 2013.4)
每個小組都可以選擇在其待處理項目上追蹤 Bug。 如果您連接至 TFS 內部部署,其必須更新至 TFS 2013.4。 (請參閱 Microsoft Visual Studio 2013 Update 4。
如果您不是小組系統管理員,請加入成為其中一員。
從小組的系統管理頁面開啟 [設定],並選取要追蹤 Bug 的核取方塊。
如果沒有看到該選項,則需要更新 Team 專案的流程組態。
若要查看變更,請開啟或重新整理小組的待處理項目頁面。
更新流程組態,以支援在待處理項目上追蹤 Bug (TFS 內部部署)
如果小組設定頁面上的在待處理項目上追蹤 Bug 選項已停用,請驗證或更新 Team 專案的下列 XML 定義檔案。 您必須成為 Project Administrators 群組的成員,才能更新這些物件。
分類:需求分類應該只包含與待處理項目相關聯的那些 WIT。 Bug 分類應該只包含與 Bug 相關聯的那些 WIT。 尤其是需求分類絕不能包含 Bug 的項目。
例如,下列定義是正確的:
<CATEGORY name="Bug Category" refname="Microsoft.BugCategory"> <DEFAULTWORKITEMTYPE name="Bug" /> </CATEGORY> <CATEGORY name="Requirement Category" refname="Microsoft.RequirementCategory"> <DEFAULTWORKITEMTYPE name="Product Backlog Item" /> </CATEGORY>
而下列定義不正確,因為 Bug WIT 內含在需求分類中:
<CATEGORY name="Bug Category" refname="Microsoft.BugCategory"> <DEFAULTWORKITEMTYPE name="Bug" /> </CATEGORY> <CATEGORY name="Requirement Category" refname="Microsoft.RequirementCategory"> <DEFAULTWORKITEMTYPE name="Product Backlog Item" /> <WORKITEMTYPE name="Bug" /> </CATEGORY>
若要更新分類,請參閱匯入和匯出分類 [witadmin]。
ProcessConfiguration:包含 BugWorkItems 元素,可定義 Bug 分類,並將 Bug 工作流程狀態對應至轉移狀態。 例如:
<BugWorkItems category="Microsoft.BugCategory" pluralName="Bugs" singularName="Bug"> <States> <State value="Active" type="InProgress" /> <State value="Resolved" type="Resolved" /> <State value="Closed" type="Complete" /> </States> </BugWorkItems>
此外,RequirementWorkItems 和 BugWorkItems 之下的轉移狀態對應必須一致。 例如,不能一個下面的 Active 對應至 Proposed,而在另一個下面對應至 InProgress。
若要更新 ProcessConfiguration,請參閱匯入和匯出流程組態 [witadmin]。
WIT 定義:內含在 Bug 分類中的 WIT 必須定義下列欄位:
用來追蹤投入時間的欄位 (ProcessConfiguration 檔案中的 type=Effort),例如,劇本點 (Microsoft.VSTS.Scheduling.StoryPoints) 或大小 (Microsoft.VSTS.Scheduling.Size),取決於是使用 Agile 或 CMMI 流程範本來建立 Team 專案。
用來追蹤待處理項目優先順序的欄位 (ProcessConfiguration 檔案中的 type=Order),例如,堆疊順位 (Microsoft.VSTS.Common.StackRank)。
若為以 MSF for CMMI 為基礎的 Team 專案,則需定義 [需求類型] (Microsoft.VSTS.CMMI.RequirementType) 欄位,因為其包含在程序組態的快速加入面板中。
若要更新 WIT 定義,請參閱匯入、匯出和管理工作項目類型 [witadmin]。
驗證或更新看板資料行對應
開啟產品待處理項目 [面板] 頁面 (看板)。
如果您看到訊息指出資料行組態無效,則需要調整資料行對應。
開啟 [自訂欄],並對應每個已定義資料行的 Bug 工作流程狀態。
例如,對應每個資料行,如下所示:
選項 B:所有小組都在待處理項目上追蹤 Bug 或其他 WIT
您加入至需求分類的 WIT 會出現在待處理項目頁面中。 若要將 Bug 顯示在 [使用者劇本] (Agile) 或 [需求] (CMMI) 待處理項目頁面上,請對 TFS 內部部署 Team 專案進行下列修改:
將用來預估投入時間的欄位加入 Bug 或其他 WIT 定義:劇本點 (Agile) 或大小 (CMMI)。
將 Bug 或其他 WIT 加入至需求分類。
確認流程組態中的 metastate 對應。
以下是對根據 MSF for Agile 流程範本的 Team 專案新增 Bug WIT 的做法。
加入劇本點欄位
匯出 Bug WIT 定義。
witadmin exportwitd /collection:" CollectionURL" /p:MyProject /n:bug /f:DirectoryPath/bug.xml
加入 [本文點] 欄位。
<FIELDS> . . . . <FIELD name="Story Points" refname="Microsoft.VSTS.Scheduling.StoryPoints" type="Double" reportable="measure" formula="sum"> <HELPTEXT>The size of work estimated for implementing the bug.</HELPTEXT> </FIELD> . . . . </FIELDS>
若為以 MSF for CMMI 為基礎的 Team 專案,請加入 [大小] 和 [需求類型]。
<FIELD name="Size" refname="Microsoft.VSTS.Scheduling.Size" type="Double" reportable="measure" formula="sum" > <HELPTEXT>The size of work estimated for implementing this requirement</HELPTEXT> </FIELD> <FIELD name="Requirement Type" refname="Microsoft.VSTS.CMMI.RequirementType" type="String" reportable="dimension"> <REQUIRED /> <ALLOWEDVALUES> <LISTITEM value="Scenario" /> <LISTITEM value="Quality of Service" /> <LISTITEM value="Functional" /> <LISTITEM value="Operational" /> <LISTITEM value="Interface" /> <LISTITEM value="Security" /> <LISTITEM value="Safety" /> <LISTITEM value="Business Objective" /> <LISTITEM value="Feature" /> </ALLOWEDVALUES> <DEFAULT from="value" value="Functional" /> </FIELD>
將 [本文點] 加入至表單配置。
<FORM> . . . <Column PercentWidth="33"> <Group Label="Planning"> <Column PercentWidth="100"> <Control FieldName="Microsoft.VSTS.Scheduling.StoryPoints" Type="FieldControl" Label="Story Points" LabelPosition="Left" /> <Control FieldName="Microsoft.VSTS.Common.StackRank" Type="FieldControl" Label="Stack Rank" LabelPosition="Left" NumberFormat="DecimalNumbers" MaxLength="10" EmptyText="<None>" /> <Control FieldName="Microsoft.VSTS.Common.Priority" Type="FieldControl" Label="Priority" LabelPosition="Left" /> <Control FieldName="Microsoft.VSTS.Common.Severity" Type="FieldControl" Label="Severity" LabelPosition="Left" /> </Column> </Group> </Column> . . . </FORM>
若為以 CMMI 為基礎的 Team 專案,請將 [大小] 和 [需求類型] 加入 FORM 區段。
<Control Type="FieldControl" FieldName="Microsoft.VSTS.Scheduling.Size" Label="Size" LabelPosition="Left" /> <Control Type="FieldControl" FieldName="Microsoft.VSTS.CMMI.RequirementType" Label="Type" LabelPosition="Left" />
匯入已更新的 Bug 定義。
witadmin importwitd /collection:"CollectionURL" /p:MyProject /f:"DirectoryPath/bug.xml"
將 Bug WIT 加入需求分類
匯出分類定義。 如果您沒有 TFS 系統管理權限,請取得這些權限。
witadmin exportcategories /collection:"CollectionURL" /p:MyProject /f:"DirectoryPath/categories.xml"
將 Bug 工作項目類型加入至 [需求分類]。
<CATEGORY refname="Microsoft.RequirementCategory" name="Requirement Category"> <DEFAULTWORKITEMTYPE name="User Story" /> <WORKITEMTYPE name="Bug" /> </CATEGORY>
匯入分類檔案。
witadmin importcategories /collection:"CollectionURL" /p:MyProject /f:"DirectoryPath/categories.xml"
確認流程組態中的 metastate 對應。
匯出流程組態定義。
witadmin exportprocessconfig /collection:"CollectionURL" /p:MyProject /f: "DirectoryPath/ProcessConfiguration.xml"
確認 [已解決] 狀態定義於 RequirementBacklog 區段。
<RequirementBacklog category="Microsoft.RequirementCategory" pluralName="Stories" singularName="User Story"> <States> <State value="New" type="Proposed" /> <State value="Active" type="InProgress" /> <State value="Resolved" type="InProgress" /> <State value="Closed" type="Complete" /> </States>. . . </RequirementBacklog>
如果您已自訂 Bug 來加入其他狀態,則請加入每個已加入狀態的對應。 請一律將正向轉換內的最後一個狀態對應至 type="Complete"。
匯入流程組態。
witadmin importprocessconfig /collection:"CollectionURL" /p:MyProject /f:"DirectoryPath/ProcessConfiguration.xml"
確認您可以將 Bug 加入至產品待處理項目
開啟產品待處理項目頁面,如果頁面已經開啟,則加以重新整理。
您應該會看到工作項目的 [類型] 下拉式功能表。
自訂看板,以將 Bug 狀態對應至泳道。
開啟產品待處理項目 [面板] 頁面 (看板)。
如果您剛剛加入 Bug 工作項目類型或任何其他工作項目類型,則會看到一則訊息,指出資料行組態無效。
開啟 [自訂欄],並對應每個已定義資料行的 Bug 工作流程狀態。
例如,對應每個資料行,如下所示:
選項 C:所有小組都在工作面板上追蹤 Bug 或其他 WIT
您加入至工作分類的 WIT 會出現在工作面板和反覆項目待處理項目頁面中。 若要讓 Bug 或工作出現在工作面板上,您必須將其連結至父產品待處理項目 (Scum)、使用者劇本 (Agile) 或需求 (CMMI)。
針對 TFS 內部部署,請進行下列修改,以將 Bug 當作工作來追蹤:
將必要欄位加入 Bug WIT 定義。
將 Bug WIT 加入工作分類。
將必要 metastate 對應加入至流程組態。
以下是對根據 MSF for Agile 流程範本的 Team 專案執行此動作的做法。
加入必要欄位
如果您沒有 Team 專案的系統管理權限,請加入成為 Project Administrator。
開啟安裝 Visual Studio 或 Team Explorer 的命令提示字元視窗,並輸入:
cd %programfiles%\Microsoft Visual Studio 12.0\Common7\IDE
在 Windows 64 位元版本中,將 %programfiles% 取代為 %programfiles(x86)%。 您可以免費下載 Team Explorer。
匯出 Bug 工作項目類型定義檔
witadmin exportwitd /collection:"CollectionURL" /p:MyProject /n:bug /f: "DirectoryPath/bug.xml"
CollectionURL 的範例是 "http://MyServer:8080/tfs/TeamProjectCollectionName"。
加入 [活動] 欄位。 如果不這麼做,組態就會無效。 或者,加入排程欄位,以便追蹤剩餘工作和已完成工作。 Microsoft.VSTS.Scheduling.XXX 欄位是用於內建預設報表,並非供敏捷式計劃工具使用。 如果您的小組不會使用這些欄位,就不需要加入它們。
<FIELDS> . . . <FIELD name="Activity" refname="Microsoft.VSTS.Common.Activity" type="String" reportable="dimension"> <HELPTEXT>Type of work involved</HELPTEXT> <SUGGESTEDVALUES> <LISTITEM value="Development"/> <LISTITEM value="Testing"/> <LISTITEM value="Requirements"/> <LISTITEM value="Design"/> <LISTITEM value="Deployment"/> <LISTITEM value="Documentation"/> </SUGGESTEDVALUES> </FIELD> <FIELD name="Remaining Work" refname="Microsoft.VSTS.Scheduling.RemainingWork" type="Double" reportable="measure" formula="sum"> <HELPTEXT>An estimate of the number of units of work remaining to complete this task</HELPTEXT> </FIELD> <FIELD name="Original Estimate" refname="Microsoft.VSTS.Scheduling.OriginalEstimate" type="Double" reportable="measure" formula="sum"> <HELPTEXT>Initial value for Remaining Work - set once, when work begins</HELPTEXT> </FIELD> <FIELD name="Completed Work" refname="Microsoft.VSTS.Scheduling.CompletedWork" type="Double" reportable="measure" formula="sum"> <HELPTEXT>The number of units of work that have been spent on this task</HELPTEXT> </FIELD> <FIELD name="Start Date" refname="Microsoft.VSTS.Scheduling.StartDate" type="DateTime" reportable="dimension"> <HELPTEXT>The date to start the task</HELPTEXT> </FIELD> <FIELD name="Finish Date" refname="Microsoft.VSTS.Scheduling.FinishDate" type="DateTime" reportable="dimension"> <HELPTEXT>The date to finish the task</HELPTEXT> </FIELD> . . . </FIELDS>
對於根據 MSF for CMMI 的 Team 專案,您將加入 [專業領域] 和排程欄位。
<FIELD name="Discipline" refname="Microsoft.VSTS.Common.Discipline" type="String" reportable="dimension"> <ALLOWEDVALUES> <LISTITEM value="Analysis" /> <LISTITEM value="User Experience" /> <LISTITEM value="User Education" /> <LISTITEM value="Development" /> <LISTITEM value="Test" /> </ALLOWEDVALUES> <HELPTEXT>The discipline to which the task belongs</HELPTEXT> </FIELD>
將 [活動] 和排程欄位加入至工作項目表單。 您可以僅複製 [工作] 工作項目類型中所定義的 Groups,並取代現有的 Groups。
<FORM> . . . <Group Margin="(10,0,0,0)"> <Column PercentWidth="30"> <Group Label="Status"> <Column PercentWidth="100"> <Control FieldName="System.AssignedTo" EmptyText="<No one>" Type="FieldControl" Label="Assi&gned To" LabelPosition="Left" /> <Control FieldName="System.State" Type="FieldControl" Label="Stat&e" LabelPosition="Left" /> <Control FieldName="System.Reason" Type="FieldControl" Label="Reason" LabelPosition="Left" /> </Column> </Group> </Column> <Column PercentWidth="20"> <Group Label="Planning"> <Column PercentWidth="100"> <Control FieldName="Microsoft.VSTS.Common.StackRank" Type="FieldControl" Label="Stack Rank" LabelPosition="Left" NumberFormat="DecimalNumbers" MaxLength="10" EmptyText="<None>" /> <Control FieldName="Microsoft.VSTS.Common.Priority" Type="FieldControl" Label="Priority" LabelPosition="Left" /> <Control FieldName="Microsoft.VSTS.Common.Activity" Type="FieldControl" Label="Activity" LabelPosition="Left" EmptyText="<None>" /> </Column> </Group> </Column> <Column PercentWidth="30"> <Group Label="Classification"> <Column PercentWidth="100"> <Control FieldName="System.AreaPath" Type="WorkItemClassificationControl" Label="&Area" LabelPosition="Left" /> <Control FieldName="System.IterationPath" Type="WorkItemClassificationControl" Label="Ite&ration" LabelPosition="Left" /> </Column> </Group> </Column> <Column PercentWidth="20"> <Group Label="Effort (Hours)"> <Column PercentWidth="100"> <Control FieldName="Microsoft.VSTS.Scheduling.OriginalEstimate" Type="FieldControl" Label="Original Estimate" LabelPosition="Left" /> <Control FieldName="Microsoft.VSTS.Scheduling.RemainingWork" Type="FieldControl" Label="Remaining" LabelPosition="Left" /> <Control FieldName="Microsoft.VSTS.Scheduling.CompletedWork" Type="FieldControl" Label="Completed" LabelPosition="Left" /> </Column> </Group> </Column> </Group> . . . </FORM>
匯入已更新的 Bug 定義。
witadmin importwitd /collection:"CollectionURL" /p:MyProject /f:"DirectoryPath/bug.xml"
將 Bug WIT 加入工作分類
匯出分類定義。
witadmin exportcategories /collection:"CollectionURL" /p:MyProject /f:"DirectoryPath/categories.xml"
將 Bug 加入至工作分類。
<CATEGORY refname="Microsoft.TaskCategory" name="Task Category"> <DEFAULTWORKITEMTYPE name="Task" /> <WORKITEMTYPE name="Bug" /> </CATEGORY>
注意事項 Bug 工作項目類型可以同時屬於兩個分類:Bug 分類和工作分類。
匯入分類檔案。
witadmin importcategories /collection:"CollectionURL" /p:MyProject /f:"DirectoryPath/categories.xml"
將 metastate 對應加入至流程組態。
匯出流程組態定義。
witadmin exportprocessconfig /collection:"CollectionURL" /p:MyProject /f:"DirectoryPath/ProcessConfiguration.xml"
將 [已解決] 狀態的 metatstate 對應加入至 TaskBacklog 區段。
<TaskBacklog category="Microsoft.TaskCategory" pluralName="Tasks" singularName="Task"> <States> <State value="New" type="Proposed" /> <State value="Active" type="InProgress" /> <State value="Resolved" type="InProgress" /> <State value="Closed" type="Complete" /> </States> . . . </TaskBacklog>
如果您已自訂 Bug 來加入其他狀態,則請加入每個已加入狀態的對應。 請一律將正向轉換內的最後一個狀態對應至 type="Complete"。
匯入流程組態。
witadmin importprocessconfig /collection:"CollectionURL" /p:MyProject /f:"DirectoryPath/ProcessConfiguration.xml"
確認您可以將 Bug 加入至工作面板
開啟工作面板頁面,如果頁面已經開啟,則加以重新整理。
您應該可以選取工作或 Bug 做為使用者劇本的連結工作項目。
若要將現有的 Bug 加入至工作面板,請開啟使用者劇本。 在這個範例中,使用者劇本的標題為 Bug debt。 從 [所有連結] 索引標籤選擇要包含在衝刺中的 Bug。
您可能必須重新整理工作面板,讓 Bug 可以出現。
提示
由於只限於工作使用,您無法透過 [實作] 索引標籤加入 Bug。若要透過 [實作] 索引標籤加入 Bug,請將使用者劇本工作項目類型的 FORM 區段修改為包含 Bug 的篩選條件。
在工作面板上,拖曳 Bug 或工作以更新其狀態。 您會發現您無法將項目拖曳至無效狀態的資料行。 例如,您無法將 Bug 拖曳至新增狀態中,或是將工作拖曳至已解決狀態中。 如果您想要使用這些狀態,則將其加入對應 WIT 定義的工作流程定義。
問與答
問:我可以使用哪些其他工具來編輯 XML 定義檔案?
**答:**您可以使用 witadmin 命令列工具來匯入和匯出定義檔案,如本主題中所示。 其他可以用來執行這項工作的工具為流程編輯器,可藉由從 TFS Power Tools 或 TFS Team Project Manager (CodePlex 提供的社群資源專案)下載取得。 您可以使用 TFS Team Project Manager 快速匯出、編輯和匯入 XML 定義檔案,而不需要使用命令列介面。
問:如果我針對 Scrum 的 Team 專案,將 Bug WIT 從需求分類中移除,會發生什麼事?
**答:**參考需求分類的現成和自訂查詢不會再傳回含有 Bug WIT 的結果。 您可能會想要更新這些查詢。
當您依需求建立測試套件時,所擷取的工作項目屬於需求分類。 針對想要為 Bug 建立測試計劃的 Scrum 小組,其需要更新查詢來包含 Bug 分類。
問:我需要知道轉移狀態對應的什麼相關資訊?
**答:**此程序在「選項 B」和「選項 C」中說明如何變更以 TFS 2013 提供之 Agile 和 CMMI 流程範本為基礎來建立的 Team 專案。 您所加入之 WIT 的狀態模型必須與 ProcessConfiguration 檔案中指定的轉移狀態對應一致。 如果狀態模型和轉移狀態對應不一致,就必須建立其他定義,如這裡所述。
問:如何讓 Bug 顯示在 Scrum 的 [工作] 待處理項目和面板頁面?
**答:**如果您的 Team 專案是根據 Scrum 流程範本,而且想要 Bug 成為含有工作 (而非產品待處理項目) 的對等項目,請遵循下列步驟:
編輯 Bug 工作項目定義:將 [活動] 和 [剩餘工作] 欄位加入至 FIELDS 和 FORM 區段。
編輯 [分類] 定義:將 Bug 加入 [工作分類],並將它從 [需求分類] 中移除。
編輯流程組態定義:對應 [工作分類] 的 [已解決] 狀態,並將它從 [需求分類] 中移除。
問:為什麼我指派給衝刺的 Bug 和工作未全部顯示在衝刺待處理項目上?
**答:**您可以將工作指派給反覆項目,但無法將它們連結至父待處理項目。 這些項目將會顯示在已建立的查詢中,但是不會顯示在工作面板本身。 TFS 會先執行查詢,然後套用一些背景流程,再顯示工作面板項目。
這三個原因會導致屬於工作分類的工作項目不會出現在衝刺待處理項目或工作面板上:
工作尚未連結至父待處理項目。 只有已連結至反覆項目路徑設定為衝刺之父產品待處理項目 (Scrum)、使用者劇本 (Agile) 或需求 (CMMI) 的 Bug 和工作,才會顯示在衝刺待處理項目頁面上。
該工作是其他工作的父項。 如果您已建立工作階層,則只會出現階層底部的子層級工作。
工作的連結父項對應至為其他小組定義的待處理項目。 或者,工作的父待處理項目區域路徑不同於工作的區域路徑。
問:如何使用 [待處理項目優先權] 或 [堆疊順位] 欄位?
**答:**待處理項目和面板頁面使用 [待處理項目優先權] (Scrum) 和 [堆疊順位] (Agile 和 CMMI) 欄位管理工作項目的排序順序。 應該要為 Team 專案的所有 WIT 定義這些欄位。 不過,您不需要將它們併入工作項目表單上。 這個欄位必須符合 ProcessConfiguration 定義檔案中指派給 Order 類型的欄位。