Geeks With Blogs

News




View Tarun Arora's profile on LinkedIn

profile for Tarun Arora at Stack Overflow, Q&A for professional and enthusiast programmers

Tarun Arora - Visual Studio ALM MVP ALM, Agile, Automation, Performance Testing, Software QA, Cloud, ...

 

In this blog post I’ll show you how to use the TFS 2011 API to get the Exploratory Testing & Feedback Manager session information programmatically.

Introduction

TFS 2011 includes Exploratory Testing and Feedback Manager, the first empowers the testers to explore the application and second empowers the stake holders to explore the application. This rhymes a bit… that’s because… under the hood both use the same infrastructure to drive and store the session information. If you try to run both at the same time on a machine you will run in to the following warning message.

image

Note both Feedback manager and Exploratory testing store the results in the table [Tfs_DefaultCollection].[dbo].[tbl_Session] in the TFS operational database.

image

Note - Any direct interaction (including select statements) against the TFS operational databases is strongly discouraged by the Product Team. All such interactions should be done through the TFS SDK.  

How to get the Exploratory Session and Feedback Manager Session programmatically using TFS API…

Download Working Demo… Or follow the steps below,

image

1. Add references

using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.TestManagement.Client;

 

2. Connect to TFS and select a Team Project

private TfsTeamProjectCollection _tfs;
private string _selectedTeamProject;

private void ConnectToTfsAndPickAProject()
{
     // Connect to TFS and pick team project
     TeamProjectPicker tfsPP = new TeamProjectPicker(TeamProjectPickerMode.SingleProject, false);
     tfsPP.ShowDialog();
     this._tfs = tfsPP.SelectedTeamProjectCollection;
     this._selectedTeamProject = tfsPP.SelectedProjects[0].Name;
 }

3. Get access to Session Helper

// Get the Session Helper 
var tms = _tfs.GetService<ITestManagementService>();
var sessionHelper = tms.GetTeamProject(_selectedTeamProject).SessionHelper;

4. Now use the session helper to query for the session Information, for example in the snippet below I am simply getting all sessions,

// Get Session by Query
var sessionByQuery = sessionHelper.Query("Select * from Session");
dataGridView1.DataSource = sessionByQuery.ToList();
dataGridView1.AutoGenerateColumns = true;
// I could write a more specific query
var sessionQueryExample = sessionHelper.Query("Select * from Session where TestPlanId =3");
 

BONUS – Go one step further...

5. Get Session Information by Link Id: In the Links section in a Bug you can see the test results attachment, you can use the ‘FindByLinkId’ method to get the details of that session programmatically.

// Get Session details for a bug raised during session testing
            // 1. Get the bug 
            var qBug = @"SELECT 
                            [System.Id], 
                            [System.Links.LinkType], 
                            [System.WorkItemType], 
                            [System.Title], 
                            [System.State], 
                            [Custom.TestingTour],
                            [Microsoft.VSTS.Common.Priority] 
                        FROM WorkItems 
                        WHERE [System.TeamProject] = '@project'  
                            AND  [System.WorkItemType] = 'Bug'"
                .Replace("@project", _selectedTeamProject);

            // Get the Wi Store service
            var wis = _tfs.GetService<WorkItemStore>();

            var queryBug = new Query(wis, qBug);
            var bugs = queryBug.RunQuery();

            // 2. Get the Uri of the session from the bug
            foreach (WorkItem bug in bugs)
            {
                foreach (Link l in bug.Links)
                {
                    if (l.ArtifactLinkType != null && l.ArtifactLinkType.Name == "Test Result")
                    {
                        // 3. Get Session Information By URI
                        var sessionByUri = sessionHelper.FindByLink(new Uri(((ExternalLink)l).LinkedArtifactUri));
                    }
                }
            }

 

 

Download the working demo.

You might also enjoy reading => How to customize Process Template In TFS 2011.

Hope you enjoyed this post! Remember to subscribe to http://feeds.feedburner.com/TarunArora.

Enjoy In love

 

Share this post :
Posted on Monday, December 12, 2011 11:21 PM TFS API , TFS2012 , MTM | Back to top


Comments on this post: TFS 2011 API–How to Get Exploratory Testing And Feedback Manager Session Information Programmatically

comments powered by Disqus

Copyright © Tarun Arora [Microsoft MVP] | Powered by: GeeksWithBlogs.net | Join free