Queries (QQL, Qase Query Language)
What are queries in software testing?
Queries help you make analytical requests to get specific data from your Qase projects.
Queries are based on Qase Query Language (QQL). You can access Queries from the top-left menu.

From this page, you can manage saved queries and create new ones.
Create a new query
You can click on either one of the two buttons to create a new query.

Here, you can: 1. Select the entity from the drop down
2. Write your query
3. Search the query
4. Save the query
5. Choose the fields to be displayed in the table.

QQL Structure
QQL consists of two parts: "Entity" + "Query". Both are required to perform a search.
Here are a few examples:
entity = "defect" and status = "open"entity = "case" and project = "DEMO" and title !~ "auth" order by id descentity = "result" and status = "failed" and timeSpent > 5000 and
milestone ~ "Sprint 12"entity = "case" and isFlaky = false and automation = "To be automated"
Entities
Below are the available entities. Click on an entity to skip to the attributes available for it.
Expressions
Currently, QQL supports seven expression types. They are listed here in the decreasing priority order:
Parenthesis
( expression )Negation
not expressionLogical Expression
trueor
false Logical AND
expression and expressionLogical OR
expression or expressionChecking the attribute value
attribute operand valueSorting by field
ORDER BY field ASC/DESCSupported operands:
<
less than
integer
<=
less than or equal to
integer
>
greater than
integer
>=
greater than or equal to
integer
=, is
equal to
integer, bool
!=
not equal to
integer, bool
~
includes
string, text
!~
does not include
string, text
in
includes (array)
array
not in
does not include (array)
array
is empty
no value
is not empty
value exists
Data types:
Integer
110
>, >=, <, <=, =, !=
String
Some text
~, !~
Boolean
True or False
is
Array
['value 1', 'value 2'] ; ('value 1', 'value 2') ; [ ]
in
Null
null
Functions:
currentUser()
integer
-
Returns an ID of current user
activeUsers()
integer
-
Returns IDs of all active users
inactiveUsers()
integer
-
Returns IDs of all inactive users
now()
integer
"+Nd" / "-Nd"- modifies returned value, adding/subtracting N days.
In "+Nd", replace d with w for weeks; m for months.
N must be an integer
Returns current timestamp
startOfDay()
integer
'YYYY-mm-dd' - modifies returned value to the start of this input date.
"+/-N[d/w/m]" - modifies returned value by N days/weeks/months.
Returns timestamp of start of current day.
startOfWeek()
integer
'YYYY-mm-dd' - modifies returned value to the start of first day of the week (relative to the input date)
"+/-N[d/w/m]" - modifies returned value by N days/weeks/months.
Returns timestamp of start of current week.
startOfMonth()
integer
'YYYY-mm-dd' - modifies returned value to the start of first day of the month (relative to the input date)
"+/-N[d/w/m]" - modifies returned value by N days/weeks/months.
Returns timestamp of start of current Month.
endOfDay()
integer
'YYYY-mm-dd' - modifies returned value to the end of the input date.
"+/-N[d/w/m]" - modifies returned value by N days/weeks/months.
Returns timestamp of end of current day.
endOfWeek()
integer
'YYYY-mm-dd' - modifies returned value to the end of first day of the week (relative to the input date)
"+/-N[d/w/m]" - modifies returned value by N days/weeks/months.
Returns timestamp of end of current Week.
endOfMonth()
integer
'YYYY-mm-dd' - modifies returned value to the end of first day of the month (relative to the input date)
"+/-N[d/w/m]" - modifies returned value by N days/weeks/months.
Returns timestamp of end of current Month.
Entity fields
Test case:
ididentifier
id = 17id != 20id is 17id in [1, 2, 10]not id in [1, 2, 10]titlepreconditionspostconditionsdescriptionTest case title,
Pre/postconditions,
Description
title is "first test"title = "first test"title ~ "rst"title in ["first test", "second test"]authorcreator the test case.
author in ["user1", "user2"]author = "user1" [or]
author = "user2"author = group('name') [or]
author in [group('name1'), group('name2')]author = activeUsers() [or]
author = inactiveUsers()authorIf a test case is created by a reporter app
author = [name]-reporterReplace [name] with reporter name.
Eg: author = pytest-reporterReporters:
Playwright;
cucumberjs;
cypress;
jest;
newman;
testcafe;
cucumber3; cucumber4; cucumber5;
junit4; jnuit5;
testng;
pytest;
robotframework;
xctest;
phpunit;
codeception.
cfCustom fields: a complex attribute with a specific syntax, see examples.
cf["Epic"] = "Auth"cf["Story"] in ["Story 1", "Story 2"]cf["Epic"] is nullcf["Story"] = ["Auth", "Login"]cfvCustom field values. (by all custom fields)
cfv = "Auth"cfv in ["Story 1", "Story 2"]statustypebehaviorautomationlayerpriorityseveritystatus is "Actual"status = "Actual"status != "Deprecated"status in ["Draft", "Actual"]createdTime of case creation
created >= now("-14d")created >= startOfDay("-1m")created < 1569430502709createdByThe user who created the case
createdBy in ["user1", "user2"]createdBy = "user1" or createdBy = "user2"updatedLast modified date
updated >= now("-7d")updated >= startOfDay()updated < 1569430502709updatedBy
Last modified by user
updatedBy = currentUser()updatedBy = group('group name')updatedBy = 'User A'isDeletedCheck whether the case has been deleted or not
isDeleted is falseisDeleted = trueisFlakyCheck whether the case has been flagged as flaky
isFlaky is falseisFlaky = trueprojectBy default, search is performed across all projects.
If required, you can specify a project code.
project = 'DEMO'project in ['DEMO', 'QTC']project not in ['DEMO']suiteTest case's suite title
suite ~ 'auth'suite != 'auth'milestoneTest case's milestone title
milestone = 'Sprint 24'tagsTest case's tags
tags not in ['tag','tag2']Defects:
ididentifier
id = 17id != 20id is 17id in [1, 2, 10]not id in [1, 2, 10]titleDefect title
title is "first test"title = "first test"title ~ "rst"title in ["first test", "second test"]actual_resultActual result
actual_result is "first"actual_result = "first"actual_result ~ "rst"actual_result in ["first", "second"]projectProject
project = 'DEMO'project in ['DEMO', 'QTC']project not in ['DEMO']statusStatuses
open; resolved; in progress; invalid
status is "Open"status = "Resolved"status != "Invalid"status in ["Open", "Invalid"]severitySeverity
undefined;
blocker;
critical;
major;
normal;
minor;
trivial
severity is "blocker"severity = "blocker"severity != "blocker"severity in ["blocker", "critical"]authorThe user who created the defect
author in ["user1", "user2"]author = "user1"authorIf a defect has been created by a reporter app
author = [name]-reporterReplace [name] with reporter name.
Eg: author = pytest-reporterReporters:
Playwright;
cucumberjs;
cypress;
jest;
newman;
testcafe;
cucumber3; cucumber4; cucumber5;
junit4; jnuit5;
testng;
pytest;
robotframework;
xctest;
phpunit;
codeception.
createdByThe user who created the defect
createdBy in ["user1", "user2"]createdBy = "user1" or createdBy = "user2"createdTime of creation
created >= now("-14d")created >= startOfDay("-1m")created < 1569430502709updatedTime of update
updated >= now("-14d")updated >= startOfDay("-1m")updated < 1569430502709resolvedTime of resolution
resolved >= now("-14d")resolved >= startOfDay("-1m")resolved < 1569430502709isDeletedWhether the defect is deleted
isDeleted is falseisDeleted = trueisResolvedWhether the defect is resolved
isResolved is falseisResolved = truemilestoneDefect's milestone title
milestone = 'Milestone title'cfvCustom field values (by all custom fields)
cfv = "Auth"cfv in ["Story 1", "Story 2"]cfv is emptycfCustom fields: a complex attribute with a specific syntax, see examples.
cf["Epic"] = "Auth"cf["Story"] in ["Story 1", "Story 2"]cf["Epic"] is nulltagsDefect's tags
tags not in ['tag']Test run:
idIdentifier
id = 17id != 20id is 17id in [1, 2, 10]id not in [1, 2, 10]titleTitle
title is "first test"title = "first test"title ~ "rst"title in ["first test", "second test"]descriptionDescription
description is "first"description = "first"description ~ "rst"description in ["first", "second"]projectProject
project = 'DEMO'project in ['DEMO', 'QTC']project not in ['DEMO']planTitle of the plan used
plan = 'Regression'statusStatus
status is "passed"status = "in progress"status != "aborted"status in ["failed", "aborted"]authorThe user who created the run
author in ["user1", "user2"]author = "user1" or createdBy = "user2"authorIf a test run has been created by a reporter app
author = [name]-reporterReplace [name] with reporter name.
Eg: author = pytest-reporterReporters:
Playwright;
cucumberjs;
cypress;
jest;
newman;
testcafe;
cucumber3; cucumber4; cucumber5;
junit4; jnuit5;
testng;
pytest;
robotframework;
xctest;
phpunit;
codeception.
createdByThe user who created the run
createdBy in ["user1", "user2"]createdBy = "user1" or
createdBy = "user2"startedTime of start
started >= now("-14d")started >= startOfDay("-1m")started < 1569430502709endedTime of finish
ended >= now("-14d")ended >= startOfDay("-1m")ended < 1569430502709deletedTime of removal
deleted >= now("-14d")deleted >= startOfDay("-1m")deleted < 1569430502709isDeletedWhether the run is deleted
isDeleted is falseisDeleted = trueisStartedWhether the run is started
isStarted is falseisStarted = trueisEndedWhether the run is ended
isEnded is falseisEnded = trueisPublicWhether the run has a public link
isPublic is falseisPublic = trueisAutotestWhether the run is automated
isAutotest is falseisAutotest = trueMilestoneRun's milestone title
milestone = 'Milestone title'cfvCustom field values (by all custom fields)
cfv = "Auth"cfv in ["Story 1", "Story 2"]cfv is emptycfCustom fields: a complex attribute with a specific syntax, see examples.
cf["Epic"] = "Auth"cf["Story"] in ["Story 1", "Story 2"]cf["Epic"] is nulltagsRun's tags
tags not in ['tag_name']Test run results:
idIdentifier
caseId = 17caseId != 20caseId is 17caseId in [1, 2, 10]not caseId in [1, 2, 10]commentComment
comment is "first test"comment = "first test"comment ~ "rst"comment in ["first test", "second test"]caseTest Run Result's case title
case is "first"case = "first"case ~ "rst"case in ["first", "second"]runTest Run title
run is "first"run = "first"run ~ "rst"run in ["first", "second"]projectProject
project = 'DEMO'project in ['DEMO', 'QTC']project not in ['DEMO']statusStatus
Passed;
Failed;
Blocked;
Retest;
Skipped;
Deleted;
In progress;
Invalid
status is "Invalid"status = "Invalid"status != "Invalid"status in ["Invalid", "Failed"]authorassigneeThe user who created the result
author in ["user1", "user2"]author = "user1" or createdBy = "user2"authorassigneeIf a test run result has been created by a reporter app
author = [name]-reporterReplace [name] with reporter name.
Eg: author = pytest-reporterReporters:
Playwright;
cucumberjs;
cypress;
jest;
newman;
testcafe;
cucumber3; cucumber4; cucumber5;
junit4; jnuit5;
testng;
pytest;
robotframework;
xctest;
phpunit;
codeception.
createdByThe user who created the run
createdBy in ["user1", "user2"]createdBy = "user1" or createdBy = "user2"endedTime of finish
ended >= now("-14d")ended >= startOfDay("-1m")ended < 1569430502709isDeletedWhether the result is deleted
isDeleted is falseisDeleted = truetimeSpentTime spent (in milliseconds)
timeSpent > 10000Test plan:
idIdentifier
id = 17id != 20id is 17id in [1, 2, 10]not id in [1, 2, 10]titleTitle
title is "first test"title = "first test"title ~ "rst"title in ["first test", "second test"]descriptionPlan's description
description is "first test"description = "first test"description ~ "rst"description in ["first test", "second test"]projectProject
project = 'DEMO'project in ['DEMO', 'QTC']project not in ['DEMO']createdTime of creation
created >= now("-14d")created >= startOfDay("-1m")created < 1569430502709updatedTime of the last update
updated >= now("-14d")updated >= startOfDay("-1m")updated < 1569430502709deletedTime of deletion
deleted >= now("-14d")deleted >= startOfDay("-1m")deleted < 1569430502709isDeletedWhether the plan is deleted
isDeleted is falseisDeleted = trueRequirement:
idIdentifier
id = 17id != 20id is 17id in [1, 2, 10]not id in [1, 2, 10]parentParent requirement's title
parent is "first test"parent = "first test"parent ~ "rst"parent in ["first test", "second test"]projectProject
project = 'DEMO'project in ['DEMO', 'QTC']project not in ['DEMO']authorThe user who created the requirement
author in ["user1", "user2"]author = "user1" or
createdBy = "user2"createdByThe user who created the requirement
createdBy in ["user1", "user2"]createdBy = "user1" or
createdBy = "user2"titleTitle
title is "first test"title = "first test"title ~ "rst"title in ["first test", "second test"]descriptionDescription
description is "first test"description = "first test"description ~ "rst"description in ["first test", "second test"]statusStatus
valid;
draft;
review;
rework;
finish;
implemented;
not-testable;
obsolete.
status = 'valid'typeType
epic;
user-story;
feature.
type = 'epic'createdTime of creation
created >= now("-14d")created >= startOfDay("-1m")created < 1569430502709updatedTime of last update
updated >= now("-14d")updated >= startOfDay("-1m")updated < 1569430502709deletedTime of deletion
deleted >= now("-14d")deleted >= startOfDay("-1m")deleted < 1569430502709isDeletedWhether the requirement is deleted
isDeleted is falseisDeleted = trueExamples of Queries
entity = "case" and isDeleted is trueentity = "case" and created >= now("-3d")entity = "case" and created <= now("-3d")entity = "case" and isDeleted is true and project in ["QTC"]project = "QTC" and automation = "Not automated"project = "MR" and automation != "Automated"project = "QTC" and status in ["Draft", "Actual"]entity = "defect" and status !="Open" and severity = "Not set"entity = "defect" and status !=1 and severity = 0entity = "defect" and status !=1 and severity = 0 and cfv in ["1", "2"]entity = "defect" and status !="Open" and severity != "Not set" and milestone is emptyentity = "defect" and status !="Open" and severity != "Not set" and cf["Defect URL"] is not nullentity = "case" and author != "CEO" and updated <= now("-1d") and isFlaky is falseentity = "case" and author != "CEO" and updated <= now("-1d") and project in ('QALast updated