In this post, I am going to talk about how to restore a deleted test suite. For deleting a test suite, a user needs to have manage test plan permission on the area path of the test plan. This is quite restrictive permission but still we have heard numerous instances where users have deleted the suites knowingly/unknowingly which have caused data loss for an organization. We don't have an automated way to restore deleted suites . You can restore it manually though by creating a replica of the deleted suite if you have a back up copy of the TFS database (both configuration and project collection) which contains the deleted test suite. Normally almost all the companies enforce to take backups so finding a backup having the deleted suite should not be very difficult.
Note: Querying or modifying SQL tables directly is not a supported option and can change in future versions. Steps mentioned below are provided “as-is” to help in identifying the deleted suites and recovering the deleted data from backups.
Now let us go through the steps you should perform to recover your deleted suite.
Select * from tbl_auditlog where ObjectType = 11
Sample output- --
PartitionId AuditId DateModified Action ObjectType ObjectID1 ObjectID2 ProjectId AuditIdentity
Over here DateModfied represents the date of deletion, ObjectID1 represents the deleted test suite Id and AuditIdentity is the TFS identity of user who deleted the suite.
For finding more information about the user who deleted the suite, run the following query on TFS configuration database
select * from tbl_Identity where Id = 'AuditIdentity'
You can also find deleted suites by following the steps mentioned here.
Since this test suite is deleted, current database would not hold any information of this suite. You need to find out the latest back up database in which the test suite was present. You already know the date of deletion of test suite, so pick up a database which was backed up just before the deletion date of suite.
Get basic information of test suite like ProjectName, TestPlanId, ParentSuiteId, Title, SuiteType, Query, RequirementId from the backup database using this SQL query:
select p.ProjectName, s.*from tbl_suite sjoin tbl_Project pon s.ProjectId = p.ProjectIdwhere s.SuiteId = @deletedSuiteId -- deletedSuiteId is the identity of deleted suite
Now in Microsoft Test Manager, connect to the project having its name as ProjectName. Find the test plan with its id as TestPlanId and connect to it. ParentSuiteId refers to the identity of the suite under which new suite needs to be created.
Suites can be of three different types which are as follows:
Type 1 represents Query Based Suite.
Type 2 represents Static Suite
Type 3 represents Requirement Based Suite.
If the Type is for Query Based Suite then create a query based suite. Set its query as Query and title as Title
If the Type is for Requirement Based Suite then create a requirement based suite. Select a requirement with id as RequirementId.
If the Type is for Static Suite, just create a new static suite and set its title as Title.
Find the configuration of the deleted suite using the following query on backup database
select inheritConfigs from tbl_suite where SuiteId = @deletedSuiteId
If inheritConfigs flag is 1 then just set "Inherit configurations from parent test suite" in Default Configurations window from Microsoft Test Manager otherwise we need to retrieve configurations for this test suite.You can retrieve them using the following query on backup database.
select c.* from tbl_SuiteConfiguration sjoin tbl_Configuration con s.ConfigurationId = c.ConfigurationIdwhere s.SuiteId = @deletedSuiteId
Now apply the configurations using MTM on the newly created suite.
Find the test cases associated with deleted suite by using the below SQL query on the backup database:
select e.TestCaseIdfrom tbl_SuiteEntry ewhere e.SuiteId = @deletedSuiteIdand e.TestCaseId <> 0
Add these test cases to the new test suite using Microsoft Test Manager
Note: - This step is not applicable for Query based suite.
Find the test results associated with deleted test suite by using the below SQL query on the backup database
select c.Name, r.*from tbl_TestResult rjoin tbl_Point pon r.TestPointId = p.PointId and r.TestRunId = p.LastTestRunId and r.TestResultId = p.LastTestResultIdjoin tbl_configuration con c.ConfigurationId = r.ConfigurationIdwhere p.SuiteId = @deletedSuiteId
The above query returns the last result for a given test case/configuration combination. Using the outcome field from for the above query, you should bulk mark the corresponding tests in your new suite. For example if OutCome value is 2 for a test case/configuration name , you should mark the corresponding test as passed.
Possible list of test outcome is as follows:
None = 1, Passed = 2, Failed = 3, Inconclusive = 4, Timeout = 5, Aborted = 6, Blocked = 7, NotExecuted = 8, Warning = 9, Error = 10, NotApplicable = 11, Paused = 12,
Note: - This step is optional and is applicable only for manual test cases.
Congratulations !! You have restored your suite now. Enjoy !!