{"id":21304887,"url":"https://github.com/parasoft/soatesttomtm","last_synced_at":"2026-01-01T21:58:53.617Z","repository":{"id":89650968,"uuid":"65496399","full_name":"parasoft/SOAtestToMTM","owner":"parasoft","description":"SOAtest report importer for Microsoft Test Manager","archived":false,"fork":false,"pushed_at":"2016-09-08T21:18:53.000Z","size":1497,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-15T19:31:17.865Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/parasoft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-08-11T19:36:30.000Z","updated_at":"2016-08-29T20:08:58.000Z","dependencies_parsed_at":null,"dependency_job_id":"f51d81e8-3002-4eb3-adc1-4d0162312474","html_url":"https://github.com/parasoft/SOAtestToMTM","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/parasoft/SOAtestToMTM","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parasoft%2FSOAtestToMTM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parasoft%2FSOAtestToMTM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parasoft%2FSOAtestToMTM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parasoft%2FSOAtestToMTM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/parasoft","download_url":"https://codeload.github.com/parasoft/SOAtestToMTM/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parasoft%2FSOAtestToMTM/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28164129,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2026-01-01T02:00:06.694Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-21T16:16:16.694Z","updated_at":"2026-01-01T21:58:53.603Z","avatar_url":"https://github.com/parasoft.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SOAtestToMTM\r\n\r\nThis open source example shows how to import Parasoft SOAtest report.xml test results into Microsoft Test Manager.\r\n\r\nThis solution includes two projects:\r\n\r\n`SOAtestParser`: Shows how to parse SOAtest reports. \r\n`MTMImporter`: Takes the results and sends to Microsoft Team Foundation Server.  \r\n\r\n## Prerequisites\r\n\r\nThis example supports \r\n* SOAtest 9.9.x \r\n* Team Foundation Sever 2013 or above\r\n* Visual Studio 2013 or above\r\n\r\nSOAtest and MTM must be set up with the appropriate association structure.\r\n\r\n###### Disclaimer\r\nSOAtest report formats may updated be in future updates of SOAtest. If so, report parsing will need to be adjusted.\r\n\r\n### MTM Set Up\r\n\r\nMTM test plans must be set up correctly for the importer to able to associate the tests.\r\n\r\nUser must know the test plan id and its test ids before configuring SOAtest. If there are no test plans in the project yet, please follow MTM documentation on how to add test plans/test cases.\r\n\r\nThe Test Plan ID can be found in MTM Test Center or using the web client.\r\n![Test Center](/images/testcenter.jpg)\r\n\r\n![Web Client](/images/webclient.jpg)\r\n\r\nThe Test Case ID can be found by drilling down into each test suite within the test plan, Test Suite ids will not be used by the importer.\r\n\r\n![Tests](/images/test.jpg)\r\n\r\n![Web Client Tests](/images/webtest.jpg)\r\n\r\n### SOAtest Set Up\r\nIn SOAtest, configure the .tst's root Test Suite with the requirement information that corresponds to the MTM Test Plan structure.\r\n\r\n![SOAtest Screenshot](/images/requirement.jpg)\r\n\r\nIn each test suite's Requirement and Notes tab, add the association for each test. The association added for each Test Suite will be inherited by its children.\r\n\r\n@req represents a Test Plan\r\n@pr represents a Test Case\r\n\r\nThe test results are correlated using the following logic:\r\nEach test plan (associated with @req) can contain multiple test cases (associated with @pr). Each individual SOAtest test result is considered to be a test case step.\r\n\r\n```\r\nExample.tst\r\n ---TestSuite associates with @req 1\r\n   ---Test associated with @pr 2\r\n   ---Test associated with @pr 2\r\n ---TestSuite associates with @req 3\r\n   ---Test associated with @pr 4\r\n```\r\n\r\nwill be translated into this in TFS\r\n\r\n```\r\nTestPlan with id 1\r\n  ---Test Case with id 2\r\n     ---two test steps\r\nTest Plan with id 3\r\n  ---Test Case with id 4\r\n```\r\n\r\n## How to Build\r\n\r\n### Visual Studio\r\n* Open the SOAtestToMTM solution in Visual Studio\r\n* Update the missing Nuget Dependencies by enabling Nuget Restore \r\n* Build the Solution\r\n\r\n### Command Line\r\n* Update the missing Nuget Dependencies with nuget.exe install SOAtestToMTMT/MTMImporter/packages.config\r\n* In the VS Developer Command Prompt, build the solution with msbuild SOAtestToMTM.sln\r\n\r\n## How to Run\r\nRunning MTMImporter.exe with --help will show the required parameters:\r\n![Help](/images/help.jpg)\r\n\r\nThis importer example also includes a simple cipher to encrypt passwords.\r\n\r\n```\r\n MTMImporter.exe --encrypt 'password'\r\n 8oT4LZP6D3g2aord/gkXmR/Myfw/1M4F\r\n```\r\n\r\nExample command line:\r\n\r\n```\r\n C:\\Example\u003eMTMImporter.exe --uri http://tfs2013.parasoft.com:8080/tfs/DefaultCollection --username user \r\n --password pass --domain PARASOFT -- project \"Project A\" --report \"C:\\Report\\report.xml\"\r\n```\r\n\r\n\r\n## Parsing SOAtest results (report.xml)\r\n\r\n### Overview\r\nReport.xml contains a lot of information; here, we will focus only on several key elements.\r\n\r\nOur example uses XMLReader for the sake of simplicity and efficiency. It expects elements in the following order (default order):\r\n\r\n1. `ResultsSession` root element and its attributes to get general test run information, such as project, session tag, test start time and build number.\r\n2. `TestConfig` element for the configuration and user.\r\n3. `ExecutedTestsDetails` element and its children to gather test results.\r\n4. `FuncViols` element for test failures.\r\n\r\n##### ResultsSession\r\nResultsSession is the root element in SOAtest report.xml. The following attributes will be used to populate information for a MTM Test Run.\r\n* `buildId`: For build number.\r\n* `project`: For project name.\r\n* `tag`: For test environment. Note that tag is a user-defined field (\"Session Tag\" in SOAtest). It can be used to group multiple reports-- in this case, we group by test environment.\r\n* `time`: For time start time.\r\n\r\n##### TestConfig\r\n`TestConfig` is the first child element in `ResultsSession`.\r\n* `name`: For the Configuration name.\r\n* `user`: For the test run user.\r\n\r\n\r\n##### ExecutedTestsDetails\r\n`ExecutedTestsDetails` is the next element that will be parsed. It contains multiple levels that eventually traverse down to 'Test' elements that contain the results of each individual test.\r\nTest results are collected in the parent `TestSuite`, which can be self-nested. \r\nThe hierarchy is represented as:  `ExecutedTestsDetails` --\u003e `Total` --\u003e `Project` (tst files) --\u003e nesting `TestSuites` --\u003e `Test`\r\nThe attributes used in `Test` elements are:\r\n* `id`: For mapping test failure messages later.\r\n* `fail`: With value \u003e 0, indicates that the test failed.\r\n* `pass`: With value \u003e 0, indicates that the test passed.\r\n* `startTime`: The time (in ms) that the test started.\r\n* `time` The duration of the test (from start until completion).\r\n\r\n##### assoc\r\n`assoc`: Assoc elements are children of `Test`. They contain the requirement associations that were specified in each test suite.\r\n* `tag`: The association tag used to determine if the test is associated with a Test Run \"req\" or a Test Case \"pr\".\r\n* `id`: The corresponding id of the Test Run or Test Case in TFS.\r\n\r\n#### FuncViols\r\n`FuncViols`: A list of `FuncViol` that contains the following attributes:\r\n* `sev`: The severity of the test result (1 is the highest).\r\n* `taskType`: The type the failure; typical values are \"Miscellaneous Errors\".\r\n* `msg`: The failure message, which can be added as a comment to the Test Case.\r\n* `testCaseId`: The id of the test case that caused this failure.\r\n\r\n## Importing results into MTM\r\n\r\nThe `MTMImporter` project uses the [Team Foundation Server API](https://msdn.microsoft.com/en-us/library/bb130146(v=vs.120).aspx) to construct results for Test Plans.\r\nIt re-maps the parsed ResultSession object into a list of `TFSTestRun` and creates run results in MTM.\r\nThe test results are re-arranged according to the logic mentioned in the prerequisites:\r\nEach test run (associated with @req) can contain multiple test cases (associated with @pr). Each indivdual test result in SOAtest is considered to be a test case step.\r\n\r\n\r\n\r\n## License\r\nPlease consult the attached LICENSE file for details. All rights not explicitly granted by the Apache 2.0 license are reserved by the Parasoft Corporation.\r\n\r\n## Third Party\r\nActive Directory Authentication Library\r\nMicrosoft Corporation\r\nVersion 2.22.302111727\r\nhttps://github.com/AzureAD/azure-activedirectory-library-for-dotnet/blob/master/LICENSE\r\n\r\nJSON Web Token Handler For the Microsoft .Net Framework 4.5\r\nMicrosoft Corporation\r\nVersion 4.0.2.206221351\r\nhttps://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/blob/master/LICENSE.txt\r\n\r\nJson.NET\r\nJames Newton-King\r\nVersion 8.0.2\r\nhttps://raw.githubusercontent.com/JamesNK/Newtonsoft.Json/master/LICENSE.md\r\n\r\nMicrosoft Visual Studio Services Client\r\nMicrosoft Corporation\r\nVersion 14.89.0\r\nhttps://www.microsoft.com/net/dotnet_library_license.htm\r\n\r\nMicrosoft Visual Studio Services Client (Interactive)\r\nMicrosoft Corporation\r\nVersion 14.89.0\r\nhttps://www.microsoft.com/net/dotnet_library_license.htm\r\n\r\nMiscrosoft ASP.NET Web API 2.2 Client Libraries\r\nMicrosoft Corporation\r\nVersion 5.2.3\r\nhttps://www.microsoft.com/web/webpi/eula/net_library_eula_enu.htm\r\n\r\nMiscrosoft ASP.NET Web API 2.2 Core Libraries\r\nMicrosoft Corporation\r\nVersion 5.2.3\r\nhttps://www.microsoft.com/web/webpi/eula/net_library_eula_enu.htm\r\n\r\nMicrosoft Azure Service Bus\r\nMicrosoft Corporation\r\nVersion 3.1.3\r\nhttp://go.microsoft.com/fwlink?LinkId=218949\r\n\r\nMicrosoft Azure Configuration Manager\r\nMicrosoft Corporation\r\nVersion 3.2.1\r\nhttps://raw.githubusercontent.com/WindowsAzure/azure-sdk-for-net/master/LICENSE.txt\r\n\r\nMicrosoft Team Foundation Server Client\r\nMicrosoft Corporation\r\nVersion 14.89.0\r\nhttps://www.microsoft.com/net/dotnet_library_license.htm\r\n\r\nMicrosoft Team Foundation Server Extended Client\r\nMicrosoft Corporation\r\nVersion 14.89.0\r\nhttps://www.microsoft.com/net/dotnet_library_license.htm\r\n\r\nCommand Line Parser Library\r\nGiacomo Stelluti Scala\r\nVersion 1.9.71\r\nhttps://github.com/gsscoder/commandline/blob/master/License.md\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparasoft%2Fsoatesttomtm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparasoft%2Fsoatesttomtm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparasoft%2Fsoatesttomtm/lists"}