Manager 9.7.1 Release Notes
July 19, 2019
We are happy to announce the release of qTest Manager 9.7.1 for our OnDemand customers! Here are a few release highlights:
-
APIs for Jira integration and configuration
-
New Site Templates APIs
-
New Project APIs and additional inputs
-
VERA integration pre-execution approval of Test Cases
New APIs to Automate Jira Integration Configuration and Retrieval
New APIs are available for our Jira Integration that automates the configuration and retrieval of Releases, Requirements, and Defects between qTest and your Jira instance. This is beneficial for Enterprise customers who want to manage their qTest Jira integration outside of the qTest UI.
Add a New Connection
The following APIs allow you to add a new Jira connection using either the username and password/token option, or through OAuth. If using OAuth, you will need to retrieve an authorize URL from Jira prior to attempting connection setup.
Add a new Jira connection, not using OAuth
- POST {qTest URL}/api/v3/projects/{projectId}/settings/integration/connection
- New connections are inactive. Once Jira Properties are added and configured you will use a separate API to activate the connection.
Sample Request: { "external_system": "Jira", "connection_name": "new connection", "server_url": "https://....", "web_url": "https://...." "authentication_type": "Token", "username": "...@tricentis.com", "token": "..." } |
Sample Response: { "Status": "Inactive", "Connection id":30009 } Jira Server=use Token or username/password for Jira Cloud= use Token Values in the sample request in bold cannot be changed. Atlassian deprecated the ability to configure a Jira connection using username/password for Jira Cloud in 2018. Therefore, you must use the Token method.
|
Retrieve a Jira OAuth authorize URL in the event you would like to add a new Jira connection using OAuth method. This API must be performed first, before adding a new connection using OAuth.
- GET {qTestURL}/api/v3/projects/0/settings/integration/connections/oauthAuthorizeURL?serverURL=...
Sample Response: { "jiraToken": "...", "jiraSecret": "...", "authorizeUrl": "https://.../plug-ins/servlet/oauth/authorize?oauth_token=..." } |
|
Add a new Jira connection, using OAuth
- POST {qTest URL}/api/v3/projects/{projectId}/settings/integration/connections
- New connections are inactive. Once Jira Properties are added and configured you will use a separate API to activate the connection.
Sample Request: { "external_system":"Jira", "connection_name":"https://...", "server_url":"https://...", “web_url”:“https://...”, "authentication_type":"Oauth", "username":"apikey", "jiraToken": "...", "jiraSecret": "...", "jiraVerifier": "..." } Sample Response: { "Status": "Inactive", "Connection id": 30009 } |
Values in the sample request in bold cannot be changed. |
Retrieve Jira ID's
The following APIs allow you to retrieve details of your Jira Projects, Issue Types, and Fields. You will receive the Jira ID's for each component which will be used in subsequent APIs.
Retrieve details of all Jira Projects
- GET {Jira URL}/rest/api/2/project
- Use the Jira Project Id in the response when calling subsequent qTest APIs
Retrieve details of all Jira Issue Types
- GET {Jira URL} /rest/api/2/issuetype
- Use the Jira Issue Type id in the response when calling subsequent qTest APIs
Retrieve details of Jira Fields of a Jira Project
- GET {jiraUrl}/rest/api/2/issue/createmeta?expand=projects.issuetypes.fields&issuetypeIds={jiraIssueTypeId}
- Use the key in the response when calling subsequent qTest APIs
Defects
The following APIs allow you to add and configure a defect type. You will use the Jira ID's received from the API responses above.
Add a Defect type with default configurations
- POST{qTestURL}/api/v3/projects/{projectId}/settings/integration/connections/{connectionId}/defect/mappings?externalProjectId={jiraProjectId}&externalIssueTypeId={jiraIssueTypeId}
Sample Response: { "externalProjectId": "10003", "externalTypeId": "10004", "sendAttachmentToJira ": "true", "configures": [ …, { "externalFieldId": "description", "qTestFieldIds": "Session Description,Session Environment,Description"}, ... ] } |
The following id's needed for this API are retrieved from the API responses in the GET Jira Projects and GET Jira Issue Types APIs.
The bold text in the sample response defines the default auto-fill configuration. You cannot add duplicate Defect mappings with the same Jira Project ID or Issue Type ID. |
Configure a Defect Type
- PUT{qtestUrl}/api/v3/projects/{projectId}/settings/integration/connections/{connectionId}/defect/mappings?externalProjectId={jiraProjectId}&externalIssueTypeId={jiraIssueTypeId}
Sample Request: { "sendAttachmentToJira": "true", "configures": [ { ... }, { "externalFieldId": "description", "qTestFieldIds": "Name,Target Release/Build" }, { ... } ] } |
The following id's are needed for this API and are retrieved from the API responses in the GET Jira Projects and GET Jira Issue Types APIs.
The configure property is an array to define the auto-fill configurations.
|
The following qTest fields can be configured to be auto-filled to Jira fields:
|
Enable populating Jira unlinked Defects
- PUT /api/v3/projects/{projectID}/settings/integration/connections/{connectionID}/defect?storeUnlinkedDefects=...
- The following id's are needed for this API are retrieved from the API responses in the GET Jira Projects and GET Jira Issue Types APIs.
- jiraProjectId
- jiraIssueTypeId
- New connections, by default, will not have this enabled. To enable, set the Store Unlinked Defects value =true.
- The following id's are needed for this API are retrieved from the API responses in the GET Jira Projects and GET Jira Issue Types APIs.
Requirements
The following APIs allow you to add and configure Requirements. You will use the Jira ID's received from the API responses above.
Add a Requirement type with default configurations
- POST{qtestUrl}/api/v3/projects/{projectId}/settings/integration/connections/{connectionId}/requirement/mappings?externalProjectId={jiraProjectId}&externalIssueTypeId={jiraIssueTypeId}
Sample Response: { "externalProjectId": "10003", "externalTypeId": "10001", "mapping_id": 73157, "external_filter": "", "external_field_1_id": "", "external_field_2_id": "", "active_external_fields": "id,status,summary,description" } |
The following id's needed for this API are retrieved from the API responses in the GET Jira Projects and GET Jira Issue Types APIs.
You cannot add duplicate Requirement mappings with the same Jira Project ID or Issue Type ID. |
Configure a Requirement Type and organize the imported Requirements
- PUT{qtestUrl}/api/v3/projects/{{projectId}}/settings/integration/connections/{connectionId}/requirement/mappings?externalProjectId={jiraProjectId}&externalIssueTypeId={jiraIssueTypeId}
Sample Request: { "externalProjectId": "10003", "externalTypeId": "10001", "mapping_id": 73157, "external_filter": "", "external_field_1_id": "", "external_field_2_id": "", "active_external_fields": "id,status,summary,description,customfield_10021" } |
The following id's needed for this API are retrieved from the API responses in the GET Jira Projects and GET Jira Issue Types APIs.
“external_field_1_id” and “external_field_2_id”: Keys of 2 Jira fields that are used to organize imported Requirements. “active_external_fields": Keys of Jira fields that will display in the qTest Requirement page (Jira read-only properties panel).
|
Enable Requirement Integration feature
- PUT {qtestUrl}/api/v3/projects/{projectId}/settings/integration/connections/{connectionId} /requirement?active=true
- Requirement Types must be added prior to enabling the Requirement integration.
- Disable the Requirement integration by setting active=false.
Releases
The following APIs allow you to add and configure Releases. You will use the Jira ID's received from the API responses above.
Add a Release Type
- POST{qtestUrl}/api/v3/projects/{projectId}/settings/integration/connections/30009/release/mappings?externalProjectId={jiraProjectId}&externalIssueTypeId={jireReleaseType}
Sample Response: { "externalProjectId": "10003", "externalIssueTypeId": "Sprint", "data_retrieval_options": [ "active" ], "auto_update_release_scope": "true" } |
The following id is needed for this API and is retrieved from the API response in the GET Jira Projects.
External Issue Type ID allowed values:
|
Configure a Release Type
- PUT{qtestUrl}/api/v3/projects/{projectId}/settings/integration/connections/{connectionId}/release/mappings?externalProjectId={jiraProjectId}&externalIssueTypeId=Sprint
Sample Request: { "data_retrieval_options": [ "active", "future", "completed" ], "auto_update_release_scope": "true" } |
The following id is needed for this API are retrieved from the API responses in the GET Jira Projects.
External Issue Type ID allowed values:
Data Retrieval Options allowed values:
|
Enable Release Integration
- PUT{qtestUrl}/api/v3/projects/{projectId}/settings/integration/connections/{connectionId}/release?active=true &autoFilterTestRun=true
- Release Types must be added prior to enabling the Release integration.
- Disable the Release integration by setting active=false.
- Enable the "Auto filter Test Runs on Jira iframe to match FixVersions/Sprint of Jira issue" by setting autoFilterTestRun=true
Activate Jira Connection
The following API allows you to activate your Jira connection once you have configured the Jira properties you want to sync with qTest.
- PUT{qtestUrl}/api/v3/projects/{projectId}/settings/integration/connections/{jiraConnectionId}?active=true
- You cannot activate the Jira connection if you have not added any Defect types.
- Activating this connection will deactivate any other active connections. If this is the only available connection, activating it will also enable the Jira integration.
- Disable the Jira Connection by setting active=false.
Trigger Data Retrieval from Jira to qTest
The following API allows you to trigger the data retrieval from the Jira properties you selected, from an activate Jira connection. The response includes a job ID so you can check when the data retrieval is completed, by using this API: GET {qtestUrl}/api/v3/projects/queue-processing/{jobId}
- GET{qtestUrl}/api/v3/projects/{projectId}/settings/integration/connections/{ConnectionId}/retrieve?artifact={artifactType}
Sample Response: { "id": 2133988, "type": "FETCH_EXTERNAL_RELEASES", "state": "IN_WAITING" } |
Artifact allowed values:
|
Retrieve and Remove Jira Connection Information
The following APIs allow you to retrieve and remove qTest information associated with your Jira connection.
Retrieve All Jira Connections of a qTest Project
- GET /api/v3/projects/{projectID}/settings/integration/connections
Retrieve Defect Types of a Jira Connection
- GET{qtestUrl}/api/v3/projects/{projectID}/settings/integration/connections/{connectionID}/defect/mappings? externalProjectId={jiraProjectId}&externalIssueTypeId={jiraIssueTypeId}
- If externalProjectId and externalIssueTypeId are ommitted, all defect types are included in the response.
Remove a Defect Type
- DELETE{qtestUrl}/api/v3/projects/{projectId}/settings/integration/connections/{connectionId}/defect/mappings?externalProjectId={jiraProjectId}&externalIssueTypeId={jiraIssueTypeId}
Retrieve Requirement Types of a Jira Connection
- GET{qtestUrl}/api/v3/projects/{{projectId}}/settings/integration/connections/{connectionId}/requirement/mappings?externalProjectId={jiraProjectId}&externalIssueTypeId={jiraIssueTypeId}
- If externalProjectId and externalIssueTypeId are ommitted, all defect types are included in the response.
Remove a Requirement Type
- DELETE{qtestUrl}/api/v3/projects/{{projectId}}/settings/integration/connections/{connectionId}/requirement/mappings?externalProjectId={jiraProjectId}&externalIssueTypeId={jiraIssueTypeId}
Retrieve Release Types of a Jira Connection
- GET{qtestUrl}/api/v3/projects/{projectId}/settings/integration/connections/{connectionId}/release/mappings?externalProjectId={jiraProjectId}&externalIssueTypeId=Sprint
- externalIssueTypeId: its allowed values include fixVersions and Sprint (case-sensitive)
Remove a Release Type
- DELETE{qtestUrl}/api/v3/projects/{projectId}/settings/integration/connections/{connectionId}/release/mappings?externalProjectId={jiraProjectId}&externalIssueTypeId=Sprint
- externalIssueTypeId: its allowed values include fixVersions and Sprint (case-sensitive)
New APIs
Project APIs
These Project APIs combined with the new UUID or Template ID inputs, allow you to search for qTest Projects and update a Project with the provided values in the API request. Example, inclusion/exclusion of a UUID or a Template ID to a specific project.
Permissions Required:
- Edit Projects
- Manage Site Fields (only if using the Template ID input)
Search for Projects
- POST /api/v3/projects/search
Updates a Project
- PUT /api/v3/projects/{projectID}
- This action will also be logged in the Audit Log as an 'Edit Project' action.
Site Templates API
The new Site Template APIs allow you to retrieve all Site Templates, overwrite a Site Template in an existing qTest Project, as well as remove qTest Projects from a Site Template. The new Template ID input available to you, in the Project APIs, allows you to complete the calls below.
Permissions Required:
- Edit Projects
- Manage Site Fields
Retrieves all Site Templates
- GET /api/v3/site-templates
Apply a Site Template to an existing Project
- POST /api/v3/site-templates/{templateID}/projects
- Create new Site Field values = true creates new values to the site fields
- Create new Site Field values = false keeps the values private to the project when there are "unique values in project fields that do not exist in site fields"
Removes Projects from a Site Template
- DELETE /api/v3/site-templates/{templateID}/projects
- Template ID = 0 removes all site templates associated with the provided Project ids list.
User APIs
The new User APIs allow you to update User information, such as status, authentication, groups, passwords, assigned Projects etc. This will allow customers to centrally maintain their base user access to qTest through APIs. New inputs are also available for the User API.
Update information of a user
- PUT /api/v3/users/{user_id}
Remove association between users and projects
- PUT /api/v3/users/projects
API Enhancements
The following APIs are enhanced to provide you the ability to manage qTest information through the use of APIs as opposed to using the qTest Manager UI.
Project APIs
Two new inputs are available in the Project APIs.
-
UUID: is an upper-level identifier for Enterprise customers utilizing APIs to link qTest Projects with additional, external ID's.
UUID is case sensitive and space(s) are not allowed. You can assign a single UUID to multiple qTest Projects. A qTest Project can have one, or no UUID assigned.-
POST/api/v3/projects create a new Project and assign a UUID
-
GET/api/v3/projects retrieves all Projects with a UUID
-
POST/api/v3/projects/search will search for Projects with/without UUID
-
Set “uuid”: [“”] to query all projects with an empty uuid
-
Set “uuid”: [“uuid_1”,””] to query all projects with a uuid =uuid_1 and projects with an empty uuid
-
-
PUT/api/v3/projects/{projectID} updates a specific Project with a UUID
-
Set " uuid": “” to remove UUID
-
-
-
Template ID:
-
POST/api/v3/projects create a new Project and assign a Site Field Template
-
GET/api/v3/projects retrieves all Projects with a Template ID
-
PUT/api/v3/projects/{projectID} add/remove a Site Template from a qTest Project
-
Set "template_id": “” to remove associated Template
-
-
User APIs
Several new inputs are available in the User APIs.
- Status:
- PUT /api/v3/users/{user_id}
- Example, set “status” to 1 for “ACTIVE”, to 3 for “INACTIVE” to update the status of a user.
- PUT /api/v3/users/{user_id}
- User Group IDs: List user group ids will be assigned for new user.
- PUT /api/v3/users/{user_id}
- Send Activation Email: activation email will be ignored if this is set to false
- External Auth Config ID: auto assign this new user with External Authentication system by this providing config id here. If this value is provided, “external_user_name” need to have value, or it will fail to create.
- PUT /api/v3/users/{user_id}
- Set “external_auth_config_id” to LDAP/SSO configuration ID to link user to an LDAP/SSO user.
- Set “external_auth_config_id” to -1 to turn user to INTERNAL user.
- PUT /api/v3/users/{user_id}
- External User Name:
- PUT /api/v3/users/{user_id}
- external username that will be assigned to a newly created qTest user
- Set “external_user_name” to the LDAP/SSO username to link the qTest user to an LDAP/SSO user.
- PUT /api/v3/users/{user_id}
New Features and Enhancements
Requirements Tab new UI
The Requirements tab has a new UI with the 9.7 release to provide an enhanced user experience. All of the information previously displayed is still available, however, the Description field is no longer displayed at the top of the main page. The Requirements description is now located within the Properties tab.
Vera Integration Pre-Execution Approval of Test Cases
The 9.6.1 Manager release, included the ability to integrate with VERA, which is an e-signature tool used for validation testing within a LifeSciences FDA regulated environment.
As of Manager 9.7, the VERA integration allows you to route a Test Case from qTest for approval/rejection to VERA prior to the Test Case execution. Previously, you could only route a Test Run for approval/rejection after execution.
For more information on the VERA integration, please read VERA Integration.
Additionally, the following enhancements have been made to the Post-Execution approval process.
- You cannot delete a Test Run that has been approved in VERA from the Test Execution Tree or the Data Query.
Jira Plug-in 8.02/6.11.12
This new version of the Jira Plug-in for Jira Server and Jira Data Center, is now compatible with Jira SSO users who are submitting bugs from qTest to Jira . You can download the new version here from the Atlassian Marketplace.
Compatibility Matrix
Jira Plug-in Version | Jira Data Center Version | Jira Server Version |
---|---|---|
6.11.12 |
7.5.0-7.13.5 |
7.5.0-7.13.5 |
8.0.2 | 8.0.0-8.2.1 | 8.0.0-8.2.1 |
Bug Fixes and Performance Improvements
Projects with a Large Number of Users
Ticket 27711: Performance is now improved when moving from one Project to the next when there are a large number of users assigned to the Project.
Ticket # | Component | Description |
---|---|---|
28146 | Data Query | Previously, System Queries of All test cases would display all test cases, but when trying to customize the view to add several customized fields, the query results were not as expected. This is now resolved. |
29213 | Test Status | Test Statuses displayed in the Test Cycle and in the Tree View, as 'incomplete' when they are actually passed. This is now fixed. |