fbpx

System Requirements and Prerequisites

The Enterprise Tester Database must be installed on a separate server to the Enterprise Tester Application.

See the Database Configuration section for database specific notes on setting the character set before you begin configuration.

Supported Operating Systems

Enterprise Tester is supported on the following operating systems:

Trial Use Only

  • Windows 8 +

Production Use

  • Windows Server 2012 R2
  • Windows Server 2016
  • Windows Server 2019

Supported Databases

Enterprise Tester supports a number of different database servers, these are:

  • SQL Server 2017+
  • MySQL
  • PostgreSQL

Deployment Specifications

The following is a guideline only and deployment will depend on usage and other environmental factors.

 
Server Deployments
Memory4.0-8.0GB depending on usage
CPU2.4 Ghz x2
Disk (Operating System)30GB
Disk (Database)30GB

Software Prerequisites

The prerequisites for installing Enterprise Tester are:

  • IIS 7 and above
  • Microsoft .Net Framework 4.6.2 and above.
  • If you install IIS after the .Net Framework you will probably need to register ASP.Net for use with IIS

Supported Browsers

The following browsers are compatible with Enterprise Tester:

  • Chrome (recommended)
  • Safari
  • Firefox
  • Microsoft Edge

A minimum screen resolution of 1280×720 is required for best use of Enterprise Tester.

You may need to configure other components before Enterprise Tester will install or operate correctly, depending on specific environmental factors.

Let us know if you need assistance in setting up and configuring Enterprise Tester. Helping get the installation right, first time is crucial to ensuring the success of your Quality practice. Email the Customer team at sales@catchsoftware.com.

Enterprise Tester version 6.1 and above requires version 4.6 of the .Net Framework to be installed.
Web Downloader: https://www.microsoft.com/en-us/download/details.aspx?id=48130
Redistributable: https://www.microsoft.com/en-us/download/details.aspx?id=48137

Enterprise Tester versions 4.9 to 6.0 requires version 4.5 of the .Net Framework to be installed.

Web Downloader: http://www.microsoft.com/en-us/download/details.aspx?id=30653
Redistributable: http://download.microsoft.com/download/2/7/3/273CB528-CAB3-4E8D-88D2-4477F0A1DAE4/enu_vs_common/netfx_ult/dotnetfx45_full_x86_x64.exe

If you are using the Enterprise Tester Installer (.exe), the installer will attempt to download and install the .Net framework for you (internet access is required).

If you are using the Bin Zip File to manually upgrade or install Enterprise Tester, then you must manually install the relevant .Net Framework in advance.

When installing the .Net Framework you have two options – either installing from a “web download” (a small download, which will then install only the components you require) or you can download a redistributable file, which is a large file containing all the files necessary for the .Net Framework to be installed on any machine.

If you plan on installing the Framework on more than one machine within your organization it is suggested that you use the redistributable, to avoid multiple downloads.

Install IIS prerequisites automatically with Powershell

Below we have provided powershell commands to automatically install the Enterprise Tester IIS prerequisites. Each command should be a single line and run from an elevated command prompt. (These commands just automatically install the required packages which the screen shots show being installed below).

Windows Server 2012 / 2012 R2

Check that ASP.Net is allowed.

Once the above steps are complete you are ready to install Enterprise Tester.  See Application Installation for more details.

Enterprise Tester API

REST API

Overview

Enterprise Tester provides a REST API (Application Programming Interface) that can be used for retrieving and manipulating Enterprise Tester data without having to interact with the user interface.

There are many use cases for the API, but some common examples include:

  • Building new clients for Enterprise Tester i.e. Mobile.
  • Automating the recording, upload or updating of test execution information (including automated test results).
  • Synchronizing Data in 3rd party systems with Enterprise Tester (such as Synchronizing Requirements with a document management system).
  • Complex report generation – Enterprise Tester’s API allows you to harness the full power of the TQL (Testing Query Language) including aggregation support.
  • Mashups of Enterprise Tester and other applications with API’s (such as the Atlassian toolset).

The REST API is based on open standards, and you can use any web development language to access the API, or a tool such as CURL to make simple requests.

Enterprise Tester’s REST API provides a way for applications to access resources (Entities) via a URI (Uniform Resource Identifier) e.g. a path.

To use the REST API your application will make an HTTP request and then parse the response which may include a payload as well as a status indicating if the request was succeedful.

Enterprise Tester’s API uses JSON (JavaScript Object Notation) as the default format for its entities, and standard HTTP methods such as GET, POST, PUT and DELETE (Analogous to Read, Create, Update and Delete i.e. CRUD) to perform actions on those entities. Note: Not all resources support all HTTP methods, see the Resources list for a description of each resource, the methods it supports, and whether TQL or OData querying methods are supported.

URI Structure

Enterprise Testers URIs have the following structure:

http://host:port/applicationpath/api/resource-name

In the resource help topics the URI templates are displayed like so:

/api/project/{id}

Values surrounded by braces (such as {id} above) are parameter substitutions, where this part of the URI would be replaced with an appropriate value. All URI’s already include the required /api fragment as well, and the examples included with each method supported by a resource show these parameters with example values.

So for a local instance of Enterprise Tester, to GET the details of a single project you would take the template above, replace the ID parameter, and prepend the site’s base path (also called the application path, or site.root.url in the Enterprise Tester documentation) – after which you may end up with a URI that looks like this:

http://localhost/EnterpriseTester/api/project/a1d44feb-01b5-4f85-a18d-a03f00be87f6

Permissions

There is no specific permission required to use the API – Any Enterprise Tester user can access the API, but the features they can use will be limited by the permissions they have been granted. Each Resource topic lists the necessary permissions (if any) required to access the resource, and a summary of all resources with associated permissions required for each HTTP method are available in the Permissions topic.

Getting Started

To get started with the API, please refer to the Resources list, this provides the list of Resources (Entities) currently exposed, along with the methods they support and examples of requests and responses, including parameters, headers and status codes.

We also have a section where common features of the API are discussed, which can provide useful background information for those trying to develop against the Enterprise Tester API.

We have also posted some tips and guides on how to use the API on the Catch Software Blogs.

Feedback

We would love to hear your feedback and feature requests on the API – Catch Software are working hard to make it as easy as possible to extend Enterprise Tester. Get in touch with our Support Team, we would love to hear how you are using the API, what’s worked well and what could be improved.

API Permissions

Permissions

The account accessing the API requires project/organisation level permissions to access each supported Method of a resource, the table below documents each resource and the permissions required for use.

Name
GET
PATCH
POST
PUT
DELETE
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsTestManagement / ManageExecutions / Delete
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTests
TestManagement / ManageExecutions / View, TestManagement / ManageIncidents / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
UnsupportedUnsupportedUnsupportedUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTests
TestManagement / ManageExecutions / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
No PermissionsUnsupportedNo PermissionsUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageScripts / ViewUnsupportedUnsupportedTestManagement / ManageScripts / EditTestManagement / ManageScripts / Delete
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedTestManagement / ManageExecutions / EditTestManagement / ManageExecutions / Delete
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedUnsupportedTestManagement / ManageExecutions / Delete
UnsupportedUnsupportedUnsupportedUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTests
TestManagement / ManageExecutions / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageIncidents / View, TestManagement / ManageExecutions / ViewUnsupportedUnsupportedUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTests
TestManagement / ManageIncidents / View, TestManagement / ManageExecutions / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTests, TestManagement / ManageIncidents / EditUnsupportedUnsupported
UnsupportedUnsupportedUnsupportedUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTests
TestManagement / ManageExecutions / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageScripts / ViewUnsupportedTestManagement / ManageScripts / EditUnsupportedUnsupported
Enforced by task implementationUnsupportedUnsupportedUnsupportedUnsupported
UnsupportedUnsupportedEnforced by task implementationUnsupportedUnsupported
No PermissionsProject / EditProjectPickLists, Administration / Organisation / EditOrganisationPickListsUnsupportedUnsupportedNo Permissions
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedNo PermissionsUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedTestManagement / ManageExecutions / EditTestManagement / ManageExecutions / Edit, TestManagement / ManageExecutions / Delete
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedTestManagement / ManageExecutions / EditUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
Resources / ExternalLinksResources / ExternalLinksUnsupportedResources / ExternalLinksResources / ExternalLinks
Resources / ExternalLinksResources / ExternalLinksUnsupportedUnsupportedResources / ExternalLinks
UnsupportedUnsupportedResources / ExternalLinksUnsupportedUnsupported
Resources / ExternalLinksUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / ViewUnsupportedUnsupportedUnsupportedUnsupported
UnsupportedUnsupportedTestManagement / ManageIncidents / EditUnsupportedUnsupported
Resources / ExternalLinks, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageExecutions / ViewUnsupportedResources / ExternalLinksUnsupportedUnsupported
Resources / ExternalLinksUnsupportedResources / ExternalLinksUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
Resources / ExternalLinksUnsupportedResources / ExternalLinksUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
UnsupportedUnsupportedNo PermissionsUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedNo PermissionsUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedAdministration / Organisation / ManageUserAndGroupSecurityAdministration / Organisation / ManageUserAndGroupSecurity
Administration / Organisation / ManageUserAndGroupSecurityUnsupportedUnsupportedUnsupportedUnsupported
Administration / Organisation / ManageUserAndGroupSecurityUnsupportedUnsupportedAdministration / Organisation / ManageUserAndGroupSecurityUnsupported
No PermissionsUnsupportedUnsupportedAdministration / Organisation / ManageUserAndGroupSecurityUnsupported
No PermissionsUnsupportedAdministration / Organisation / ManageUserAndGroupSecurityUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedTestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupported
TestManagement / ManageIncidents / ViewTestManagement / ManageIncidents / EditUnsupportedTestManagement / ManageIncidents / EditTestManagement / ManageIncidents / Delete
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
UnsupportedUnsupportedUnsupportedUnsupportedTestManagement / ManageIncidents / Edit
TestManagement / ManageIncidents / ViewUnsupportedTestManagement / ManageIncidents / EditUnsupportedUnsupported
TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageIncidents / ViewUnsupportedTestManagement / ManageIncidents / CreateUnsupportedUnsupported
Administration / OrganisationUnsupportedUnsupportedUnsupportedUnsupported
Administration / OrganisationUnsupportedUnsupportedUnsupportedUnsupported
Administration / OrganisationUnsupportedUnsupportedAdministration / OrganisationUnsupported
No PermissionsNo PermissionsUnsupportedUnsupportedNo Permissions
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedAdministration / OrganisationUnsupportedNo Permissions
No PermissionsUnsupportedUnsupportedAdministration / Organisation / ManageOrganisationAdministration / Organisation / ManageOrganisation
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedTestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedAdministration / Organisation / ManageOrganisationUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupportedProject / ManageProjectsProject / ManageProjects
TestManagement / ManageExecutions / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / ViewUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedAdministration / Organisation / ManageOrganisationUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedAdministration / Organisation / ManageOrganisationAdministration / Organisation / ManageOrganisation
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
Administration / Organisation / ManageUserAndGroupSecurityUnsupportedUnsupportedAdministration / Organisation / ManageUserAndGroupSecurityUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedTestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupported
Project / ManageProjectsUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupportedUnsupportedUnsupported
Administration / Organisation / ManageUserAndGroupSecurityUnsupportedUnsupportedAdministration / Organisation / ManageUserAndGroupSecurityUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedProject / ManageProjectsUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedTestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupportedTestManagement / ManageExecutions / Edit, TestManagement / ManageScripts / Edit, TestManagement / ManageIncidents / Edit, TestManagement / ManageRequirements / EditTestManagement / ManageExecutions / Edit, TestManagement / ManageScripts / Edit, TestManagement / ManageIncidents / Edit, TestManagement / ManageRequirements / Edit
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / ViewUnsupportedUnsupportedUnsupportedUnsupported
UnsupportedUnsupportedTestManagement / ManageExecutions / Edit, TestManagement / ManageScripts / Edit, TestManagement / ManageIncidents / Edit, TestManagement / ManageRequirements / EditUnsupportedUnsupported
TestManagement / ManageRequirements / ViewTestManagement / ManageRequirements / EditUnsupportedTestManagement / ManageRequirements / EditTestManagement / ManageRequirements / Delete
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
UnsupportedUnsupportedUnsupportedUnsupportedTestManagement / ManageRequirements / Edit
TestManagement / ManageRequirements / ViewUnsupportedTestManagement / ManageRequirements / EditUnsupportedUnsupported
TestManagement / ManageRequirements / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageRequirements / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageRequirements / ViewUnsupportedUnsupportedTestManagement / ManageRequirements / EditTestManagement / ManageRequirements / Edit, TestManagement / ManageRequirements / Delete
TestManagement / ManageRequirements / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageRequirements / ViewUnsupportedTestManagement / ManageRequirements / EditUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageRequirements / ViewUnsupportedTestManagement / ManageRequirements / EditUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageScripts / ViewTestManagement / ManageScripts / EditUnsupportedTestManagement / ManageScripts / EditTestManagement / ManageScripts / Delete
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedTestManagement / ManageExecutions / EditTestManagement / ManageExecutions / Delete
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
UnsupportedUnsupportedUnsupportedUnsupportedTestManagement / ManageScripts / Edit
TestManagement / ManageScripts / ViewUnsupportedTestManagement / ManageScripts / EditUnsupportedUnsupported
TestManagement / ManageScripts / ViewUnsupportedUnsupportedTestManagement / ManageScripts / EditTestManagement / ManageScripts / Edit, TestManagement / ManageScripts / Delete
TestManagement / ManageScripts / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageScripts / ViewUnsupportedTestManagement / ManageScripts / EditUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewTestManagement / ManageExecutions / EditUnsupportedTestManagement / ManageExecutions / EditTestManagement / ManageExecutions / Delete
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageScripts / ViewUnsupportedTestManagement / ManageScripts / EditUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / ViewUnsupportedTestManagement / ManageExecutions / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / ViewUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
TestManagement / ManageExecutions / ViewUnsupportedUnsupportedUnsupportedUnsupported
UnsupportedUnsupportedUnsupportedUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTests
TestManagement / ManageExecutions / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageIncidents / ViewUnsupportedUnsupportedUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTests
TestManagement / ManageExecutions / View, TestManagement / ManageIncidents / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
Resources / ExternalLinksResources / ExternalLinksUnsupportedResources / ExternalLinksResources / ExternalLinks
UnsupportedUnsupportedResources / ExternalLinksUnsupportedUnsupported
Resources / ExternalLinksUnsupportedResources / ExternalLinksUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedNo Permissions
No PermissionsUnsupportedAdministrationUnsupportedNo Permissions
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedNo PermissionsUnsupportedUnsupported
UnsupportedUnsupportedUnsupportedUnsupportedNo Permissions
UnsupportedUnsupportedNo PermissionsUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageScripts / ViewUnsupportedTestManagement / ManageExecutions / ExecuteAllTests, TestManagement / ManageExecutions / ExecuteOnlyMyTestsUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedAdministration / Organisation / ManageUserAndGroupSecurityAdministration / Organisation / ManageUserAndGroupSecurity
No PermissionsUnsupportedUnsupportedAdministration / Organisation / ManageUserAndGroupSecurityUnsupported
UnsupportedUnsupportedAdministration / OrganisationUnsupportedUnsupported
UnsupportedUnsupportedUnsupportedAdministration / Organisation / ManageUserAndGroupSecurityUnsupported
Administration / Organisation / ManageUserAndGroupSecurityUnsupportedUnsupportedUnsupportedUnsupported
Administration / Organisation / ManageUserAndGroupSecurityUnsupportedUnsupportedAdministration / Organisation / ManageUserAndGroupSecurityUnsupported
No PermissionsUnsupportedAdministration / Organisation / ManageUserAndGroupSecurityUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / ViewUnsupportedTestManagement / ManageExecutions / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / ViewUnsupportedUnsupported
TestManagement / ManageExecutions / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / ViewUnsupportedTestManagement / ManageExecutions / View, TestManagement / ManageIncidents / View, TestManagement / ManageRequirements / View, TestManagement / ManageScripts / ViewUnsupportedUnsupported
No PermissionsUnsupportedUnsupportedUnsupportedUnsupported

Group By

GROUP BY

GROUP BY allows users to apply other aggregate functions to sub-sets of the set of entities matching the query.

This is the fundamental building block for analyzing information by Type, Status, Priority etc.

Syntax

GROUP BY <FieldSelector> [AS "Alias"] { <AggregationFunction1>, <AggregationFunction2> ... } AS "Alias"

The “FieldSelector” can currently be either a field name e.g.

GROUP BY Status { COUNT }

Which would display results like this:

Or can be a function call:

GROUP BY Fill(Status) { COUNT }

Which in this case would fill out the results to include all possible values (not just values included in the result of the query).

In the above GROUP BY statement, the function “Fill” will expand the GROUP BY to include all values from the Status picklist (which means the results will include 0-counts/0-sums).

Functions

Fill

The Fill function takes a single argument, the name of the field to GROUP BY. It will expand the results to include all groups, not just the groups which include 1 or more matches within the query.

Example:

GROUP BY Fill(Priority) { COUNT }

Month

The Month function takes at least one argument, the name of the field to GROUP BY. The field must be a date/time field. It will group the results based on the Month of the date supplied (all results will be grouped by the first day of the month they belong to).
Optionally, it can also include a Format and/or Range function (see the Format and Range functions below).

Example:

GROUP BY Month(CreatedAt) { COUNT }

This above aggregation would display results grouped by the first day of each month, as shown in this screen shot:

Day

The Day function takes at least one argument, the name of the field to GROUP BY. The field must be a date/time field. It will group the results based on the day of the date supplied (all results will be grouped by the day of the year they belong to, regardless of time). Optionally, it can also include a Format and/or Range function (see the Format and Range functions below).

Example:

GROUP BY Day(LastUpdatedAt) { COUNT } WHERE LastUpdatedAt >= DateSubtract(Now(), "2 weeks")

Note: When executing group by queries, results will be confined to only those days included in the result set:

To return the empty days as well, across a date range, use the “Range” function (see below for more details):

Year

The Year function takes at least one argument, the name of the field to GROUP BY. The field must be a date/time field. It will group the results based on the year of the date supplied (all results will be grouped by the year they belong to). Optionally, it can also include a Format and/or Range function (see the Format and Range functions below).

Example:

GROUP BY Year(CreatedAt) { COUNT }

Quarter

The Quarter function takes at least one argument, the name of the field to GROUP BY. The field must be a date/time field. It will group the results based on the quarter of the year they belong to. Optionally, it can also include a Format and/or Range function (see the Format and Range functions below).

Example:

GROUP BY Quarter(CreatedAt) {
    GROUP BY Project {
        COUNT
    }
}

Format

The Format function is a second-level function that can be passed to the various “Date” functions (Month, Day, Year & Quarter). It will be used to format the value of the date for display purposes – this allows you to convert the value in a more friendly format (so for example when grouping by month, you might want to output the date as “June – 2011”, instead of the default “2011-06-01”.

The format strings correspond to the Microsoft .Net Date/Time format strings, as documented here.

Note: The resulting string must be unique from all other group values strings, so for example if grouping by day, you could not provide a format string that only includes the year, as this would result in non-unique group names.

Example:

GROUP BY Year(CreatedAt, Format("yyyy")) { COUNT } WHERE EntityType = Requirement

Range

By default the values will range from the natural start and end date of the results, but in some cases you may wish to extend the range further for the purposes of reporting (for example if you want to have the range include particular start and end dates).

Range takes 2 arguments, both date/time values, being the start and end dates of the range.

Example:

GROUP BY Day(LastUpdatedAt, Range('2011-1-1','2012-1-1')) { COUNT } WHERE Project = 'Project X' AND EntityType = Requirement

Examples

GROUP BY packages to find when the first script assignment was created, and the last script assignment was updated (to see where activity in the project is occurring).

GROUP BY Package { Min(CreatedAt) AS "First Activity", Max(LastUpdatedAt) AS "Last Activity", COUNT AS "Total"} AS "Package" WHERE Project = "Project X" AND EntityType = ScriptAssignment

A variation on the previous example, using the full path of the packages, as opposed to just the package name:

GROUP BY PackagePath {
    Min(CreatedAt) AS "First Activity",
    Max(LastUpdatedAt) AS "Last Activity",
    COUNT AS "Total"
} AS "Package"
WHERE Project = "Project X" AND EntityType = ScriptAssignment

Here is how the output for the above query would look:

Find the number of entities being created per month over the last 3 years:

GROUP BY Month(CreatedAt, RANGE('2010-1-1', '2012-1-1'), Format('MMMM yyyy')) { COUNT }

The above example will GROUP BY date with labels like “January 2010” etc.

Below is an example of nested GROUP BY aggregations – this example gives a break down of each incident, by component, then type and finally priority, where the status is “Open” or “Reopened”

GROUP BY Component {
  GROUP BY Type {
    GROUP BY Priority {
      COUNT
    }
  }
}  
WHERE Status = Open

The above query would return results like this, using nested tree nodes:

Note: Though we display the above query over multiple lines (for clarity), this is entirely optional and nested GROUP BY’s can all appear on a single line. Because pressing enter while typing executes the query, you need to hold the “SHIFT” key while pressing enter to move the cursor to the next line of the text editor.

Facet Functions

Facet Functions

Facets use functions to determine which values will be matched against each facet. A list of the available functions is below:

Note: some functions will not return true/false values, and those can only be composed together as values passed to other functions when constructing faceted queries.

Function: AndArgs

Syntax

AndArgs(arg1,arg2... argN)

Description

AndArgs will take two or more arguments, and return true, if all the arguments are also true.

AndArgs is useful to combine the results of two or more comparison functions together.

Examples

Where Status is Draft and Type is Bug:

Faceted AndArgs(Equal(Status,Open), Equal(Type,Bug)) AS "Open Bugs" { COUNT } WHERE EntityType = Incident

Where Type is Epic and HasCoverage is true:

Faceted AndArgs(Equal(Type,Epic), Equal(HasCoverage, Yes)) AS "Epics with Coverage" { COUNT } WHERE EntityType = Requirement

Function: DateAdd

Syntax

DateAdd(<FieldName|Function>, <timespan>)

Description

DateAdd allows you to add time to a date value, this can be used to modify values passed to the comparison functions such as GreaterThan

The TimeSpan can be in one of the following formats:

  • hh:mm:ss i.e. 5 minutes would be “00:05:00”
  • N w(eeks), N d(ays), N h(ours), N m(inutes) i.e. “2 weeks”, “2d 4h”, “5 minutes”, “5m” are all valid values.

Examples

Everything where the item was created more than 2 weeks before its last update:

Faceted GreaterThan(LastUpdatedAt, DateAdd(CreatedAt, 2w)) { COUNT } WHERE EntityType = Script

Function: DateSubtract

Syntax

DateSubtract(<FieldName|Function>, <timespan>)

Description

DateSubtract allows you to add time to a date value, this can be used to modify values passed to the comparison functions such as GreaterThan

The TimeSpan can be in one of the following formats:

  • hh:mm:ss i.e. 5 minutes would be “00:05:00”
  • N w(eeks), N d(ays), N h(ours), N m(inutes) i.e. “2 weeks”, “2d 4h”, “5 minutes”, “5m” are all valid values.

Examples

Everything where the item was created more then 2 weeks before its last update:

Faceted LessThan(CreatedAt, DateSubtract(LastUpdatedAt, 2w)) { COUNT } WHERE EntityType = Script

Function: Equal

Syntax

Equal(<FieldName|Function>, <Value|Function>)

Description

Equal allows you to compare the value of a field or function to a fixed value, another field or a function.

It will return true if the first parameter is equal to the second parameter.

Examples

Priority high:

Faceted Equal(Priority,High) { COUNT } WHERE EntityType = Requirement

EstimatedDuration is equal to 5 minutes:

Faceted Equal(EstimatedDuration, '5 minutes') { COUNT } WHERE EntityType = Script

CreatedAt date/time is equal to the LastUpdatedAt date/time:

Function: Field

Syntax

Field(fieldName)

Description

Field takes a single string argument and returns the value of the field. This function is normally implicitly declared when using comparison functions such as Equal, so for example this:

Equal(Priority,High)

Automatically becomes this during query compilation:

Equal(Field(Priority), High)

Field is useful when passing values to non-comparison functions, such as DateAdd, DateSubtract etc. or when comparing one field to another.

Examples

Count of items where the DueDate (custom date field) is after the last updated date:

Faceted GreaterThan(DueDate, Field(LastUpdatedAt)) AS "Changed after due" { COUNT } WHERE EntityType = Incident

Function: GreaterThan

Syntax

GreaterThan(<FieldName|Function>, <Value|Function>)

Description

Greater than allows you to compare the value of a field or function to a fixed value, another field or a function.

It will return true if the first parameter is greater than the second parameter.

Examples

Average duration of scripts with more than 10 steps:

Faceted GreaterThan(ScriptStepCount,10) { Average(EstimatedDuration) } WHERE EntityType = Script

EstimatedDuration is greater than 5 minutes:

Faceted GreaterThan(EstimatedDuration, '5 minutes') { COUNT } WHERE EntityType = Script

Script assignments where the last run has an actual duration that is greater than the estimated duration for the associated script:

Faceted GreaterThan(ActualDuration, Field(EstimatedDuration)) { COUNT } WHERE EntityType = ScriptAssignment

Function: GreaterThanOrEqual

Syntax

GreaterThanOrEqual(<FieldName|Function>, <Value|Function>)

Description

The GreaterThanOrEqual function allows you to compare the value of a field or function to a fixed value, another field or a function.

It will return true if the first parameter is greater than or equal in value to the second parameter.

Examples

Average duration of scripts with 10 or more steps:

Faceted GreaterThanOrEqual(ScriptStepCount,10) { Average(EstimatedDuration) } WHERE EntityType = Script

EstimatedDuration is greater than or equal to 10 minutes:

Faceted GreaterThanOrEqual(EstimatedDuration, '10 minutes') { COUNT } WHERE EntityType = Script

Script assignments where the last run has an actual duration that is equal to or greater to the estimated duration for the associated script:

Faceted GreaterThanOrEqual(ActualDuration, Field(EstimatedDuration)) { COUNT } WHERE EntityType = ScriptAssignment

Function: IsNot

Syntax

IsNot(function)

Description

The IsNot function takes a single parameter, which should be a function that returns a boolean (true/false) value. If the function returns true, IsNot will return false and if the return value is false, IsNot will return true.

Examples

Any scripts where the step count is NOT between 10 and 20:

Faceted IsNot(Range(ScriptStepCount,10,20)) { COUNT } WHERE EntityType = Script

Function: LessThan

Syntax

LessThan(<FieldName|Function>, <Value|Function>)

Description

The LessThan function allows you to compare the value of a field or function to a fixed value, another field or a function.

It will return true if the first parameter is less than the second parameter.

Examples

Average duration of scripts with less than 20 steps:

Faceted LessThan(ScriptStepCount,20) { Average(EstimatedDuration) } WHERE EntityType = Script

EstimatedDuration is less than 5 minutes:

Faceted LessThan(EstimatedDuration, '5 minutes') { COUNT } WHERE EntityType = Script

Script assignments where the last run has an actual duration that is less than the estimated duration for the associated script:

Faceted LessThan(ActualDuration, Field(EstimatedDuration)) { COUNT } WHERE EntityType = ScriptAssignment

Function: LessThanOrEqual

Syntax

LessThanOrEqual(<FieldName|Function>, <Value|Function>)

Description

The LessThanOrEqual function allows you to compare the value of a field or function to a fixed value, another field or a function.

It will return true if the first parameter is less than or equal to the second parameter.

Examples

Average duration of scripts with less than or equal to 30 steps:

Faceted LessThanOrEqual(ScriptStepCount,30) { Average(EstimatedDuration) } WHERE EntityType = Script

EstimatedDuration is less than or equal to 5 minutes:

Faceted LessThanOrEqual(EstimatedDuration, '5 minutes') { COUNT } WHERE EntityType = Script

Script assignments where the last run has an actual duration that is less than or equal to the estimated duration for the associated script:

Faceted LessThanOrEqual(ActualDuration, Field(EstimatedDuration)) { COUNT } WHERE EntityType = ScriptAssignment

Function: NotEqual

Syntax

NotEqual(<FieldName|Function>, <Value|Function>)

Description

Not Equal allows you to compare the value of a field or function to a fixed value, another field or a function.

It will return true if the first parameter is not equal to the second parameter.

Examples

Priority is not low:

Faceted NotEqual(Priority,Low) { COUNT } WHERE EntityType = Requirement

EstimatedDuration is not equal to 15 minutes:

Faceted NotEqual(EstimatedDuration,'15 minutes') { COUNT } WHERE EntityType = TestScript

CreatedAt date/time is not equal to the LastUpdatedAt date/time:

Faceted NotEqual(CreatedAt, Field(LastUpdatedAt)) { COUNT } WHERE EntityType = TestScript

Function: Now

Syntax

Now()

Description

Now returns the current date and time.

Examples

All scripts where the script was created more than 2 weeks before today:

Faceted LessThan(CreatedAt, DateSubtract(Now(), 2w)) { COUNT } WHERE EntityType = Script

Function: OrArgs

Syntax

OrArgs(arg1,arg2... argN)

Description

OrArgs will take two or more arguments, and return true, if any of the arguments passed to it are true.

OrArgs is useful to combine the results of two or more comparison functions together.

Examples

Where Priority is High, or the Custom Field ‘Severity’ is High:

Faceted OrArgs(Equal(Priority,High), Equal(Severity,High)) AS "Urgent" { COUNT } WHERE EntityType = Incident

Where Type is ‘Non Functional’ or item has no coverage:

Faceted OrArgs(Equal(Type,'Non Functional'), Equal(HasCoverage,No)) AS "Non Function or Uncovered" { COUNT } WHERE EntityType = Requirement

Function: Range

Syntax

Range(<FieldName|Function>, start, end)

Description

Range allows you to compare a field or the result of a function to a start and end value.

It will return true if the first parameter’s value falls within the start and end values of the range.

Examples

Average estimated duration of scripts with between 10 and 20 steps:

Faceted Range(ScriptStepCount,10,20) { Average(EstimatedDuration) } WHERE EntityType = Script

Count of steps with an EstimatedDuration between 10 and 30 minutes:

Faceted Range(EstimatedDuration, '10m','30m') { COUNT } WHERE EntityType = Script

Function: Today

Syntax

Today()

Description

Today returns the todays date with no time component (i.e. the very start of today)

Examples

All scripts that were updated today:

Faceted GreaterThanOrEqual(LastUpdatedAt, Today()) { COUNT } WHERE EntityType = Script

Function: Unmatched

Syntax

Unmatched()

Description

Unmatched is a special function which returns true if the value has not matched any of the previous facets, it does not accept any arguments.

To illustrate – if there were 3 requirements, each with different priorities:

  • Requirement A – Priority: High
  • Requirement B – Priority: Low
  • Requirement C – Priority: Medium

We could write a faceted aggregation expression:

Faceted Equal(Priority, High) AS 'Urgent',
        OrArgs(Equal(Priority, Low), Equal(Priority, Medium)) AS 'Non-Urgent'
{
   COUNT
}
WHERE EntityType = Requirement

But if we add more non-high priorities to the picklist over time, we will need to update our faceted query to then capture those values.

As an alternative we could just write this:

Faceted Equal(Priority,High) as 'Urgent',
        Unmatched() as 'Non-Urgent'
{
   COUNT
}
WHERE EntityType = Requirement

In this case, anything that doesn’t match urgent will be “unmatched” and fall through to the “Unmatched()” facet.

Function: Yesterday

Syntax

Yesterday()

Description

Yesterday returns the previous day’s date with no time component.

Examples

All scripts where the script was created before yesterday:

Faceted LessThan(CreatedAt, Yesterday()) { COUNT } WHERE EntityType = Script

Faceted

Faceted

A faceted query allows you to specify groups/categories in which results will be matched and collected.

Overview

In a GROUP BY aggregation, results are grouped based on the value of a field within each result. In contrast the “Faceted” aggregation allows the user to provide the name and criteria for each group known as a “facet”.

Note: a single result can be collected into more than one group, where as a GROUP BY is guaranteed to collect each result into only one of the possible groups (values) for that field (except in the case of multi-select fields such as Components, Fixed/Affected versions etc.)

Facets should be familiar to anyone who has shopped online, where you will often see items divided in arbitrary groups which make it easer to find what you are looking for, i.e.

  • $10 and less
  • $10 to $50
  • $50 or more
  • On Special

Being able to break information down into meaningful ranges is a powerful tool which allows test managers to easily get an overview of the status of testing, and the quality/makeup of their test artifacts.

Examples

If you have a set of data with three distinct statuses:

  • Draft
  • Approved
  • Out Of Date

You could get a count of each type by using this GROUP BY query:

GROUP BY Status { COUNT }

But, what if you just want two counts, one for approved, and the other for both “Draft” and “Out of Date”?

This is where Faceted queries come in handy:

FACETED Equal(Status,Approved) as "Approved",
        OrArgs(Equal(Status,Draft), Equal(Status,'Out Of Date')) AS "Not Approved"
{
    COUNT
}

In the above query we are creating two “Facets” – the first facet for all matches where the Status is “Approved”, and the second which matches any status which is “Draft” or “Out Of Date”, and for each we calculate the count.

In the above example, we could also simplify it by counting everything that didn’t match the first facets predicate to be counted as the second facet, by using the Unmatched() function:

FACETED Equal(Status,Approved) as "Approved",
        Unmatched() AS "Not Approved"
{
    COUNT
}

In the above example we are only showing two facets – but the number of facets you can define is unlimited – each facet just needs to be separated by a comma – and at the end of the list of facets you must define a set of aggregate functions to be executed for each facet, just as you would when writing a GROUP BY query.

Here is an example of the output you would expect from the above example:

Syntax

Faceted aggregations use the following syntax:

FACETED [Facet1],[Facet2],[FacetN] { Aggregation1, Aggregation2.. AggregationN }

Each Facet is a function call with an optional alias (which must be provided in quotes):

<Function Call> [AS "Alias"|AS 'Alias']

If you do not supply an alias, the function call itself followed by the word “Facet” will be used as the name of this facet.

Functions

For a list of supported functions within a Facet, see the Facet Functions topic.

Entities

Entities

Overview

Aggregations are useful for collecting summary information across large sets of data, but in some cases you may wish to retrieve the names & ID’s of those entities which matched each group or facet. In these cases the “Entities” aggregate function can be used.

Syntax

Plain form:

Entities

Form with a set limit of results per node (if no value supplied, it will default to 50):

Entities(20)

Form which will return any number of results:

Entities(Max)

Note: Be careful when using this option, it is not a good idea unless you absolutely need all the results, because results are not fetched in pages.

These queries may take a long time to execution when there is a large amount of data.

Examples

Group by the status of all entities in a particular project, displaying the entities matching each status:

GROUP BY Status { Entities } WHERE Project = 'Project X'

Here is the output of executing the above query:

Note: Nodes can be clicked on to view the associated record, and hovering over the node will show the Type, Name and ID of that node.

Count

Count

Count is the simplest of aggregate functions, and will just return the count of matching entities.

Examples

Count all records in Enterprise Tester

Count

Count all records in a project

Count WHERE Project = 'Project X'

Count all incidents in a project with a status of “Open”

COUNT WHERE Project = 'Project X' AND EntityType = Incident AND Status = Open

Count all incidents, grouped by their status

GROUP BY Status { COUNT } WHERE Project = 'Project X' AND EntityType = Incident

AVG (Average)

AVG (Average)

Syntax

The AVG function can be used on any fields supporting aggregation which have a numeric type:

  • TimeSpan
  • DateTime
  • Integer (Int32/Int64)
  • Double
  • Float
  • Decimal

It will return the average value across all the values in the query (or the set of values being evaluated for the current Facet or Group).

Examples

This example would return the average number of steps for each script in a project.

AVG(ScriptStepCount) WHERE EntityType = Script

This would return the average time taken to execute scripts within a project (which have an actual duration recorded).

AVG(ActualDuration) AS "Actual", AVG(EstimatedDuration) AS "Estimated"
WHERE EntityType = Script AND ActualDuration IS NOT Empty

This would return the average number of incidents raised per test script assignment, grouped by the type of the associated script.

GROUP BY ScriptType { AVG(IncidentCount) AS 'Average' } AS 'Types'
WHERE EntityType = ScriptAssignment

Aggregation

Aggregation

Aggregation queries allow you to take a normal TQL query and calculate summary information over the set of results. It is a powerful feature that provides the functionality within Enterprise Tester to support complex reports and graphs, and we put that power into your hands.

Introduction

Aggregate queries (also known as summary queries) are formed by combining 1 or more aggregate function expressions at the start of a query, optionally followed by the “WHERE” keyword and then the query to apply the aggregations to.

The simplest aggregate query you can run is to count all entities within Enterprise Tester:

Count

This query will return a single value, the count of all entities within EnterpriseTester that you have permission to view:

To apply the above aggregation to a query you use the “WHERE” keyword:

Count WHERE Name ~ test

This will return the count of all results where the Name of an entity contains the word “test”.

Field Functions

In addition to counts we can also use the following functions, which apply to a specific field:

  • Avg – Average
  • Max – Maximum
  • Min – Minimum
  • Sum – Sum (Total)

For example, to find the oldest and newest requirement in a project you can use the following query:

Min(CreatedAt), Max(CreatedAt) WHERE EntityType = Requirement And Project = 'Project X'

Which would return results like this:

Aliases

Names assigned to values returned in a query will by default be computed based on the field and function being used – you can correct this by applying an Alias using the “AS” keyword.

Min(CreatedAt) AS "First requirement added at", Max(CreatedAt) AS "Last requirement added at"
WHERE EntityType = Requirement And Project = 'Project X'

Grouping

To group by a field such as priority or status you can use the Group By aggregate function.

This allows you to get information such as a count or total duration per status, project, package etc.

See the Group By topic for more details.

Faceted

“Group By” allows you to group results based on a field. This is useful in many cases, but sometimes you want to have more control over how information is grouped together, and this is where faceted is useful.

Faceted allows you to define one or more “facets” (effectively a predicate function call with an optional alias) which is used to determine if a value will be collected in that range.

Scenarios where this is useful include:

  • Splitting a count by status into two regions i.e. “Unapproved” (Draft or Awaiting Approval status) and “Approved” (Approved or Final status).
  • Comparing fields i.e. two groups “Estimated >= Actual Duration” and “Estimated < Actual Duration”, with a count of the average number of steps each script has.
  • AND/OR logic i.e. Group incidents into urgent and non-urgent groups, where urgent is defined as Priority is critical or Severity is high and priority is also high.