2016-10-30 5 views
0

팀 프로젝트에서 작업 항목 연결 관계에 대한 세부 정보가있는 VSTS Team Project에 대한 보고서를 만들려고했습니다. 예 : Epics → 기능 → 사용자 스토리. Epics & 기능과 기능 & UserStories간에 상위/하위 관계가 있으므로이 작업 항목과 해당 관계에 대한 모든 세부 정보가 포함 된 보고서 (.csv 또는 .xls)를 만들고 싶습니다.작업 항목 Visual Studio Team Services (VSTS)의보고 용 쿼리/스크립트

누군가가 나에게이 작업을 수행하는 가장 쉽고 쉬운 방법을 알려 줄 수 있습니까?

답변

0

(VS 또는 팀 탐색기에 포함 된) TFS 추가 기능으로 프로젝트를 통해 확인할 수 있습니다. => 팀 프로젝트를 선택

  • 얻기를 클릭하면 작업 항목 => 해당 쿼리를 선택 => 찾기 => 선택

    1. 쿼리 (작업 항목의 나무) enter image description here
    2. 프로젝트 열기
    3. 클릭 팀 만들기 모든 =이> OK enter image description here

    은 그 후 당신은 또한 해당 제목을 클릭하여 상위 항목을 축소 할 수 있습니다, 프로젝트의 결과를 확인할 수 있습니다.

    Excel 추가 기능이있는 TFS API를 사용하여 프로그래밍 방식으로 구현할 수 있습니다.

    1. document level excel add-in project
    2. Query.RunLinkQuery 방법을 사용하여 Microsoft Team Foundation Server Extended Client package
    3. 실행 쿼리를 설치 만듭니다.
    4. 귀하의 세부 요구 사항에 따라 엑셀 요구 사항 테스트 스위트
    5. 데이터를 저장 시험 결과의 작업 항목을 연결하기 이러한 테스트 케이스의
    6. 확인 테스트 결과를 테스트 케이스를 가져옵니다.

    간단한 코드 : 정보에 대한 starain..Thanks @

    var credentials = new NetworkCredential("[user name]", "[password]"); 
          TfsTeamProjectCollection tfsCollection = new TfsTeamProjectCollection(new Uri("https://XX.visualstudio.com")); 
          ITestManagementService tms = tfsCollection.GetService<ITestManagementService>(); 
          ITestManagementTeamProject teamProject = tms.GetTeamProject("[team project name]"); 
          WorkItemStore workitemstore = tfsCollection.GetService<WorkItemStore>(); 
          QueryHierarchy queryRoot = workitemstore.Projects["[team project name]"].QueryHierarchy; 
          QueryFolder queryFolder = queryRoot["Shared Queries"] as QueryFolder; 
          QueryDefinition qd = queryFolder["[query name]"] as QueryDefinition; 
          Dictionary<string, string> variables = new Dictionary<string, string>(); 
          variables.Add("project", "[team project name]"); 
          Query query = new Query(workitemstore, qd.QueryText, variables); 
    
          var results = query.RunLinkQuery(); 
          foreach(var lr in results) 
          { 
           //check relationship according to sourceId, TargetId and LinkTypeId (2: child) 
           int parentId = lr.SourceId; 
           int currentId = lr.TargetId; 
          } 
    
          foreach (ITestPlan p in teamProject.TestPlans.Query("Select * From TestPlan")) 
          { 
           Console.WriteLine("Plan - {0} : {1}", p.Id, p.Name); 
    
           foreach (var suite in p.RootSuite.SubSuites) 
           { 
            IRequirementTestSuite requirementSuite = suite as IRequirementTestSuite; 
            if (requirementSuite != null) 
            { 
             var requirementId = requirementSuite.RequirementId; 
             //check requirementId with user story Id 
             foreach(var tc in requirementSuite.TestCases) 
             { 
              var lastResult = teamProject.TestResults.ByTestId(tc.Id).OrderByDescending(tr => tr.DateStarted).FirstOrDefault(); 
              if(lastResult.Outcome== Microsoft.TeamFoundation.TestManagement.Client.TestOutcome.Failed) 
              { 
               int[] ids= lastResult.QueryAssociatedWorkItems(); 
               foreach(int id in ids) 
               { 
                var wit = workitemstore.GetWorkItem(id); 
               } 
    
              } 
    
             } 
    
    
            } 
           } 
          } 
    
  • +0

    . 어떤 종류의 스크립팅/프로그래밍 도구를 사용하여 동일한 결과를 얻을 수 있습니까? 내가 더 이상 TestSuites (UserStories를 사용하여 생성 된 요구 사항 기반 테스트 스위트)를 얻고 그 TestSuites에 연결된 TestCases를 가져 오는 쿼리를 확장하고자하므로 스크립팅을 더 선호합니다. 예 : UserStory → TestSuite → TestCases. Epic → Feature → UserStory → TestSuite → TestCases → TestResult → Bug (테스트 결과가 "Fail"인 경우) 최종 보고서의 요구 사항은 다음과 같습니다. 이런 종류의 데이터를 단일 보고서로 가져올 수 있습니까? – Srini33

    +0

    @ Srini33 예, 프로그래밍 방식으로 TFS API를 사용하여이를 달성 할 수 있습니다. 제 대답을 업데이트했습니다. –

    +0

    @ starain.. 정보에 감사드립니다. 가능하다면 TFS API 프로그래밍을 배우기 위해 inorder를 사용하는 가장 좋은 방법을 제안 해주십시오. 제가 처음이에요. 위의 프로그램을 이해하는 데는 시간이 좀 걸릴 것입니다. 나는 당신에게 내가 약간의 설명이 필요한지 알려줄 것입니다. – Srini33