...
Add a GxP ro simiar field to qTest
...
Update Test Case Type Field (add CSA - Design Review, etc)
...
Update RMP to pull in fields
Add Approval Templates that use the fields as constraints
...
Now we will modify the Vera polices and qTest test case settings to support new business rules.
Table of Contents |
---|
Sample Business Rules
We will configure Vera to support the following chart.
Sample Requirement: Manual and automated test case approval is based on Type and Regulation (A = Approver) below.
Type | Regulation | Technical | Business | Data Owner | Product Team Member | Product Lead | Quality |
---|---|---|---|---|---|---|---|
Data Migration | N/A | A | A | A | A* | ||
Configuration | None | A (2) | |||||
Configuration | GxP | A | A* | ||||
System | None | A (2) | |||||
System | GxP | A | A | A* | |||
Acceptance | None | A (2) | |||||
Acceptance | GxP | A | A* | ||||
N/A | SOX | A | A* | ||||
N/A | SOX & GxP | A | A | A* | A* | ||
Other | N/A | A** |
Info |
---|
*Approve after other approvals are complete. Quality will approve after Product Lead approval. **Prevent author approval If Regulatory field value is not set it should be evaluated as None. |
Vera Analysis & Design
Based on the above requirement we will need to make the following modifications:
Update qTest Test Cases fields and field values in the qTest Project.
Update Test Case Type field value
Add Regulation custom field and add field values
Update the qTest Test Case Record Type data fields in the Records Management Policy in Tutorial Policy Set
Modify the Approval Policy in the Tutorial Policy Set
Add new Approval Groups
Add and modify Route Templates
The new business rules apply to the qTest Test Case and Automated Test Case Record Types. We will need to update the Approval Policy with the following Approval Templates:
Approval Template Name | Rank | Record Type | Constraints | Level 1 Approvers | Level 2 Approvers | Level 3 Approvers | Prevent Author Approval |
---|---|---|---|---|---|---|---|
Data Migration Test Case | 10 | qTest Test Case, Automated Test Case | Type = Data Migration | Technical, Business, Data Owner | Quality | N/A | false |
Configuration Test Case | 70 | Test Test Case, Automated Test Case | Type = Configuration, Regulation = None OR IsEmpty | Technical, Technical | N/A | N/A | false |
GxP Configuration Test Case | 20 | Test Test Case, Automated Test Case | Type = Configuration, Regulation = GxP | Technical | Quality | N/A | false |
System Test Case | 80 | Test Test Case, Automated Test Case | Type = System, Regulation = None OR IsEmpty | Product Team Member, Product Team Member | N/A | N/A | false |
GxP System Test Case | 30 | Test Test Case, Automated Test Case | Type = System, Regulation = GxP | Technical, Business | Quality | N/A | false |
Acceptance Test Case | 90 | Test Test Case, Automated Test Case | Type = Acceptance, Regulation = None OR IsEmpty | Business, Business | N/A | N/A | false |
GxP Acceptance Test Case | 40 | Test Test Case, Automated Test Case | Type = Acceptance, Regulation = GxP | Business | Quality | N/A | false |
SOX Test Case | 50 | Test Test Case, Automated Test Case | Type = SOX | Product Team Member | Product Lead | N/A | false |
SOX & GxP Test Case | 60 | Test Test Case, Automated Test Case | Type = SOX & GxP | Technical, Business | Product Lead | Quality | false |
Default | 100 | N/A | N/A | Product Team Member | N/A | N/A | true |
Info |
---|
Rank determines the order Route Templates are evaluated by Vera when a record is routed for approval. Use Rank to ensure Constraints are evaluated in the proper order. The rank can be any integer from 1 to 9999. Default is the lowest rank (highest number) so it is the last Route Template evaluated. |
qTest Project Configuration
First we will look at qTest project Field Settings for Test Case.
We need to update the Test Case Type Combo box list values by adding:
Data Migration
Configuration
System
Acceptance
We need to add a new Test Case custom field Regulation Combo box and add the following list values:
None
SOX
GxP
SOX & GxP
Vera Configuration
Now that you evaluated the business rules and updated qTest, you can update the Records Management Policy and the Approval Policy.
Records Management Policy updates
We are going to update the Records Management Policy from Add Test Run Records to Records Management Policy . Open VeraRMPTutorial-part2.json in an editor for modification.
Add Type and Regulation to the qTest Test CaseRecord Type in addition to the existing fields: Status, Description, and Precondition. The Automated Test Case Record Type inherits fields from the qTest Test Case Record Type with
"Base Record Type": "qTest Test Case"
element:Code Block "Fields": [ { "Name": "Status", "Is Data": true }, { "Name": "Description", "Is Data": true }, { "Name": "Precondition", "Is Data": true }, { "Name": "Type", "Is Data": true }, { "Name": "Regulation", "Is Data": true } ] }
Here is the updated qTest Test Case Record Type in the Records Management Policy with above code block:
Code Block { "Revision": "3", "Records Management Policy": { "Version": "Vera Tutorial 3", "Schema": { "ID": "http://tx3services.com/schemas/0/0/records-management-policy.json", "Major": "0", "Minor": "0" }, "Record Types": [ { "Name": "qTest Test Case", "Definitions": [ { "Systems": ["qTest"], "Item Types": ["test-case"], "Singular Name": "Test Case", "Plural Name": "Test Cases" } ], "Author": { "Source": "Route Owner" }, "Constraints": [ { "Type": "Field Is Not Equal", "Name": "Automation", "Value": "Tosca" } ], "Fields": [ { "Name": "Status", "Is Data": true }, { "Name": "Description", "Is Data": true }, { "Name": "Precondition", "Is Data": true }, { "Name": "Type", "Is Data": true }, { "Name": "Regulation", "Is Data": true } ] }, { "Name": "qTest Test Step", "Definitions": [ { "Systems": ["qTest"], "Item Types": ["test-step"], "Singular Name": "Test Step", "Plural Name": "Test Steps" } ], "Fields": [ { "Name": "Description", "Is Data": true }, { "Name": "Expected Result", "Is Data": true } ] }, { "Name": "Automated Test Case", "Base Record Type": "qTest Test Case", "Definitions": [ { "Systems": ["qTest"], "Item Types": ["test-case"], "Singular Name": "Test Case", "Plural Name": "Test Cases" } ], "Author": { "Source": "Route Owner" }, "Constraints": [ { "Type": "Field Is Equal", "Name": "Automation", "Value": "Tosca" } ] } ] } }
Save the Records Management Policy as VeraRMPTutorial-part3.json
Now we have a Records Management Policy configured for the new Test Case business rules. The completed JSON file with qTest Test Case update can be downloaded here:
View file | ||
---|---|---|
|
Approval Policy updates
We are going to update the Approval Policy from Add Approval Template to Approval Policy. Open VeraAPTutorial-part1.json in an editor for modification.
First you will update Approval Roles, then you will add the Approval Templates in Rank order to make it easier to manage and troubleshoot.
Approval Roles
There are new Approval Roles you need to add to the Approval Policy: Data Owner, Product Team Member, and Product Lead
Code Block | ||
---|---|---|
| ||
"Approval Groups": [
"Business",
"Technical",
"Quality",
"Data Owner",
"Product Team Member",
"Product Lead"
] |
Approval Templates
Now we can add the new Route Templates and update the Default Route Template.
Data Migration Test Case
Configuration element | Value | Code Snippet | ||
---|---|---|---|---|
Name | Data Migration Test Case |
| ||
Rank | 10 |
| ||
Record Type | qTest Test Case, Automated Test Case |
| ||
Constraints | Type = Data Migration | The Field Is Equal or Field Is One Of constraint can be used for this business rule.
Note: Ignore Case default value is false. | ||
Level 1 Approvers | Technical, Business, Data Owner |
| ||
Level 2 Approvers | Quality |
| ||
Prevent Author Approval | FALSE |
|
The completed Route Template for Data Migration Test case is below:
Code Block |
---|
{
"Route Templates": [
{
"Name": "Data Migration Test Case",
"Rank": "10",
"Prevent Author Approval": true,
"Record Types": [
"qTest Test Case",
"Automated Test Case"
],
"Constraints": [
{
"Type": "Field Is Equal",
"Name": "Type",
"Values": ["Data Migration"],
"Ignore Case": false
}
],
"Levels": [
{
"Name": "Level 1",
"Approvers": ["Technical","Business","Data Owner"]
},
{
"Name": "Level 2",
"Approvers": ["Quality"]
}
]
}
]
} |
GxP Configuration Test Case
Configuration element | Value | Code Snippet | ||
---|---|---|---|---|
Name | GxP Configuration Test Case |
| ||
Rank | 20 |
| ||
Record Type | Test Test Case, Automated Test Case |
| ||
Constraints | Type = Configuration, Regulation = GxP | The Field Is Equal or Field Is One Of constraint can be used for this business rule. Ignore Case element default value is false.
Note: The All Boolean constraint is the default constraint. | ||
Level 1 Approvers | Technical |
| ||
Level 2 Approvers | Quality |
| ||
Prevent Author Approval | FALSE |
|
The completed Route Template for GxP Configuration Test case is below:
Code Block |
---|
{
"Route Templates": [
{
"Name": "GxP Configuration Test Case",
"Rank": "20",
"Prevent Author Approval": false,
"Record Types": [
"qTest Test Case",
"Automated Test Case"
],
Constraints": [
{
"Type": "All",
"Constraints": [
{
"Type": "Field Is Equal",
"Name": "Type",
"Value": "Configuration"
},
{
"Type": "Field Is One Of",
"Name": "Regulation",
"Values": ["GxP"]
}
]
}
],
"Levels": [
{
"Name": "Level 1",
"Approvers": ["Technical"]
},
{
"Name": "Level 2",
"Approvers": ["Quality"]
}
]
}
]
} |
GxP System Test Case
Configuration element | Value | Code Snippet | ||
---|---|---|---|---|
Name | GxP System Test Case |
| ||
Rank | 30 |
| ||
Record Type | Test Test Case, Automated Test Case |
| ||
Constraints | Type = System, Regulation = GxP | The Field Is Equal or Field Is One Of constraint can be used for this business rule.
Note: The All Boolean constraint is the default constraint. | ||
Level 1 Approvers | Technical, Business |
| ||
Level 2 Approvers | Quality |
| ||
Prevent Author Approval | FALSE |
|
The completed Route Template for GxP System Test case is below:
Code Block |
---|
{
"Route Templates": [
{
"Name": "GxP System Test Case",
"Rank": "30",
"Prevent Author Approval": false,
"Record Types": [
"qTest Test Case",
"Automated Test Case"
],
"Constraints": [
{
"Type": "Field Is Equal",
"Name": "Type",
"Value": "System"
},
{
"Type": "Field Is One Of",
"Name": "Regulation",
"Values": ["GxP"]
}
],
"Levels": [
{
"Name": "Level 1",
"Approvers": ["Technical", "Business"]
},
{
"Name": "Level 2",
"Approvers": ["Quality"]
}
]
}
]
} |
GxP Acceptance Test Case
Configuration element | Value | Code Snippet | ||
---|---|---|---|---|
Name | GxP Acceptance Test Case |
| ||
Rank | 40 |
| ||
Record Type | Test Test Case, Automated Test Case |
| ||
Constraints | Type = Acceptance, Regulation = GxP | The Field Is Equal or Field Is One Of constraint can be used for this business rule.
Note: The All Boolean constraint is the default constraint. | ||
Level 1 Approvers | Business |
| ||
Level 2 Approvers | Quality |
| ||
Prevent Author Approval | FALSE |
|
The completed Route Template for GxP Acceptance Test case is below:
Code Block |
---|
{
"Route Templates": [
{
"Name": "GxP Acceptance Test Case",
"Rank": "40",
"Prevent Author Approval": false,
"Record Types": [
"qTest Test Case",
"Automated Test Case"
],
"Constraints": [
{
"Type": "Field Is Equal",
"Name": "Type",
"Value": "Acceptance"
},
{
"Type": "Field Is One Of",
"Name": "Regulation",
"Values": ["GxP"]
}
],
"Levels": [
{
"Name": "Level 1",
"Approvers": ["Business"]
},
{
"Name": "Level 2",
"Approvers": ["Quality"]
}
]
}
]
} |
SOX Test Case
Configuration element | Value | Code Snippet | ||
---|---|---|---|---|
Name | SOX Test Case |
| ||
Rank | 50 |
| ||
Record Type | Test Test Case, Automated Test Case |
| ||
Constraints | Type = SOX | The Field Is Equal or Field Is One Of constraint can be used for this business rule.
Note: The All Boolean constraint is the default constraint. | ||
Level 1 Approvers | Product Team Member |
| ||
Level 2 Approvers | Product Lead |
| ||
Prevent Author Approval | FALSE |
|
The completed Route Template for SOX Test case is below:
Code Block |
---|
{
"Route Templates": [
{
"Name": "SOX Test Case",
"Rank": "50",
"Prevent Author Approval": false,
"Record Types": [
"qTest Test Case",
"Automated Test Case"
],
"Constraints": [
{
"Type": "Field Is Equal",
"Name": "Regulation",
"Value": "SOX"
}
],
"Levels": [
{
"Name": "Level 1",
"Approvers": ["Product Team Member"]
},
{
"Name": "Level 2",
"Approvers": ["Product Lead"]
}
]
}
]
} |
SOX & GxP Test Case
Configuration element | Value | Code Snippet | ||
---|---|---|---|---|
Name | SOX & GxP Test Case |
| ||
Rank | 60 |
| ||
Record Type | Test Test Case, Automated Test Case |
| ||
Constraints | Type = SOX & GxP | The Field Is Equal or Field Is One Of constraint can be used for this business rule.
Note: The All Boolean constraint is the default constraint. | ||
Level 1 Approvers | Technical, Business |
| ||
Level 2 Approvers | Product Lead |
| ||
Level 3 Approvers | Quality |
| ||
Prevent Author Approval | FALSE |
|
The completed Route Template for SOX & GxP Test case is below:
Code Block |
---|
{
"Route Templates": [
{
"Name": "SOX & GxP Test Case",
"Rank": "60",
"Prevent Author Approval": false,
"Record Types": [
"qTest Test Case",
"Automated Test Case"
],
"Constraints": [
{
"Type": "Field Is Equal",
"Name": "Regulation",
"Value": "SOX & GxP"
}
],
"Levels": [
{
"Name": "Level 1",
"Approvers": ["Technical", "Business"]
},
{
"Name": "Level 2",
"Approvers": ["Product Lead"]
},
{
"Name": "Level 3",
"Approvers": ["Quality"]
}
]
}
]
} |
Configuration Test Case
Configuration element | Value | Code Snippet | ||
---|---|---|---|---|
Name | Configuration Test Case |
| ||
Rank | 70 |
| ||
Record Type | Test Test Case, Automated Test Case |
| ||
Constraints | Type = Configuration, Regulation = None OR Regulation IsEmpty | The Field Is Equal, Field Is One Of or Field Is Not One Of constraint can be used for this business rule. The Any constraint can be used if only one constraint needs to be true.
| ||
Level 1 Approvers | Technical, Technical |
| ||
Prevent Author Approval | FALSE |
|
The completed Route Template for Configuration Test case is below:
Code Block |
---|
{
"Route Templates": [
{
"Name": "Configuration Test Case",
"Rank": "70",
"Prevent Author Approval": false,
"Record Types": [
"qTest Test Case",
"Automated Test Case"
],
"Constraints": [
{
"Type": "Field Is Equal",
"Name": "Type",
"Value": "Configuration"
},
{
"Type": "ANY",
"Constraints": [
{
"Type": "Field Is Equal",
"Name": "Regulation",
"Value": "None"
},
{
"Type": "Field Is Empty",
"Name": "Regulation"
}
]
}
],
"Levels": [
{
"Name": "Level 1",
"Approvers": ["Technical", "Technical"]
}
]
}
]
} |
System Test Case
Configuration element | Value | Code Snippet | ||
---|---|---|---|---|
Name | System Test Case |
| ||
Rank | 80 |
| ||
Record Type | Test Test Case, Automated Test Case |
| ||
Constraints | Type = System, Regulation = None OR Regulation IsEmpty | The Field Is Equal, Field Is One Of or Field Is Not One Of constraint can be used for this business rule.
Note: The All Boolean constraint is the default constraint. | ||
Level 1 Approvers | Product Team Member, Product Team Member |
| ||
Prevent Author Approval | FALSE |
|
The completed Route Template for System Test case is below:
Code Block |
---|
{
"Route Templates": [
{
"Name": "System Test Case",
"Rank": "80",
"Prevent Author Approval": false,
"Record Types": [
"qTest Test Case",
"Automated Test Case"
],
"Constraints": [
{
"Type": "Field Is Equal",
"Name": "Type",
"Value": "System"
},
{
"Type": "Field Is Not One Of",
"Name": "Regulation",
"Values": [
"GxP",
"SOX",
"SOX & GxP"
]
}
],
"Levels": [
{
"Name": "Level 1",
"Approvers": ["Product Team Member", "Product Team Member"]
}
]
}
]
} |
Acceptance Test Case
Configuration element | Value | Code Snippet | ||
---|---|---|---|---|
Name | Acceptance Test Case |
| ||
Rank | 90 |
| ||
Record Type | Test Test Case, Automated Test Case |
| ||
Constraints | Type = Acceptance, Regulation = None OR Regulation IsEmpty | The Field Is Equal, Field Is Not Equal, Field Is One Of or Field Is Not One Of constraint can be used for this business rule.
Note: The All Boolean constraint is the default constraint. | ||
Level 1 Approvers | Business, Business |
| ||
Prevent Author Approval | FALSE |
|
The completed Route Template for Acceptance Test case is below:
Code Block |
---|
{
"Route Templates": [
{
"Name": " Acceptance Test Case",
"Rank": "90",
"Prevent Author Approval": false,
"Record Types": [
"qTest Test Case",
"Automated Test Case"
],
"Constraints": [
{
"Type": "Field Is Equal",
"Name": "Type",
"Value": "Acceptance"
},
{
"Type": "Field Is Not Equal",
"Name": "Regulation",
"Value": "GxP"
},
{
"Type": "Field Is Not Equal",
"Name": "Regulation",
"Value": "SOX"
},
{
"Type": "Field Is Not Equal",
"Name": "Regulation",
"Value": "SOX & GxP"
}
],
"Levels": [
{
"Name": "Level 1",
"Approvers": ["Business", "Business"]
}
]
}
]
} |
Default Approval Template
Update the current Default Approval Route with the changes below:
Configuration element | Value | Code Snippet | ||
---|---|---|---|---|
Name | Default |
| ||
Rank | 100 |
| ||
Record Type | Any | Add all record types
| ||
Constraints | No Constraints | No constraints are defined
| ||
Level 1 Approvers | Product Team Member |
| ||
Prevent Author Approval | TRUE |
|
The completed Route Template for Default Route Template is below:
Code Block |
---|
{
"Route Templates": [
{
"Name": "Data Migration Test Case",
"Rank": "10",
"Prevent Author Approval": false,
"Record Types": [
"qTest Test Case",
"Automated Test Case",
"qTest Test Run"
],
"Constraints": [],
"Levels": [
{
"Name": "Level 1",
"Approvers": ["Product Team Member"]
}
]
}
]
} |
Save the Approval Policy as VeraAPTutorial-part2.json
Now we have an Approval Policy configured for the new Test Case business rules. The completed JSON file with new Approval Roles and Approval Templates can be downloaded:
View file | ||
---|---|---|
|
Uploading Updated Policy File Revisions
Next, we will upload the VeraAPTutorial-part2.json as a revision of the Vera Tutorial Approval Policy in the Tutorial Policy Set.
Login and navigate to Vera Administration
Navigate to the Policy Management
Select Tutorial AP
On the policy details select Add Revision, the Import Policy Revision dialog opens
Select VeraAPTutorial-part2.json with the Choose File button
Enter “Added Regulation approval templates for Test Cases” in Revision Comments
Click Import to add the revision
Uploading the VeraRMPTutorial-part3.json as a revision of the Vera Tutorial RMP in the Tutorial Policy Set
Login and navigate to Vera Administration
Navigate to the Policy Management
Select Tutorial RMP
On the policy details select Add Revision, the Import Policy Revision dialog opens
Select VeraRMPTutorial-part3.json with the Choose File button
Enter “Added Regulation and Type fields to Test Case” in Revision Comments
Click Import to add the revision
Info |
---|
See https://tx3.atlassian.net/wiki/spaces/V20232/pages/322338845/Upload+Policies#importrevision for more information on Policy Management |
Assign Users new approval roles
New Approval Roles were introduced in the revised Approval Policy.
We will add new approvers to the Tutorial domain and update tutor_mu with additional approval roles:
User Name | Full Name | Domain Membership |
---|---|---|
tutor_data | Tutor Data Owner | Tutorial: Data Owner |
tutor_mem | Tutor Product Team Member | Tutorial: Product Team Member |
tutor_lead | Tutor Product Lead | Tutorial: Product Lead |
tutor_mu | Tutor Multi Role | Tutorial: Data Owner,Product Team Member, Product Lead |
Use the sample file below to import the following users into Vera
View file | ||
---|---|---|
|
Download the csv file to your desktop
Add passwords for local accounts
Open the file to edit
Add a strong password after the colon (:) in the IdP User Name Column for each user
Save the file in CSV (comma delimited) format
Open and log in to the VERA Administration site
On the VERA sidebar, select User Management
Click Import Users and the Import Users dialog box opens
Select the file TutorialUsersImportSample-2.csv
Click Import
View Latest Import Results for success status
Info |
---|
We are using local accounts for this tutorial. See Password Policy Settings for password configuration. See Import VERA users for more details on importing users. Vera integrates with SAML for corporate authentication. |
View imported users by domain (Domain Management)
Open and log in to the VERA Administration site
Display the Domain Management module
On the VERA sidebar, select Domain Management
On the domains table, search and select Tutorial Domain
Scroll down to Domain Users on the Domain Details
Domain Users are displayed with their User Name, Full Name, and Roles
Vera configuration verification
Next let’s verify our configuration changes by importing Test Cases and Routing the Test cases for approval. First, Import the below Excel file to add Test Cases with Regulation and Type fields defined. Click here for instructions on how to import from Excel.
View file | ||
---|---|---|
|
Now that the Tests Cases are in qTest you can route each of the Test Cases for approval to verify the polices are configured correctly.
Select each imported test case and click the Route for Approval button. Reload the record and view the Vera Approval Route and compare the Approval Route with the Approval Route documented in the Test Case Step. If you configured Vera correctly, the results will match.
Info |
---|
This concludes the Vera Site Administration Tutorial. The following section contains Vera Constraints for your reference. Vera Constraints |