Note
This document is under active development!

If you find errors or missing information in this document, please don’t hesitate to submit an issue or open a pull request with a fix. We encourage you to submit questions and discuss any aspects of the project on github.

We are happy to welcome new contributors!

Introduction to Cerberus

Cerberus is a user-friendly automated testing framework. The development of this web application has started in 2010 and became open source in 2013.

Cerberus provides :

  • a user friendly and intuitive interface

  • a complete set of solutions to organize your test library

  • the possibility to run your tests, grouped in campaigns, easily and at a specific frequence

  • a reporting tool to visualize quickly and efficently the result of a campaign

  • much more…​

FR Something is incorrect/missing in this section? Feel free to submit modification.

1. What is Cerberus?

Cerberus is a webapplication, open source, test repository, user friendly, can interface with robot in multiple technologies.

FR Something is incorrect/missing in this section? Feel free to submit modification.


Getting started

In this section, you will find information on how is organized the Cerberus application.

We assume that you already configured your application, as described in the Application configuration section.

FR Something is incorrect/missing in this section? Feel free to submit modification.

2. Welcome to Cerberus application

2.1. Login

Opening Cerberus, you will be invited to login with the information you should have received from your Cerberus administrator.

LoginPage

Note
If you did not receive any credential, please contact your Cerberus administrator.
Note
If you forgot your password, you can retrieve it following the forgot password wizard.

Once you’re logged in, you will access to the homepage.

2.2. Homepage

The homepage is showing information on
  • testcases set by application grouped by status (See the [workflow] section for more information);

  • testcase executions by tag (the last ones by default, or customizable as described in the Customization section);

  • the application versions deployed on environment;

Homepage

2.2.1. Customization

You can customize the list of tag in a static way by selecting the tags from the combo. HomepageCustomTag

But you can also define a search text that will be used to dynamicaly retreive the list of tag. HomepageCustomTag

NB : If the list of tag is defined, the search Text will be ignored.

2.3. First steps

2.3.1. Glossary

You will find below definitions of Cerberus common terms.

  • System : Business Application or CI (Configuration Item)

  • Application : Technical component. Applications are linked to a single System.

  • Battery : (obsolete since 3.0 release) Group of TestCase to be executed together.

  • Campaign : Group of testcases (selected using labels) all linked to execution parameters (country - environment - browser - robot (optionnal)). Batteries were used instead of labels in release before 3.0

  • TestCase : Test scénario made of steps, actions and controls. (User story implementation in Cerberus)

  • Label : Mark to describe TestCases, so you can group and filter easily.

  • Test : Group of TestCases, Test is also considered as an application function. Executions can be sorted by Test.

2.3.2. Representation

You will find in this section a graphical representation of the main Cerberus elements.

Below the system :

SystemIllustration

Below the test case :

TestCaseIllustration

2.3.3. Tutorials

First steps as an administrator

Note
For non-admin users, please go to the next section : "First steps"

You will find below setting steps for an application to test.

  • Create a system. More information here Invariants

Note
Check you are on the system you have just created (dropdown menu at top right) MenuSystem
  • Create an environment. Example : PROD FR (see Environment)

  • Create an application. Example : Google (see Application)

  • Edit once again your application, you can now set new parameters. In tab environment, create PROD FR environment and fill http://www.google.fr in host section.

Technical settings are now finished. Please refer to the following section to implement a TestCase.

First steps

Note
Please verify with your administrator if system and application are already created.

You will find below step to create and execute a TestCase.

  • Create a Test. Example : « Search Engine » (see Create test)

  • Access to TestCase list and create a TestCase (cf Create TestCase). Mandatory fields : Test / Application / TestCase ID (Should already be filled with a reference)

Note
Activation criteria tab : Activate for PROD your TestCase. (default setting not active for PROD) For the example, We will run our TestCase on PROD environment
  • Your TestCase is now created, find it in the list using filters.

  • Edit it (cf Implement TestCase)

  • Create your first step « Open Google »

  • Add your first action : OpenURL value = www.google.com or OpenURLWithBase value = / (if URL is already defined in application settings)

  • You can add a control : VerifyTitle Title = Google

  • Save the script and click on Run button.

  • You are now on execution page. Select country / environment

  • Fill robot information. Mandatory fields : IP / port / browser.

Note
You must first run your selenium server (see Selenium)
Tip
To see execution step by step parameter Synchroneous to N.
  • Click on the execution button. BoutonRun

Congratulations, you’ve just executed your first Cerberus TestCase !

FR Something is incorrect/missing in this section? Feel free to submit modification.

3. Overview

In this section, you will find general information on Cerberus. How it is organized, How the tables are Customizable…​etc.

FR Something is incorrect/missing in this section? Feel free to submit modification.


Test Management

In this section, you will find information on test management in Cerberus.

FR Something is incorrect/missing in this section? Feel free to submit modification.

4. Test

4.1. Test

In this section, you will find information on Test in Cerberus.

Test description…​

TestPage

Note
There are 2 Tests that have a specific behaviour and allow to add before and after any test case some other testcases.
Those 2 tests are 'Pre Testing' and 'Post Testing'. They are identifying all test cases that will respectivly be added at the begginning and the end of the testcases.
For a given testcase running on an application app1, the following rules will apply :
. Only testcases inside 'Pre Testing' and 'Post Testing' will be added.
. Only active testcases will be added.
. Only testcases that are within the From Sprint / From Rev and To Sprint / To Rev
. The testcases will be added sorted by testcase id.

4.2. Test attributes

Field

Description

Test

Test name.

Description

Description of the test.

Active

Define if the test is active.

Automated

Define if the test contains automated testcase.

4.3. Create test

  1. Go to Test → Test. CreateTest

  2. Click on Create Test.

    1. Feed the Test field with the test name.

    2. Feed the Description field with a short description of this test.

    3. Select the activation information in the Active field.

    4. Select the automation information in the Automated field.

    5. Click on Save.

FR Something is incorrect/missing in this section? Feel free to submit modification.

5. TestCase

5.1. TestCase List

TestCaseListPage

5.2. Shortcut

5.2.1. Edit TestCase

TestCaseEdit

5.2.2. Delete TestCase

TestCaseDelete

5.2.3. Run TestCase

TestCaseRun

5.2.4. Duplicate TestCase

TestCaseDuplicate

5.3. TestCase attributes

Field

Description

Test

Test name on which testcase is linked.

Testcase

An ID (alphanumeric caracter).

Status

Used to implement a workflow and gives way to filter Testcase.

Active

Boolean that defines if the Testcase can be launched.

Short Description

Provide a brief introduction about the Testcase.

Application

The application for which the testcase is defined.

Function

Another categorization field.

Priority

Assign to any of its execution a certain importance to calculate the CI score.

Detailed Description

Provide more detail about the Testcase. Isn’t visible in reports.

Comment

Should be use in addition with the short description to give temporary comment.

The Activation Criterias defines condition to enable/block the Testcase to be launched in specific context (countries, environment…​). This level of specification is the most important (override all the others conditions)

A Testcase can be linked to multiple Labels depending on their assigned system (see labels section)

5.4. Create TestCase

  1. Go to TestCase → TestCase List.

  2. Click on Create TestCase.

CreateTestCase

Only the following field are mandatory:

  1. Feed the Test field with the test name. (a default value should be selected)

  2. Modify the Testcase ID if necessary (it can be modified after, but the according execution history will be lost)

  3. Select the Application

  4. Continue to describe

  5. Click on Save as soon as you’re done.

5.5. Implement TestCase

5.5.1. Step

  1. Click on Add step to display the following window. TestCasePage

  2. Feed a Description and click on Add for a new step.

  3. Or search for a step in library then click on Add.

testcaseaddstep

Your step is created. if you want to put it in library, just click on the book on the right side. A step in library will be available to add it in all test cases of your current system.

testcasesteplibrary

In the following screenshot you can see a use step. This step is imported from the previous library step. You are not able to modify it (all fields are grey). But you can find a link at the top to open the library if you want to modify your step. All use steps from this library will be impacted by your modification.

To modify only this use step, you have to click on the padlock icon but it will not be a use step anymore. (modification on library step will not affect it)

testcaseusestep

Note
You have the possibility to switch the position of your steps by clicking on the 3 dots.

testcaseusestep testcaseusestep

5.5.2. Action

Action

Description

Example

Unknown

Unknown action. Default Action when creating a new action. Warning: make the execution fail.

click

will allow you to click on an element inside the current page. Value1 Identifier and name of the element to click in the form of : identifier=html_reference. Example : id=html_reference

mouseLeftButtonPress

allow to press and keep the button pressed until the next ButtonRelease action

mouseLeftButtonRelease

release the mouse button. Usefull with ButtonPress to perform drag & drop

doubleClick

will allow you to double click on an element inside the current page. Value1 Identifier and name of the element to click in the form of : identifier=html_reference. Example : id=html_reference

rightClick

will allow you to right click on an element inside the current page. Value1 Identifier and name of the element to click in the form of : identifier=html_reference. Example : id=html_reference

mouseOver

mouse cursor over an object Element path : the id of the element

focustoIframe

TBD

focustoDefaultIframe

TBD

switchToWindow

when the Test case need to switch to another window (like popup dialog) this action is used. Just specify the title or the URL of the other window to switch to this window.

title=titleOfThisNewWindow or url=http://url_of_this_new_window

manageDialog

TBD

OpenUrlWithBase

OpenUrl action using the based defined in the environment section

/cerberustesting

OpenUrlLogin

OpenUrl action using credential

OpenUrl

Open a specified url

https://github.com

executeJS

execute a JS script (no output can be retrieved)

openApp

TBD

closeApp

TBD

select

select an option in a <select> tag. this 'text' must be defined : <option value="text">

keypress

will allow you to press any key in the current web page. Value1 : Location of the element from which press the key. Value2 : Keycode of the key to press Example : ENTER

type

Write a data in a field. Element path : the id of the field Property Name : the property containing the value to type (can be a property or text.

hidekeyboard

Hide the currently visible keyboard

swipe

The action simulates a user pressing down on the screen, sliding to another position, and removing their finger from the screen. Swipe action can be used neither with unique parameter UP,DOWN,LEFT,RIGHT, or with combination of parameter CUSTOM and x1;y1;x2;y2, which are coordinates of origin point (x1;y1) and relatives coodinates of destination point (x2;y2)

swipe UP : will swipe from the 2/3 to the 1/3 of the screen. swipe CUSTOM 100;100;0;100 : will swipe from the point (100;100) to the point (100;200)

wait

Wait for a certain amount of time Feed a number (ms) or wait for element present feed an element (xpath)

waitVanish

TBD

callService

call a service defined the Service Library and provide the output within the execution

executeSqlUpdate

will allow you to execute SQL update (insert,delete,update). Feed the Database Name and the Script to execute. Database has to be declared to your system and environment.

executeSqlStoredProcedure

will allow you to execute SQL stored procedure. Feed the Database Name and the Stored Procedure to execute. Database has to be declared to your system and environment.

calculateProperty

will allow you to calculate a Property defined in the property section of the test case. [Optional] Feed Value2 with another property to affect to the previous Property Name a new value. Useful to override the one defined from the property section during an execution.

doNothing

Just perform no action. No action will be executed and engine will go to the next action or control

removeDifference

DEPRECATED

5.5.3. Control

Control

Description

Example

Unknown

Default control when creating a new control

getPageSource

TBD

takeScreenshot

Take a screenshot

verifyElementClickable

OK if Element is clickable.

verifyElementDifferent

TBD

verifyElementinElement

TBD

verifyElementEquals

TBD

verifyElementNotClickable

TBD

verifyElementNotPresent

OK if Element is not found (from the source code) on the current page.

verifyElementNotVisible

OK if Element is found and visible (according to rendering) on the current page.

verifyElementPresent

OK if Element is found on the current page.

verifyElementVisible

OK if Element is visible on the current page.

verifyElementDifferent

TBD

verifyIntegerEquals

OK if the Integer1 is equal to the Integer2.

verifyIntegerGreater

OK if the Integer1 is greater than the Integer2.

verifyIntegerMinor

OK if the Integer1 is lower than the Integer2.

verifyRegexInElement

TBD

verifyStringContains

OK if Property String1 contains the String2.

verifyStringEqual

OK if the String1 is equal to the String2.

verifyStringGreater

OK if the String1 is greater than to the String2 (After in a dictonnary)

String1 : ZZZ String2 : AAA

verifyStringMinor

OK if the String1 is minor than to the String2 (before in a dictonnary)

String1 : AAA String2 : ZZZ

verifyTextInDialog

TBD

verifyTextInElement

OK if the text found in Element is equal to the Text indicated

Element : //StatusCode Text : OK

verifyTextInPage

TBD

verifyTextNotInElement

OK if the text found in Element is not equal to the Text indicated

Element : //StatusCode Text : KO

verifyTextNotInPage

TBD

verifyTitle

TBD

verifyUrl

OK if the URL of the current page equal to the URL indicated .

verifyXmlTreeStructure

TBD

5.5.4. Property

When clicking on Tab buttonManageProperties, the Property menu will appear. From there you can manage your TestCase properties or see your Inherited Properties - coming from the step libraries of your use steps.

windowManageProperties

Properties are the key element of your TestCase to manage different variables in the same scenario. A property is identified by its name and the country for which it’s defined (e.g. you cannot have two properties defined for the same country with the same name).

Properties can be called by their name using the follwing syntaxes:

  • %property.property_name% : the execution will stop if any problem in the property calculation

  • %property_name_here% : the execution will not stop if any problem in the property calculation

When handling Datalib, the syntaxes to call the subdata are :

  • %property.property_name.sub_data_name% or %property_name.sub_data_name%

  • %property.property_name(sub_data_name)% or %property_name(sub_data_name)%

Properties can be called in action or control values field or in another property.

Field

Description

Property

Name of the property.

Type

The way the property is going to be calculated.

Value

Value of the property.

DB

DataBase in which the property will "executeSql".

Length

When calculating a list of values, defines the number of rows the property will return.

Row Limit

When returning a list of values, limits the number of rows the property will consider for random purposes.

Nature

Defines the unique value that will be used in the execution. By default, STATIC has no rules defined : it will take the first result it finds.

Desription

Description of the property.

Countries

Countries for which the property will be calculated (environment parameter).

5.5.5. Property Types

Field

Description

Example

text

assign the property an alphanumeric value. Can invoke other properties

%system.EXECUTIONID%_test

getFromDataLib

query the corresponding datalib (identified by its name)

Datalib_Name

getFromSQL

run a specific query an get the first, and only the first, result. The DB must be specified

select TestCase from testcasestepactioncontrol where Control = 'verifyElementInElement'

getFromJS

Execute the specified JavaScript script without getting any output

var xPathRes = document.evaluate ("//*[@data-cerberus='button_basket_ProductBloc_modifyProduct1']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null); xPathRes.singleNodeValue.click();

getFromJson

JSON path to get a certain element from a service call

$.status

getFromXml

Xpath to get a certain element from a service call

//OrderId/text()

getFromGroovy

Execute the specified Groovy script and get the last defined variable

'%property.date%'.replace('\','-').substring(0,10)

SQL queries management:
  • queries can be stored inside the test case and launched using getFromSQL. Only one value of the first row can be retrieved.

  • queries can be stored inside a Datalib, according to its DB. Several values of the first row can be retrieved.

We recommend the Datalib since its simplifies the modification of any request, if some queries can be re-used.

Service management:

A service must be referenced in Service Library

  • it can be called using the callService property, parsing will be performed using properties (getFromJson, getFromXml)

  • it can be stored in a datalib and all the field will be parsed using the Subdatas.

5.5.6. Variables

You can use variables in many area of Cerberus. Those variable are used in order to perform some actions of controls in a dynamic way. 3 types of variables can be created :

  • Variables defined from properties inside Test Cases.

  • Variables defined from application object.

  • System Variables

Properties and Application Object are defined by the users while system variable are provided by Cerberus.

The global syntax of a variable is : %[property|object|system].nameOfTheVariable%

This is the list of fields in Cerberus where you can use those variables.

  • Condition Value1 and Value2 at Test Case level.

  • Condition Value1 and Value2 at Step Test Case level.

  • Condition Value1 and Value2 at Action Test Case level.

  • Condition Value1 and Value2 at Control Test Case level.

  • Test Case Action Value 1 and Value 2.

  • Test Case Control Value 1 and Value 2.

  • Test Case Properties Value 1 and Value 2.

  • Path, Envelope and Method at Test Data Library (SOAP) level.

  • SQL Script at Test Data Library (SQL) level

  • Column, Parsing Answer and Column Position at Test Data Library Subdata definition level

  • Path, Request, Operation and Attachement URL at Service level.

  • Request detail (all keys and values) and Header (all keys and values) at Service level.

When a variable is detected in one of those field, Cerberus will replace it by the value during the execution.

  • If the variable is an object, the value (that never change) is just replaced.

  • If the variable is a system variable, the value is calculated and replaced at the same time (for ex : time will be the time of the replacement).

  • If the variable is a property, it gets automatically calculated at the time of the replacement. If was already calculated before, the same value (already calculated) is replaced. NOTE: In order to force the calculation of a property at a certain timing, calculateProperty Action can be inserted just before the action is used in a field.

Variables can be defined in a recursive way. That means that the following syntax :

%property.%system.country%% will be first replaced by

%property.FR% and then by FR property value (if it exist).

Please note also that, if at the end of the decode operation, there are still references to %property.???% or %system.???% or %object.%%% in the field, the corresponding test case will report an error and generate an FA status.

Property Variables

Property variable allow to have multi row content. As a consequence the full syntax will look like this :

%property.NameOfTheVariable.rowNb.SubData%

If rowNb is not defined, the 1st row will be used. As a consequence, the syntax %property.rowNb.nameOfTheVariable% is the same as %property.1.nameOfTheVariable%

If SubData is not defined, the key velue subdata will be used.

Object Variables
  • %object.myobject.value% : Get the application object myobject’s value

  • %object.myobject.picturepath% : Get the application object myobject’s picture path

  • %object.myobject.pictureurl% : Get the application object myobject’s picure url

System Variables

Below you will find useful properties :

Value

Description

%system.SYSTEM%

System value

%system.APPLI%

Application reference

%system.BROWSER%

Browser name of the current execution.

%system.APP_DOMAIN%

Domain of the Application

%system.APP_HOST%

Host of the tested Application

%system.APP_CONTEXTROOT%

Context Root of the tested Application

%system.EXEURL%

Full Url of the tested Application

%system.APP_VAR1%

VAR1 of the application on the environment.

%system.APP_VAR2%

VAR2 of the application on the environment.

%system.APP_VAR3%

VAR3 of the application on the environment.

%system.APP_VAR4%

VAR4 of the application on the environment.

%system.ENV%

Environment value

%system.ENVGP%

Environment group code

%system.COUNTRY%

Country code

%system.COUNTRYGP1%

Country group1 value

%system.COUNTRYGP2%

Country group2 value

%system.COUNTRYGP3%

Country group3 value

%system.COUNTRYGP4%

Country group4 value

%system.COUNTRYGP5%

Country group5 value

%system.COUNTRYGP6%

Country group6 value

%system.COUNTRYGP7%

Country group7 value

%system.COUNTRYGP8%

Country group8 value

%system.COUNTRYGP9%

Country group9 value

%system.TEST%

Test.

%system.TESTCASE%

TestCase

%system.TESTCASEDESCRIPTION%

TestCaseDescription

%system.SSIP%

Selenium server IP

%system.SSPORT%

Selenium server port

%system.TAG%

Execution tag

%system.EXECUTIONID%

Execution ID

%system.EXESTART%

Start date and time of the execution with format : 2016-12-31 21:24:53.008.

%system.EXESTORAGEURL%

Path where media are stored (based from the exeid).

%system.EXEELAPSEDMS%

Elapsed time in ms since the beginning of the execution (can be used to perform timing controls).

%system.CURRENTSTEP_INDEX%

Index number of the current step execution. Can be used when looping over a step.

%system.CURRENTSTEP_STARTISO%

ISO Timestamp of the beginning of the step execution.

%system.CURRENTSTEP_ELAPSEDMS%

Elapsed time in ms since the beginning of the current step execution (can be used to perform timing controls).

%system.STEP.n.RETURNCODE%

Return Code of the step n. n being the execution sequence of the step (sort).

%system.LASTSERVICE_HTTPCODE%

Http return code of the last service called.

%system.TODAY-yyyy%

Year of today

%system.TODAY-MM%

Month of today

%system.TODAY-dd%

Day of today

%system.TODAY-doy%

Day of today from the beginning of the year

%system.TODAY-HH%

Hour of today

%system.TODAY-mm%

Minute of today

%system.TODAY-ss%

Second of today

%system.YESTERDAY-yyyy%

Year of yesterday

%system.YESTERDAY-MM%

Month of yesterday

%system.YESTERDAY-dd%

Day of yesterday

%system.YESTERDAY-doy%

Day of yesterday from the beginning of the year

%system.YESTERDAY-HH%

Hour of yesterday

%system.YESTERDAY-mm%

Minute of yesterday

%system.YESTERDAY-ss%

Second of yesterday

%system.TOMORROW-yyyy%

Year of tomorrow

%system.TOMORROW-MM%

Month of tomorrw

%system.TOMORROW-dd%

Day of tomorrw

%system.TOMORROW-doy%

Day of tomorrw from the beginning of the year

%system.ELAPSED-EXESTART%

Number of milisecond since the start of the execution.

%system.ELAPSED-STEPSTART%

Number of milisecond since the start of the execution of the current step.

Tricks

You will find below some tricks which help you to implement specific test cases.

Note
It is possible to create a random property with a number of digit defined. You have to feed the property fields like the screenshot below. This property will be different for each execution. Example: 884592, 004795 TestCaseRandomProperty
Note
It is possible to loop over a step using the following configuration. TestCaseLoopStep

5.5.7. Robot Constrains

You can define Robot constrains at testcase level in order to force the execution a specific testcase with a specific UserAgent or ScreenSize. This is used to test some specific behaviour of a website for a given UserAgent or ScreenSize. You can tune the list of UserAgent and ScreenSize proposed in autocomplete mode (on the GUI) by modifying the respective public invariant USERAGENT and SCREENSIZE.

UserAgent and ScreenSize will be defined at execution level following the rule :

TestCase

Robot / Execution

UserAgent Result

UserAgent1

UserAgent1

UserAgent2

UserAgent2

user Agent unchanged

UserAgent1

UserAgent2

UserAgent1

TestCase

Robot / Execution

ScreenSize Result

1024*768

1024*768

640*360

640*360

Fullscreen

1024*768

640*360

1024*768

FR Something is incorrect/missing in this section? Feel free to submit modification.

6. TestCase execution

6.1. Introduction

The run options are accessible using the menu Run > Run Test Case

RunTestCaseMenu

The different sections let the user select the test case(s) to launch and choose its execution parameters.

  • Selection type

  • Environment & Country

  • Robot settings

  • Execution settings

6.2. Selection Type

RunTestSelection

Manual selection let the user select one or several test cases using the filters.

ExtendedTestCaseFilters

Campaign selection let the user select a campaign from a dropdown menu. Clicking 'load' button display the selected test cases in the section below.

CampaignSelection

6.3. Environment & Country

For manual selection, no country and environment are selected.

For campaign selection, some environments and countries can be checked if they are configured in the Test Campaigns

EnvironmentCountries

Warning: the environment and countries must be configured for the related applications. Besides, the testcase attributes override the configuration (e.g. Active in PROD)

6.4. Robots settings

RunRobotSettings

The robots settings can be linked to a campaign. If so, the robot(s) will be automatically selected when the corresponding campaign is loaded.

However, if the user changes this value, it will be overriden by his selection.

'Save Robot Preferencies' button save these settings in the browser cache of the device.

The selected robot can be edited using the left button. A new robot can be created using the right one.

6.5. Execution settings

RunExecutionSettings

  • Tag : regroup all the execution in the same tag. It help identify this execution for reporting sake. If no value, the tag will be a timestamp.

  • Screenshot : define if screenshots have to be taken and the frequency.

  • Timeout : define the maximum time (in ms) to spent in an action or control. Correspond to the time Cerberus will wait until it consider that a field or object is not available.

  • Retries : Defined the number of retries for each test cases. A retry is a re submission of a testcase (in the queue) if its status is different from OK.

  • Priority : define the priority for all the test cases (reminder: the lowest (=0) the most important). Default value is 1000. Tips: Use 0 priority only when relaunching manually a test case.

  • Manual Execution : define the test case execution type: Y : manual, N : Automatic, A : Automaticly determined from test case. default value is 'N'

Execution parameter \ Test Case Group

AUTOMATED

MANUAL

PRIVATE

N

Automated execution

Automated execution

Automated execution

Y

Manual execution

Manual execution

Manual execution

A

Automated execution

Manual Execution

Automated execution

6.6. Execution result status

ExecutionStatus

Here is a summary of all execution status with their corresponding meanings.

  • OK : The execution was performed correctly and all controls were OK.

  • KO : The execution was performed correcly and at least one control failed resulting a global KO. That means that a bug needs to be reported to development teams.

  • FA : The execution did not performed correctly and needs a correction from the team that is in charge of managing the testcases. It couls be a failed SQL or action during the test.

  • NA : Test could not be executed as a data could not be retreived. That probably means that the test is not possible in the current environment/status.

  • NE : Test Case was not executed (following a condition execution).

  • WE : Test Case was not yet executed (waiting a manual execution).

  • PE : Test Case is currently running.

  • QU : Test Case is still waiting in the queue for ressources or constrains to be released.

  • QE : Test Case failed in the queue and will not be triggered.

  • CA : Test Case has been cancelled by user.

FR Something is incorrect/missing in this section? Feel free to submit modification.

7. Execution Queuing system

7.1. Workflow

The queuing system allow you to submit many execution and have them executed automatically ASAP depending on constrain configuration.

  • Every execution that are submitted inside the queue follow a specific workflow. QueueWorkflow

  • In order to monitor and administer the workflow every execution gets a State with an associated message. Each time the State is modified the Last State date is updated accordingly.

  • Each execution enter the queue in a QUEUED State.

  • The queue Job will analyse all the executions that are in QUEUED State in order to decide (or not) to start the execution. If none of the constrains are applied, the execution moves to a WAITING State. That state corresponding to the execution being in the final (JAVA) queue before execution.

  • It then moves to STARTING as soon as the call to the RunTestCase Servlet is done.

  • Then depending on if execution could be started, it moves in ERROR State with the associated error message or EXECUTING.

  • An execution in EXECUTING State have the execution ID defined and the followup of that execution can be monitored directly on that execution.

  • Once the execution is finished (no matter what could be the end result in terms of status - OK, KO, FA, NA, …​), the execution move to the final state DONE.

  • Execution that are in state ERROR can either be submitted again in QUEUED or cancelled in state CANCELLED

  • Executions that are in state CANCELLED can also be submitted again in QUEUED state.

  • All executions that are in State QUEUED, WAITING, ERROR and CANCELLED can be modified.

  • All executions that are in State STARTING, EXECUTING and DONE cannot be modified.

7.2. Administration

The 'Executions in Queue' tab from the Executions in queue screen allow to see and count the number of exe in various state.

ExecutionsInQueue

  • Button 'Filter Pending' allow to directly filter to QUEUED State.

  • Button 'Filter Executing' allow to filter state : WAITING, STARTING and EXECUTING

  • Refresh button allow to refresh the list without fully loading the page.

On each execution, you can modify its content by clicking on the edit button.

QueueEditModal

  • Button 'Save' allow to modify the parameters of the execution.

  • Button 'Save and submit again' is to save the new parameters and change the status again to QUEUED

  • Button 'Cancel this execution' is to cancel the execution by moving it state to CANCELLED

You can also duplicate it to a new execution that will be inserted in QUEUED state by clicking on the duplicate button.

QueueDuplicateModal

  • Button 'Copy and submit a new execution' allow to copy the execution to a new one that will be inserted in QUEUED state.

Mass Action allow to perform similar operation in a massive way. Select a list of exe and click on Mass Action button in order to open the following screen:

QueueMassAction

  • 'move to QUEUED' allow to move an execution that is in state ERROR or CANCELLED back to QUEUED state

  • 'copy to QUEUED' allow to copy the list of execution to new executions that will all be in QUEUED state.

  • 'move to CANCELLED' allow to cancel the list of execution that are in state ERROR or QUEUED

  • 'force to CANCELLED' should be used only in very rare occasion when some executions are stuck in WAITING, STARTING or EXECUTING state. That could happen for example if Cerberus has been stopped when executions were still processing.

QueueMassAction

On that screen you can massively modify the priority of the execution list. Just put the new priority value and cick on 'Change Priority'

7.3. Priorities management

  • By default, execution are treated in FIFO mode.

  • Each time the queue job analyse the list of QUEUED execution, it will analyse them sorted by priority ascending + by queueID ascending.

  • Default Priority value is 1000.

  • If you want to increase the priority of the given execution, you can change it to any value bellow 1000. The lower priority value takes, the higher the priority will be.

  • If you want some execution to be treated last, change it to any value above 1000.

7.4. Constrain management

When submitting too many execution in a too short period of time, the result could be uncertain. In order to prevent that issue, 3 levels of constrains can be defined.

  • constrain 'constrain1_global' : Global level of constrain in order to secure that Cerberus itself is not saturated by number of simultaneous execution. Parameter cerberus_queueexecution_global_threadpoolsize allow to configure the number of simultaneous execution will handle in total.

  • constrain 'constrain2_application' : Application level constrain. An application on a given environment could have some limitation that can be controlled by that constrain. The number of simultaneous execution can be defined in 'Pool Size' field from application screen or Environment screen.

  • constrain 'constrain3_robot' : Robot level constrain. Some robot cannot handle too many execution at the same time. The configuration of simultaneous execution is done at robot host level. Please use public invariant ROBOTHOST in order to define that number of simultaneous execution using gp1 field.

QueueRobotHost

A default value can be configured with parameter _cerberus_queueexecution_defaultrobothost_threadpoolsize_. That parameter will be used in case the invariant entry does not exist or cannot be converted to numeric value.
  • NB1 : Only the applications that require a robot will enter to that constrain (GUI, IPA, APK, FAT).

  • NB2 : Robot host will be taken by preference from Robot and then from execution itself.

The 'Pools Follow Up' tab allow to control and follow up all those constrain value

QueuePoolsFollowup

In that example, there is currently 2 executions for a global maximum of 50 executions. A total of 8 executions are still in the queue (that will be treated once the 2 pending will be finished). Saturation level is at 4% and considering that global queue is not saturated, there are no execution pending on saturated queue.

There is currently 2 executions running against Cerberus application in DEV for RX country. On that application / environment, a total of 6 executions are still in queue. That queue is saturated at 100% and 6 executions are in the queue on that saturated queue.

There is currently 2 executions running against localhost robot. On that robot host, a total of 7 executions are still in queue. That queue is also saturated at 100% and 7 executions are in the queue on that saturated queue.

Sorting the last column will give the constrain/queue that require the most attention in order to speedup the global execution of the campaign.

TIP : In case you have an execution that you don’t understand why it is not released, you can modify for that execution the debug Flag to Y. Next time the queue job execute, the state message will detail the constrain that prevent the execution to be released.

The 'Queue Job Status' tab allow to monitor the 'queue execution job'.

QueueJobStatus

  • 'Job Status' is at Y when the job that analyse the queue is currently running (that should almost never happen).

  • 'Job Start' correspond to the time when the last job was triggered. That job automatically trigger when a new execution is inserted inside the queue or an execution finish (releasing some space for a new execution to start).

  • 'Job Activate' is at Y if the Job is enable. Job can be disable (in case you want to pause the release of any new execution) or enable by changing the parameter cerberus_queueexecution_enable.

Button 'Force Execution' will force the execution in case the job is not automatically triggered.

FR Something is incorrect/missing in this section? Feel free to submit modification.

8. Campaign management

8.1. Test campaign

A campaign is composed of - a list of testcases (that can be specified either by test battery of labels) - a list of country(ies) - a list of environment(s) - a list of browser.

Campaign is used when you want to trigger a perimeter of testcase on a given country and environment. Campaign name can be specified when calling public API AddToExecutionQueue.

When a Campaign execution is triggered, notifications can be sent to a distribution list at the beginning or the end of the campaign execution. Flags can be used in order to activate the sending of the email. Distribution list can be configured. Email from, subject and body can be configured by changing parameters that start by cerberus_notification_tagexecutionend and cerberus_notification_tagexecutionstart

Campaign

FR Something is incorrect/missing in this section? Feel free to submit modification.

9. Label

9.1. Label

In this section, you will find the bla bla

Logo

9.2. Label attributes

Field

Description

System

System on which the label will be available.

Label

Name of the label.

Color

Color in #hex format.

Parent Label ID

Not implemented yet! Allow to link the label to another one in order to group them.

Description

This is a short description of the label.

9.3. Create label

  1. Go to TestCase → Label. CreateLabel

  2. Click on Create Label button.

    1. Select the System on which the label will be available.

    2. Feed the Label field with the name of the label.

    3. Choose the Color to apply to this label.

    4. Feed the Description field with a short description of the label.

    5. Click on Save.

FR Something is incorrect/missing in this section? Feel free to submit modification.


Library

In this section, you will find information on library in Cerberus

FR Something is incorrect/missing in this section? Feel free to submit modification.

10. Data library

10.1. Create data

A Test Data Library is used to store or define the way to retrieve the data that will be necessary to perform the tests. Different way of getting the data can be used (INTERNAL, SQL, SERVICE or CSV) but that definition is independent from the test case definition so that you can easily change from one to another without impacting all the corresponding test cases.

  1. Go to Data → Data Library. testdatapage

  2. Click on Create New Entry button.

    1. Feed the Name field

    2. Select the Type of the data.

    3. Select a System, an Environment, a Country (not mandatory fields).

    4. Feed the fields of your configurations.

    5. Feed the Description field with a short description of the data.

    6. Go to SubData tab

    7. Feed subdata information depending of your configuration. Refer to Data configurations for more information

    8. Click on Add.

The first sub-data does not require a name, it correspond to the key of the datalib and should be unique to that entry. Inside a testcase, if property PROP1 is defined as getFromTestDataLib on that data, that sub data is retreived as %PROP1%. The other sub data values are retreived as %PROP1.SUBDATA1%.

If you do not select an environment, a system and a country, your data will be available for all environments, systems and countries.

10.2. Data configurations

10.2.1. INTERNAL configuration

This is used to store the test data directly inside Cerberus. This is considered as being static as it will require to define manually each data inside Cerberus. No specific configuration needed, just feed static sub data values in subdata tab.

testdatacreatenewsubdata

NOTE : You can define as many INTERNAL data lib entry as you want be giving them the same name. That way, Cerberus will be able to pick one of them from that list (just like it would for the dynamic type such as SQL, SRVICE or CSV).

10.2.2. SQL configuration

This is used to retrieve the test data in a dynamic way from any database that has JDCB driver available (it still require Glassfish configuration to create the corresponding connection pool). The SQL will be performed during the test execution to get the data in the right environment at the right timing..

testdatacreatenewsubdata

Field

Description

Database

Database where the script attribute should be executed.

Script

SQL Script you want to execute.

All Subdata now need to be defined in Column with the name of the column where the subdata is defined.

testdatacreatenewsubdata

10.2.3. SERVICE configuration

Just like SQL, it will get the data in a dynamic way but from a service call in stead of an SQL. The best option is to define a corresponding service (Service) and point to it (it can then be REST (both GET or POST) or SOAP).

testdatacreatenewsubdata

But you can also directly define a Service call request (Service Path, Method and Envelope) if it is in a SOAP format.

testdatacreatenewsubdata

Field

Description

Database

Database where the Service Path will be requested. (optional)

Service

Name of the service that define the request.

Service Path

Location of the service. Example: http://mydomain/mywebservicelocationmywebservicelocation

Method

Method that is invoked by the SOAP request/call.

Envelope

Envelope that is sent in the SOAP request.

All Subdata now need to be defined in Parsing Answer with the xpath or jsonpath where the subdata is defined.

testdatacreatenewsubdata

testdatacreatenewsubdata

10.2.4. CSV configuration

Just like SQL and SERVICE, it will get the data in a dynamic way but from a csv flat file (that can be static or dynamic). Just define the path to the csv file and separator used.

testdatacreatenewsubdata

Field

Description

Database

Name of the database the define the root path where to get the CSV file. (optional)

CSV URL

CSV URL specifies the URL where the CSV can be reached. Can be a full URL but also a relative URL in case the Database information is provided and configured at environment level.

Separator

Separator used parsing a CSV.

All Subdata now need to be defined in Column Position with an integer that define the number of the column where the subdata is defined.

testdatacreatenewsubdata

10.2.5. Database field configuration

Database can be configured for data library of types : SQL, SERVICE and CSV. It is used in order to make the access to the data linked to the environment so that, a testcase executed in PROD environment will not call the same URL (or access the same JDBC ressource) as in UAT.

testdatacreatenewsubdata

In that example, CRB database has been defined and as a consequence, CSV URL has been modified to be relative.

Databases can be created inside invariant screen. Use PROPERTYDATABASE idname.

testdatacreatenewsubdata

Once the database is created in invariant table and used inside the test data library, you can define the context of the data access calls for each environment (System + Country + Environment) inside the Environment screen for the 3 types of datasource :

  • For SQL Test Data Library -→ JDBC Ressource : Connection pool name to be configured inside Glassfish application server.

  • For SERVICE Test Data Library -→ SOAP Service URL : Left part of the URL that will be used to call the Service URL

  • For CSV Test Data Library -→ CSV Service URL : Left part of the URL that will be used to get the CSV file.

DatalibraryDatabaseConfig

FR Something is incorrect/missing in this section? Feel free to submit modification.


Integration

In this section, you will find information on how to use Cerberus in your continuous integration organization.

FR Something is incorrect/missing in this section? Feel free to submit modification.

11. Environment

11.1. Environment

In this section, you will find information on how to manage environment in Cerberus.

EnvironmentPage

11.2. Create environment

  1. Go to Integration → Environment CreateEnvironment

  2. Click on Create New Environment

    1. Select the System on which the environment will be created.

    2. Select the Country of the environment. See Country section for more information.

    3. Select the Environement. See Environment section for more information.

    4. Continue to describe…​

    5. Click on Save

FR Something is incorrect/missing in this section? Feel free to submit modification.

12. Application configuration

12.1. Application

In this section, you will find information on application configuration in Cerberus.

ApplicationPage

12.2. Application attributes

Field

Description

Application

Cell in column 2, row 3

Description

Cell in column 2, row 3

Sort

Cell in column 2, row 3

Type

The Type of the application define whether the application is a GUI, a service or a batch treatment. More detail in the Application type section.

New Bug URL

This correspond to the URL that points to the page where a new bug can be created on the Bug system of the application. More detail in the New Bug URL section.

12.2.1. Application type

Application type recognizable by Cerberus
  • APK (Android application)

  • BAT (BATCH application)

  • GUI (Web application)

  • IPA (IOS application)

  • SRV (Service)

  • WS (Web Service)

  • NONE (Not defined)

12.2.2. New Bug URL

This correspond to the URL that points to the page where a new bug can be created on the Bug system of the application.

The following variables can be used inside the URL :

%TEST%

Test

%TESTCASE%

Test case reference

%TESTCASEDESC%

Description of the test case

%EXEID%

Execution ID

%EXEDATE%

Start date and time of the execution

%ENV%

Environment

%COUNTRY%

Country

%BUILD%

Build

%REV%

Revision

12.3. Create application

  1. Go to Integration → Application CreateApplication

  2. Click on Create New Application

    1. Feed the Application field with the application name.

    2. Feed the Description field with a short description of this application.

    3. Choose the application type in Type

    4. Select the application deploy type in Deploy Type

    5. Click on Save

FR Something is incorrect/missing in this section? Feel free to submit modification.

13. Application Object

13.1. Application object

In this section, you will find information on application object in Cerberus.

ApplicationPage

13.2. Application object attributes

Field

Description

Application

The application linked to the object

Object

The name of the object

Value

The value of the object

File Name

The preview of the picture of the object

FR Something is incorrect/missing in this section? Feel free to submit modification.

14. Service Library

In this section, you will find information on Service library in Cerberus.

FR Something is incorrect/missing in this section? Feel free to submit modification.

15. SQL Library

In this section, you will find information on SQL library in Cerberus.

FR Something is incorrect/missing in this section? Feel free to submit modification.

16. Deploy type

16.1. Deploy Type

In this section, you will find information on deploy type.

Logo

16.2. Deploy Type attributes

Field

Description

Deploy Type

A name of a deploy type.

Description

A description of the deploy type.

16.3. Create deploy type

  1. Go to Integration → DeployType CreateDeployType

  2. Click on Create New Deployment Type.

    1. Feed the Deploy Type field with a name.

    2. Feed the Description field with a short description of this deploy type.

    3. Click on Save.

FR Something is incorrect/missing in this section? Feel free to submit modification.

17. Batch

17.1. Batch invariant

In this section, you will find information on batch

BatchPage

17.2. Batch invariant attributes

Field

Description

Batch

The name of the batch.

System

The system for which the batch will be available.

Description

A description of the batch.

17.3. Create deploy type

  1. Go to Integration → Batch. CreateBatch

  2. Click on Create New Batch.

    1. Feed the Deploy Type field with a name.

    2. Select the system for which the batch will be available.

    3. Feed the Description field with a short description of this batch.

    4. Click on Save.

FR Something is incorrect/missing in this section? Feel free to submit modification.

18. Project

18.1. Project

In this section, you will find information on project in Cerberus

ProjectPage

18.2. Project attributes

Field

Description

Project

The name of the project.

Code

A code number for the project.

Description

A description of the project.

Active

Define if the project is active or not.

18.3. Create deploy type

  1. Go to Integration → Project. CreateBatch

  2. Click on Create new Project.

    1. Feed the Project field with a name.

    2. Feed the Code field of the project.

    3. Feed the Description field with a short description of this project.

    4. Click on Save.

FR Something is incorrect/missing in this section? Feel free to submit modification.

19. Build content

19.1. Build content

In this section, you will find information on build content in Cerberus

BuildContentPage

19.2. Build content attributes

Field

Description

To build

To Build.

19.3. Create build content

19.3.1. Manually

  1. Go to Integration → Build Content. CreateBatch

  2. Click on Create new build content.

    1. Select the Build.

    2. Continue to describe.

    3. Click on Save.

19.3.2. Automatically

To describe.

FR Something is incorrect/missing in this section? Feel free to submit modification.

20. Build / Revision

20.1. Build Revision invariant

In this section, you will find information on build revision invariants

BuildRevisionPage

20.2. Build Revision invariant attributes

Field

Description

System

The system for which the batch will be available.

Level

to describe.

Sequence

to describe.

Version Name

to describe.

20.3. Create build/revision invariant

  1. Go to Integration → Build Rev Definition. CreateBatch

  2. Click on Create new build revision definition.

    1. Select the system for which the build/revision will be available.

    2. Select the Level. 1 for Build and 2 for Revision.

    3. Feed the Sequence field with a number to sort the build/revision.

    4. Feed the Version Name field that will be displayed.

    5. Click on Save.

FR Something is incorrect/missing in this section? Feel free to submit modification.


Administration

In this section, you will find information on all page and services enabled for administrators.

FR Something is incorrect/missing in this section? Feel free to submit modification.

21. User management

21.1. User creation

  1. Go to Administration → User Management.

  2. Click on Create User.

    1. Feed the Login field.

    2. Feed the Name field.

    3. Select the Team (optional).

    4. Select the Default Sytem field.

    5. Set the Request to 'Y' for a new user. User will have to modify his password at the first connection.

    6. Feed the Email.

    7. Affect user rights in groups tab.

    8. Click on Save.

21.2. User rights

Select the groups to affect the rights wanted.

usermanagementgroup

21.3. Access by system

FR Something is incorrect/missing in this section? Feel free to submit modification.

22. Log viewer

Most of the change triggered in Cerberus are recorded in a table.

logviewer

Warning
To guaranty performance of Cerbeurs over the time, please refer to Clean Database section to get information on database maintenance operation.

FR Something is incorrect/missing in this section? Feel free to submit modification.

23. Database maintenance

Note
Every new release of Cerberus come with embeded scripts to upgrade the database in order to guaranty consistency between the application and its database.

After updating your cerberus version, as described in the Upgrade Cerberus Version section, you will be notified logging in Cerberus as an administrator.

databasemaintenance

Then, you are redirected to the Cerberus Database Maintenance page that allow to apply the scripts one by one.

databasemaintenance

When the database is up-to-date, you will find this information.

databasemaintenance

Warning
Application and Database Must be in the same version.

FR Something is incorrect/missing in this section? Feel free to submit modification.

24. Parameters

24.1. Parameter

In this section, you will find information about Cerberus parameters.

Warning
The tunning of the parameters is necessary to unlock all the features, as described in the Cerberus configuration section.

Logo

24.2. Parameter attributes

Field

Description

Parameter

The parameter recognized by Cerberus.

Value

The default value used in case the system value is empty.

System Value

The specific value for the system.

Description

A description on the parameter.

FR Something is incorrect/missing in this section? Feel free to submit modification.

25. Invariants

25.1. Invariant

In this section, you will find information on invariant private and public.

Note
Private invariants are not editable because used by the Cerberus engine or the user interface.

Logo

25.2. Invariant attributes

Field

Description

IdName

The name of the invariant.

Value

The value set for the invariant.

Sort

An integer used to sort invariants.

Description

The description of the invariant.

Very Short Desc

A very short desc that can be displayed in the invariant.

Group1

A first level of aggregation to group invariant.

Group2

A second level of aggregation to group invariant.

Group3

A third level of aggregation to group invariant.

25.3. Create public invariant

  1. Go to Administration → Invariant. CreateInvariant

  2. Click on Create Invariant.

    1. Select the invariant type in IdName field.

    2. Feed the Value field with the value of the invariant.

    3. Feed the Sort field with an integer which will define the order the invariant will be sorted by Cerberus.

    4. Feed the Description field with a description of this invariant.

    5. Feed the Very Short Desc field with a short description of this invariant.

    6. Feed the Group1 (Optional) field with a name to aggregate invariant.

    7. Feed the Group2 (Optional) field with a name to aggregate invariant.

    8. Feed the Group3 (Optional) field with a name to aggregate invariant.

    9. Click on Save.

25.4. Invariant List

25.4.1. Country

25.4.2. Environment

25.4.3. System

FR Something is incorrect/missing in this section? Feel free to submit modification.

26. Cerberus Monitoring

In this section, you will find information on cerberus monitoring page.

cerberusmonitoring1

cerberusmonitoring2

FR Something is incorrect/missing in this section? Feel free to submit modification.


Cerberus Public API

When integrating Cerberus with any external tool, public API must be used. All public API are version managed in order to allow secure and stable integration. Each time the signature of the API is modified or behaviour has changed, it is implemented on a new version keeping existing version only subject to bugfix changes.

Old version of Public API can disappear (after a deprecated period) from one version to another. In order to perform the impact analysis of the systems that are calling your Cerberus installation, you can use the parameter cerberus_log_publiccalls. Setting the parameter to Y will log every public API calls performed, reporting any deprecated calls that needs to be migrated to newer version of the same API.

Every API has it’s documentation embeded that can be displayed when calling the API.

FR Something is incorrect/missing in this section? Feel free to submit modification.

27. Test Execution API

This is the APi that can be used on the test perimeter (getting testcase information, and manage executions) :

API URI

Description

Version List

/RunTestCase

Trigger a single testcase excution

/RunTestCase

/AddToExecutionQueue

Allow to insert testcase execution into Cerberus Queue for execution

/AddToExecutionQueue /AddToExecutionQueueV001 /AddToExecutionQueueV002

/GetTagExecutions

TBD.

/GetTagExecutions

/GetTestCases

Provide the list of test cases by application.

/GetTestCasesV000

/GetNumberOfExecutions

Return the number of execution performed on WORKING test cases that match the following criterias. To be used for monitoring purpose.

/GetNumberOfExecutions

/ResultCI

Used to provide various execution counters as well as a global OK or KO status based on the number and status of the execution done on a specific tag.

/ResultCI /ResultCIV001 /ResultCIV002 /ResultCIV003

FR Something is incorrect/missing in this section? Feel free to submit modification.

28. Integration API

This is the APi that can be used on the integration perimeter (change environment status) :

API URI

Description

Version List

/DisableEnvironment

Used to inform Cerberus that a system is disabled.

/DisableEnvironmentV000

/NewBuildRevision

Used to inform Cerberus that a new Build and Revision has been deployed on a system.

/NewBuildRevisionV000

/NewEnvironmentEvent

Used to inform Cerberus about an event that occured on a given environment

/NewEnvironmentEventV000

/NewRelease

Used to create or update a release entry of an application in a 'NONE' build and 'NONE' revision.

/NewRelease

FR Something is incorrect/missing in this section? Feel free to submit modification.


Installation

This section describes how to install Cerberus and its associated external tools.

FR Something is incorrect/missing in this section? Feel free to submit modification.

29. Cerberus installation

29.1. Technical architecture

Logo

FR Something is incorrect/missing in this section? Feel free to submit modification.

29.2. Installation guide

29.3. Manual installation

  1. For Linux :

    1. Requirements :

      1. MySQL/MariaDB server and client (If you want to use MySQL, you must get the 5.6.x version)

      2. Java 1.8 (package name on debian/ubuntu : openjdk-8-java)

      3. glassfish server (4.1.1) : you can download it on their website (if you are on CLI, just use wget on the download url)

        1. You’ll have to add MySQL JDBC connector drivers that you can get there : http://dev.mysql.com/downloads/connector/j/

        2. You must add AS_JAVA="path/to/java/folder/" in glassfish/config/asenv.conf

    2. Cerberus installation :

      1. Download the last release of Cerberus Testing on the sourceforge : https://sourceforge.net/projects/cerberus-source/files/

      2. Setup your MySQL/MariaDB database :

        1. Connect on your MySQL/MariaDB server (Default : mysql -u root -proot)

        2. Type these commands :

          1. CREATE USER 'cerberus'@'%' IDENTIFIED BY 'toto';

          2. GRANT USAGE ON * . * TO 'cerberus'@'%' IDENTIFIED BY 'toto';

          3. GRANT USAGE ON * . * TO 'cerberus'@'localhost' IDENTIFIED BY 'toto';

          4. CREATE DATABASE IF NOT EXISTS cerberus ;

          5. GRANT ALL PRIVILEGES ON cerberus . * TO 'cerberus'@'%';

      3. Edit the file (CerberusFolder/bin/)00Config.sh with your connection parameters and set the GLASSFISHPATH to the path to the bin folder of glassfish

      4. If you are using MariaDB, you’ll have to edit (CerberusFolder/bin/)01AppServerConfig.sh, comment the line under MySQL and uncomment the line under MariaDB.

      5. Run (CerberusFolder/bin/)01AppServerConfig.sh it will set the default configs of Cerberus Testing like the connection to the Cerberus database

      6. Run (CerberusFolder/bin/)02DeployApp.sh it will check that there’s no deployed Cerberus App and deploy the Cerberus App in the contextroot specified (Default : /Cerberus)

      7. You’re done ! You should be able to access to your Cerberus App from your website (example : http://localhost:8080/Cerberus)

29.4. Docker

  1. For Windows :

    1. Install Git for Windows -→ https://git-for-windows.github.io/

    2. Install Docker for Windows -→ https://docs.docker.com/docker-for-windows/

    3. Install Docker Toolbox for Windows -→ https://docs.docker.com/toolbox/toolbox_install_windows/

    4. Clone Cerberus-source to the desired location :

      1. Go to the desired location folder

      2. Right click into the folder, and click Git Bash Here gitBashHere

      3. Type the following command into Git Cmd Prompt : "git clone https://github.com/cerberustesting/cerberus-source.git" gitBashPrompt

      4. Wait for cerberus-source to clone…​

    5. Run Docker. /!\ You may have to go into Docker settings to "share the drive" on which you put cerberus

    6. Run Windows Command Prompt as administrator, navigate to your desired location, then subfolders compositions/cerberus-glassfish-mysql winCmdPrompt

    7. Execute the following command :

      1. either "docker-compose up" to run the docker-compose normally

      2. or "docker-compose up -d" to run the docker-compose asynchronously

      3. or "docker-compose up -d --remove-orphans" to run the docker-compose and remove already existing images

      4. or "docker-compose scale selenium-node-firefox=3 selenium-node-chrome=3" to add more nodes to your Selenium Grid

    8. Wait for the images to startup

    9. Open your favorite browser and go to <docker_host>:18080/Cerberus, where <docker_host> is your Docker host

  1. For Mac :

  2. For Linux :

FR Something is incorrect/missing in this section? Feel free to submit modification.

29.5. Cerberus database init

Database init instruction

FR Something is incorrect/missing in this section? Feel free to submit modification.

29.6. Cerberus configuration

Installation introduction

FR Something is incorrect/missing in this section? Feel free to submit modification.

30. External tools

For each application type there is a specific engine to run tests under it. For instance, Web applications will be handled by the Selenium Web browser automation tool.

The main goal of Cerberus is to gather this tool ecosystem to provide a common way to describe and run tests, whatever the kind of application type.

Hereafter the list of compatible application types and their associated external tool:

Table 1. Application type and associated external tools
Application types Associated external tool

Web

Selenium

Mobile (Android, Iphone)

Appium

Heavy

Sikuli

Web services

Cerberus internal implementation

The following sections will cover installation and configuration procedures for each associated external tool, and interface description with cloud-based cross-browser testing tools.

30.1. Selenium

Installation : . Download the Selenium Standalone : http://selenium-release.storage.googleapis.com/2.53/selenium-server-standalone-2.53.1.jar (I recommand this version for a stable usage with Cerberus) . Download the JSON configuration file for the node that will manage your browsers : https://github.com/SeleniumHQ/selenium/blob/selenium-2.53.0/java/server/src/org/openqa/grid/common/defaults/DefaultNode.json . Download the package firefox-esr . To launch Selenium type these commands : .. java -jar (path/to/)selenium-server-standalone-2.53.1.jar -role hub .. java -jar (path/to/)selenium-server-standalone-2.53.1.jar -role node -nodeConfig (path/to/)DefaultNode.json

30.2. Appium

30.2.1. Table of Contents

Appium is an open source test automation framework for use with native, hybrid and mobile Web applications. It drives iOS, Android, and Windows applications using the WebDriver protocol.

This procedure covers installation and configuration of Appium v.1.6.2+.

30.2.2. Appium server installation

Android
Classic installation

Install Android SDK v.1.7+. See official documentation here and here for more details.

Docker install

+

# Note: It requires docker-compose 1.6.0+
#
# Usage: docker-compose up -d
version: '2'

services:
  # Selenium hub
  selenium_hub:
    image: selenium/hub:3.7.1
    ports:
      - 4444:4444

  # Appium Docker Android
  appium_android_device:
    image: appium/appium
    depends_on:
      - selenium_hub
    privileged: true
    volumes:
#      - /dev/bus/usb:/dev/bus/usb
      - ~/.android:/root/.android
      - ./localapk/:/apk/  # used to push apk to install
    ports:
      - 4723:4723
    environment:
      - CONNECT_TO_GRID=True
      - SELENIUM_HOST=selenium_hub
      # Enable it for msite testing
      #- BROWSER_NAME=chrom

+

IOS
Installation
  1. Install Xcode 8.1+

  2. Install the Apple Developer Tools via this external documentation

  3. Follow the complete procedure from this external documentation and apply the following commands and fixes:

    1. Carthage cannot be installed via npm but brew. Thus, install Carthage by executing:

      brew install carthage
    2. Execute the following additional commands:

      npm install -g ios-deploy --unsafe-perm=true
      npm install -g deviceconsole
      brew uninstall ideviceinstaller
      brew uninstall libimobiledevice
      brew install --HEAD libimobiledevice
      brew unlink libimobiledevice && brew link libimobiledevice
      brew install ideviceinstaller
      brew unlink ideviceinstaller && brew link ideviceinstaller
      Caution
      Note about the current Appium version from npm

      At the time of writing, the installed Appium version (1.6.2) from the above procedure doesn’t work properly with Cerberus. Only the 1.6.3-SNAPSHOT version was able to correctly start application. The following commands will help you to install the latest version of Appium (extracted from the official documentation):

      git clone https://github.com/appium/appium.git
      cd appium
      npm install -g mocha
      npm install -g gulp
      npm install -g gulp-cli
      npm install
      gulp transpile
Application sign configuration

The latest version of Appium uses the appium-xcuitest-driver which depend on the Web Driver Agent that need to be deployed on the tested device. Thus, the Appium server’s host needs to be configured to be allowed to deploy application on tested device.

Appium server’s host must:

  1. Have its associated Apple account registered to a Apple Team Development

  2. Have downloaded the iOS Development signing identity associated to the registered Apple Team Development

  3. Have downloaded a provisioning profile associated to the registered Apple Team Development that allow:

    • at least the Web Driver Agent application (identified by the com.facebook.WebDriverAgentLib bundle identifier)

    • the tested device to install the Web Driver Agent application

Once all of these previous prerequisities are met, then create a appium.xcconfig file and fill it with the following lines (where <Team ID> is your Development Team identifier):

DEVELOPMENT_TEAM = <Team ID>
CODE_SIGN_IDENTITY = iPhone Developer

This file will be used further by execution. Look at the Run section for more details.

Run

Run Appium server can differ following the way you installed it.

Installation from npm

If Appium has been installed from npm, then simply starts Appium server by executing:

appium
Installation from Appium sources

If Appium has been installed from its sources, we encourage to create an executable file to start and configure Appium server more easily. Then:

  1. Create a appium file and fill it with the following lines

    #!/bin/bash
    cd /path/to/appium/sources && node . "$@"
  2. Make this file executable

    chmod +x /path/to/the/appium/file
  3. Locate the root directory of this executable file and add it to your PATH variable by adding this line to your ~/.bash_profile (or any terminal session start) file:

    export PATH=/path/to/the/appium/file/root/directory:$PATH
  4. Restart your terminal session

  5. Start Appium server by executing

    appium
Note for IOS application testing

As viewed from previous section, Appium has to deal with Apple application sign. This could be done by sending the xcodeConfigFile capability to the Appium server.

But you may want to use the same value for any request, because the Apple Development Team is often unique within an organization. It could be the same for the realDeviceLogger capability because Appium can always using deviceconsole as real device logger.

This can be achieved by starting the Appium server with the --default-capabilities option and giving it the list of default capabilities. For maintenance reason, we recommend to delegate definition of the list of capabilities into a JSON file as the following:

  1. Create a file named common.caps (for instance)

  2. Fill it with your default capabilities

    {
        "xcodeConfigFile": "/path/to/appium.xcconfig",
    	"realDeviceLogger": "/usr/local/lib/node_modules/deviceconsole/deviceconsole"
    }
  3. Then start Appium server by executing

    appium --default-capabilities /path/to/common.caps

30.2.3. Client use

The following section will show different use cases to connect to the Appium server.

Execute mobile test case with Cerberus

Once you wrote your test case, Cerberus can execute it to the desired mobile by configuring the associated Robot

Inside Cerberus, open the Robot page (Run → Robot), and, depending on the application type, fill the Robot with the following configuration:

Android

Robot definition

Robot capabilities

Note
Values are given as example. feel free to modify them according to your needs.
IOS

Robot definition

Robot capabilities

Note

Values are given as example. feel free to modify them according to your needs.

The two last capabilities xcodeConfigFile and realDeviceLogger are not necessary if given at Appium startup. See the previous section for more details.

Inspection

Inspection is used to locate application’s element by identifier, XPath, etc. Theses values can so be use inside Cebrerus to describe automated test cases.

Inspection can be done by using the Appium client interface.

Installation

Install latest client from the official page.

Configuration

Appium client interface has to be configured to be only used for inspection. to have application’s element XPath for instance):

From the General settings menu:

  • Fill the Server address input field with the Appium server address

  • Fill the Port input field with the Appium server port

  • Unable the Use Remote Server option

General settings

For Android case, open the Android settings menu and:

  • Fill the App Path with the absolute path (or URL) of the application APK

  • Fill the Platform Name by Android

  • Fill the Automation Name by Appium

  • Fill the Platform Version by your device platform version

  • Fill the Device Name by your device name

Android settings

For IOS case, open the IOS settings menu and:

  • Fill the App Path with the absolute path (or URL) of the application IPA

  • Fill the Force device input filed by your device name

  • Fill the Platform version input field by your platform version. It must be lower or equal than your Xcode SDK supported version (for instance, 10.1 by using Xcode 8).

  • Fill the UDID input field by your device’s UDID number

IOS settings

Run

Once Appium client is correctly configured, simply click on the Android or IOS radio button following the application definition and then click on the Inspector button.

Appium Inspector

Title Link

List of Appium server capabilities

https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md

30.3. Sikuli

30.3.1. Sikuli installation

Sikuli is an open source project that automates anything you see on the screen of your desktop computer running Windows, Mac or some Linux/Unix. It uses image recognition powered by OpenCV to identify and control GUI components. This is handy in cases when there is no easy access to a GUI’s internals or the source code of the application or web page you want to act on..

This procedure covers installation and configuration of SikuliX 1.1.1.

Note
Sikuli have to be installed only on the server where the test will run (on the robot server)!

Cerberus will interact with Sikuli that will control the system on which the test will be executed. Please notice that Sikuli have not to be installed on the Cereberus Server, but only on robot server.

Prerequisites

SikuliX can be used on systems with :

  • Windows XP and later including Windows 8 and 10 (32-Bit or 64-Bit)

  • Mac OSX 10.6 and later including 10.10 and 10.11 (64-Bit only)

  • Linux/Unix systems depending on the availability of the prerequisites (32-Bit or 64-Bit)

In any case you must have a valid Java installation of at least Java 7 (JRE (runtime only) or JDK (runtime + development kit)). It is highly recommended, to always have the latest stable Oracle/Sun Java version on your system (currently Java 8, does not work with Java 9). Equivalent versions of OpenJDK should work as well and are recommended on Linux systems..

On 64-Bit capable systems a Java 64-Bit version is strongly recommended. SikuliX will detect Java’s bitness at runtime and select the fitting native library set automatically. So you might freely switch between different Java versions with the same SikuliX on one machine.

Installation

After having downloaded sikulixsetup.jar, you should consider the following recommendations, before doing anything:

  • select a prominent folder that is intended, to permanently contain all artifacts making up SikuliX

  • the path to this folder and its name should not contain any blanks or special characters (example: C:\SikuliX)

  • the folder should not be a program or application folder with special system access restrictions (must be freely user writeable) into this folder copy/move sikulixsetup…​.jar

    1. launch sikulixsetup.jar

    2. Choose either the option 1 (Full package with IDE) or the option 2.

    3. After having made your selections, click the button [Setup Now].

If everything works well, after successful internal download of the needed packages, you will get some intermediate yellow badges, hopefully positive popups from the tests and a final success message.

 — You might find the following files in your SikuliX setup folder:

SikuliX-1.1.0-SetupLog.txt --- contains debug information of setup workflow
sikulixsetup-1.1.0.jar (might have a lengthy version suffix)
runsikulix(.cmd) --- command script for commandline usages of SikuliX
sikulix.jar --- (non-Mac systems only) SikuliX IDE and scripting support (option 1)
SikuliX.app --- (Mac systems) Mac application, should be moved to /Applications (option 1)
sikulixapi.jar --- Java programming support (option2)
Note
See official documentation here for more details.
Connect Cerberus to Sikuli

You’ll need to download the project cerberus-extension-sikuli to interface Cerberus with your sikuli server.

  1. Download the cerberus-extension-sikuli.

  2. Download Selenium Standalone Server.

  3. Unzip cerberus-extension-sikuli and put the cerberus-extension-sikuli-x.x.x-full.jar it in the same folder than the selenium server.

  4. Create a bat/sh file with the following command lines:

    • For a FAT Client

No needs of selenium server, you can use this cerberus extention in a standalone mode (since cerberus-extension-sikuli-1.1.0-full).

start /b java -jar cerberus-extension-sikuli-x.x.x-full.jar
  • For a WebApplication

Injecting the main servlet of this cerberus extension starting the selenium hub.

start /b java -jar selenium-server-standalone-x.xx.x.jar -role hub -port 5555
start /b java -cp selenium-server-standalone-x.xx.x.jar;cerberus-extension-sikuli-x.x.x.jar org.openqa.grid.selenium.GridLauncher -role node -hub http://localhost:5555/grid/register -port 5556 -servlets org.sikuliserver.ExecuteSikuliAction

30.3.2. OCR setting

OCR (optical character recognition) can be enabled with sikuli, please follow the procedure below to set sikuli.

  • When installing Sikulie, select option 3 :

SikuliOptions

  • When installation is done, run sikuli IDE. Click on File > Preferences > More options Then select toolboxes Allow searching for text / Allow OCR :

OCRsettings

Cerberus should now be able to find text.

31. Cloud

For Web and Mobile testing, Cerberus can be interfaced with cloud-based testing tool to avoid to manage complexity of robot farm management. Multiple combination of operating system, browser and version are available.

31.1. Browserstack

31.1.1. Introduction

You can use Browserstack as robot infrastrucure. In the Cerberus demo integration chain, functionnal tests are executed through BrowserStack, that allow to validate the regression for each commit.

Browserstack

To run your tests on BrowserStack Automate, you must:

31.1.2. 1) Upload the app:

According to browserstack documentation the app can be uploaded through it’s REST API:

curl -u "USERNAME:ACCESS_KEY" -X POST https://api.browserstack.com/app-automate/upload -F "file=@/path/to/app/file/Application-debug.apk"

the response will give the app hash id: bs://fecad32e3d0900192ccc27747d037ead7427b1ba

31.1.3. 2) Create/Update the Robot

To execute the tests with browserstack the usage of a robot is required to pass certain capabilities to appium

To do it navigate into Robot page and fill the necessary fields:

  • Robot - robot name

  • Hostname - hub-cloud.browserstack.com

  • Host Username - browserstack username

  • Host Password - browserstack access key

  • Port - 80

  • Platform - iOS / Android

  • Browser - iphone and android

configuringrobot

The minimum capabilities that should be set are:

app: bs://<hashed_appid>

device: deviceName to use

realMobile: true

os_version: os to test

settingcaps

31.1.4. 3) Update the application

The environment of the application to test with Cerberus must have set in the field Host login URL the bs://<hashed_appid>

settingapp

31.1.5. 4) Trigger the test

Go to Run test page and select the test you want to execute with the previously created robot and trigger the execution.

Maintenance

Maintenance introduction

FR Something is incorrect/missing in this section? Feel free to submit modification.

32. Monitor Cerberus performance

Maintenance monitoring Cerberus

FR Something is incorrect/missing in this section? Feel free to submit modification.

33. Clean Database

Maintenance Purge Database

FR Something is incorrect/missing in this section? Feel free to submit modification.

34. Upgrade Cerberus Version

Maintenance Upgrade Cerberus Version

FR Something is incorrect/missing in this section? Feel free to submit modification.

35. ChangeLog

35.1. 1.1.13

Bug fixes

  • [GUI] Start and End date fixed on Execution reporting by tag screen

  • [ENGINE] Condition that fail to execute (ex numeric control using string) now also fail the corresponding control/action/step/execution

  • [GUI] @ character now allowed in robot definition.

  • [GUI] On homepage, select box now works on selecting the favorites tags.

  • [ENGINE] Testdatalib for SQL and CSV now support that 2 different SUBDATA gets the same column (SQL) or columnposition (CSV). That also fix the crash when the subdata key position was used on a different subdata resulting the key beeing null and crash the action result message on calculateProperty calculation.

  • [GUI] Error message was sometime appearing when dispaying testcase list in campaign page.

  • [GUI] When duplicating a testcase in WORKING status, we can now change the fields value.

  • [ENGINE] Fixed a bug that was reporting an 'Unexpected error' when queuing any execution that has exotic characters in 'test' or 'testcase'.

  • [GUI] javascript error when trying to save a testcase with no steps.

Improvements / New features

  • [GUI] Allow to link a list of label to a campaign (campaign will then include all testcases that refers to those labels + batteries)

  • [GUI] Allow to filter by label inside the run page

  • [GUI] Syntax coloring has been added for SQL, XML, Java, html

  • [ENGINE] Added proxy support when Cerberus access external ressources. Parameters starting by cerberus_proxy…​_ needs to be defined.

  • [ENGINE] switchToWindow action can now also use the url of the window to switch

  • [ENGINE] SOAP with attachment is now supported again. attachement url can be specified in Service Library screen (under Request tab). Attachement URL are decoded.

  • [GUI] massUpdate on testcase can now update status and function.

  • [GUI] Added system column to testcaselist page. That will help to administer label that are system dependant.

  • [GUI] GUI Notifications from master pages now automatically disappear after few second.

  • [GUI] On reportExecutionByTag many improvements. Filter of slipt selection without reload the page.

  • [GUI] On homepage, Performance improvement on loading the tag status.

  • [ENGINE] You can now force the screensize to testcase definition (like userAgent).

  • [ENGINE] UserAgent, on execution now retreived systematicly from real value of the browser.

  • [GUI] added autocomplete from public invariant on function, useragent and screensize on all corresponding screens.

  • [GUI] All modals are now responsive

  • [GUI] Copy paste option for picture on Application Object page. Currently doesn’t work for chrome browser

  • [GUI] Added 'Label' Group in order to be able to remove the right at user level to create, update and delete Labels. Label group list of users is initialised with Test group.

  • [GUI] Global search field in User screen now also filter the group name in order to filter all users that belong to Label group by typing Label on it.

  • [GUI] Added TestStepLibrary Group in order to be able to manage StepLibrary at user level. TestStepLibrary group list of users is initialised with Test group.

  • [GUI] New responsive Login page

  • [GUI] Performance improvements on RunTests : load filter data only when displayed

  • [GUI] New menu that is now on a vertical navigation bar (that can be expand and collapse)

  • [GUI] On TestCaseExecution List page: Optimized distinct column on exe status and Start and End now displayed in date format.

  • [GUI] On TestCase page: when creating a testcase, country selection can be configured with parameter : cerberus_testcase_defaultselectedcountry. Parameter can be ALL in order to select all, empty in order to select none or a coma separated list of countries in order to select some.

  • [GUI] On TestCase page: Invert button in order to be able to invert country selection in 1 clic

  • [GUI] On TestCaseScript page: Adding a property on a testcase that has no country selected now generates an error message.

  • [ENGINE] Queue execution are kept and linked to execution. A new DONE state on queue has been created for that purpose.

  • [ENGINE] New action and control implemented for FAT application testing. Screenshot are now available.

Warning to be considered before applying the version (deprecated features)

  • Removed testdata table and associated getFromTestData DEPRECATED property. BEFORE applying the associated database change, you can use script TestDataToTestDataLib.sql inside tools/SQLscripts/ to backport the old data (testdata) to new data structure (testdatalib).

  • Warning for systems with hugue number of executions : execution time of SQL 1170 & SQL 1172 (column creation on testcaseexecution table)

  • Do not forget to add SQL to purge testcaseexecutionqueue table based on DateCreated column. (queue execution are no longuer automatically removed)

35.2. 1.1.14

Bug fixes

  • [GUI] password fix to allow more than 10 caracters.

  • [GUI] small disply issues in campaign and battery screen.

Improvements / New features

  • [ENGINE] new parameter : cerberus_queueexecution_timeout in order to set the timeout when execution is triggered from the queue.

  • [GUI] Queue can now be administered from the GUI. Every queue execution can be CANCELLED or modified and resubmitted to WAITING. State workflow documented in doc folder.

  • [ENGINE] Retry on an execution now generate new execution on the queue. That allow the feature to work on sync and async mode.

  • [GUI] Added 2 buttons on TestCaseExecution page in order to view the prameters of the corresponding Queue and create a new queue from the existing one.

  • [ENGINE] New queueing system that allow 3 level of constrains: 1) global Cerberus level -→ parameter : cerberus_queueexecution_global_threadpoolsize 2) Application environment level that can be configured in application modal at environment level (poolsize) 3) Robot IP level that can be configured in invariant table ROBOTHOST invariant (gp1 needs to be feeded with integer value) Default value taken from parameter : cerberus_queueexecution_defaultrobothost_threadpoolsize

  • [ENGINE] Execution will be taken from the Queue (QUEUED state) and triggered ASAP until any of the constrain are reached. Queue screen allow to control the result and followup the executions. 1st tab display the list of queue execution, 2nd tab the list of constrain and level of saturation of every constrain, the 3rd tab display the timing of the last job that analyzed the queue and allow to force a new trigger of that job (should be automatic at the end of every queue successfully submitted).

  • [GUI] Test Cases can now be renamed. When renamed, it loose the execution history.

  • [GUI] in ReportByTag screen, we can now edit the testcase header directly. It allows to modify comment and bugid directly.

  • [GUI] Control are now not Fatal by default.

  • [GUI] columns in all screens can now be resized.

  • [GUI] significant improvements in filtering management of lists.

  • [ENGINE] Improvements on KEYPRESS action.

  • [ENGINE] Variables can now be used inside column definition of Data Lib.

  • [ENGINE] Improvements on Sikuli connection (more actions and controls are supported as well as automatic screenshot).

  • [GUI] Online documentation are now displayed in popup and not inside a new window.

  • [GUI] We can now add multiple steps from the same modal.

  • [GUI] We can now rename a testcase (Warning link with past executions will be lost).

Warning to be considered before applying the version (deprecated features)

  • [API] /ExecuteNextInQueue is no longuer considered as public API. Triggering execution from the queue has now become an automatic process. Please get in touch with us via github if you started to use it in external scripts.

35.3. 2.0

Improvements / New features

  • [GUI] We can now edit or add service directly from TestCaseScript page.

  • [GUI] Autocompletion is now available for callservice action field.

  • [GUI] Cerberus is now available in french language.

  • [GUI] New Cerberus logo.

  • [GUI] On the homepage, we can now dynamically filter the tag from a search text.

  • [GUI] On testcase list page, mass action now allow to change application.

  • [GUI] Testcase header allow to modify testcase on an application outside the current system.

  • [Engine] Tag value can now be defined up to 255 character (used to be 50 characters max). Try to keep it the smallest as possible (for performance, storage and UI reasons).

  • [Engine] Automatic notification at the beginning or the end of a tag execution can be configured at campaign level. Body, From and Subject email can be configured with parameters that start by cerberus_notification_tagexecution

Warning to be considered before applying the version (deprecated features)

  • SQL 1226 is expected to be very long on systems that have massive number of executions.

35.4. 3.0

Bug fixes

  • Some Step was badly referenced in case the corresponding testcase was renamed. Now when testcase is renamed, the usesteps are also renamed.

Improvements / New features

  • [GUI] Added parameter cerberus_loginpage_welcomemessagehtml in order to be able to define a message in login page. This parameter replace parameter cerberus_support_email that should now contain only the support email.

  • [GUI] Property Quick delete picto in testcase script page.

  • [GUI] Inline Add/Modify of TestDataLib from testcase script page.

  • [GUI] Display property detail in modal from testcase script page without changing tab.

  • [GUI] Display the Queue State when execution is still in queue in report by tag screen.

  • [GUI] Allow to resubmit execution per status in report by tag screen. That allow quick restart of executions in 2 clicks.

  • [GUI] 1st step documentation.

  • [ENGINE] REST Service now allow DELETE, PUT and PATCH http method.

  • [GUI] Various responsive improvements on very small screens.

  • [GUI] Report by Tag page now handle pagination (in order to optimise page loading on system where more than 500 testcase are triggered on a campaign).

  • [GUI] Allow to force an execution still in queue in ERROR State. This is to make that execution still visible in reportingByTag page allowing later submition

  • [GUI] renamed parameters to make them more consistent.

  • [GUI] new variable in campaign mail notification body in order to enrich email with campaign global result per status and detail list of testcases in non OK status.

  • [ENGINE] Campaign testcase list definition can now be defined with dynamic criteria : SYSTEM, APPLICATION, STATUS and PRIORITY.

  • [GUI] Protecting password display from the GUI. Robot password and parameter password are no longuer displayed in GUI.

  • [GUI] When resubmit an execution to the queue, the popup message allow now to get to the execution page to see the result directly. Execution page will report the nb of execution in the queue before the current entry (in order to feedback the user how long to wait).

  • [GUI] Battery has been moved to label that have now 3 types available : STICKER (same as before), BATTERY (correspond to former battery) and REQUIREMENT (will be used in order to sort and identify requirements).

  • [ENGINE] Control 'verifyRegexInElement' is now supported for application type SRV.

  • [ENGINE] Variable %System.TESTCASEDESCRIPTION% is now available.

  • [ENGINE] For FAT applications, application is automatically closed at the end of the execution.

  • [GUI] For Execution and TestCase screen, contextual buttons has been harmonized.

  • [GUI] Improved filter performances by removing distinct feature on id, timestamps and descriptions.

Warning to be considered before applying the version (deprecated features)

  • A Bug has been fixed on useStep that are not correctly referenced. SQL #1247 will clean badly reference Steps. You can get that list before beeing automaticly cleaned with SQL : SELECT a.* from testcasestep a LEFT OUTER JOIN testcasestep b on a.usesteptest=b.test and a.usesteptestcase=b.testcase and a.usestepstep=b.step WHERE b.test is null and a.usesteptest is not null and a.usesteptest != ''

  • Upgrade Java to v1.8 -→ Please check your Cerberus infra has JAVA 8.

  • Upgrade Appium java-client to 5.0.4 -→ Please check that your Robot infra support the change before moving to that new client version.

  • Upgrade Appium java-client to 5.0.4 -→ Please notice that custom swipe is now using relative coordinate instead of absolute one. You may have to change your test implementation.

  • Upgrade Selenium to 3.6.0 -→ Please check that your Robot infra support the change before moving to that new client version.

  • Battery has been moved to label (table not yet removed but will be soon).

35.5. 3.1

Bug fixes

  • Fixed issue in ReRun Button (from TestCase and Execution detail page) where environment was not selected.

  • Fixed various issues on Datalib modal when opened from TestCase page.

  • Fixed syntax %property.PROP.SUBDATA% that was not decoded.

Improvements / New features

  • [GUI] Various improvements on file attachement on Manual Executions.

  • [GUI] Display Changelog of latest version on homepage.

  • [ENGINE] Robot can now have https:// protocol specified inside the host name.

35.6. 3.2

Bug fixes

  • [GUI] Fixed issue when modification of queue entry in QUEUED state was no longer possible.

  • [GUI] Fixed the nb of execution 'still to go' counter on execution detail page when execution is still in the queue.

  • [ENGINE] Fixed Issue when user that have login larger than 10 digits cannot trigger any execution.

Improvements / New features

  • [ENGINE] Datalib length can now be decoded in order to allow dynamic size of datalib.

  • [GUI] keypress action parameters are now consistent between every application type. value2 always take key to enter whether application use Selenium, Appium or Sikuli

  • [GUI] Properties are now sorted by alphabetical order in test case execution page.

Warning to be considered before applying the version (deprecated features)

  • SQL #1289, #1290 and #1291 could be quite long on systems with a lot of executions.

  • The following tables have been removed : abonnement, qualitynonconformities, qualitynonconformitiesimpact, testbatterycontent, campaigncontent, testbattery.

  • Removed deprecated public servlet : GetCampaignExecutionsCommand.

35.7. 3.3

Bug fixes

  • Allow jsonpath syntax $[0].

  • Fixed a bug when using drag and drop of control from one action to another.

  • Allow to set parameter 'cerberus_loopstep_max' at system level.

  • No longuer cascade delete a datalib when associated service is deleted. #1635

  • No longuer cascade delete a service when associated application is deleted.

  • Fixed java.lang.ArrayIndexOutOfBoundsException Error when using a condition with variable on testcase header. #1650

Improvements / New features

  • List of Robot can now be specified inside a campaign (instead of browser). That allow to run a campaign easily on multiple configuration (Browsers, BrowserVersions, Screensizes, Devices, …​).

  • Robot Declination can be defined at robot level. It will be displayed in reportByTag page inside the columns of the detail section (with Country and Environment). When no value, Robot Declination will take Robot name. Declination value can be statically defined but also dynamically defined with variables : %SCREENSIZE%, %BROWSER%, %BROWSERVERSION%, %PLATFORM%.

  • Port number is no longer mandatory on Robot screen and Run Test Page.

  • Selecting a Campaign on Run Test Page allow to change the default country, environment or robot list from campaign.

  • New criteria for testcase selection at campaign level : GROUP.

  • Cache management at property level. You can now activate cache at property level by defining a cacheExpire value in second at property level. Property result will be taken from a previous execution during that timeframe. That allow to reduce the number of calls to external systems to retrieve a data (create on the fly test data or retrieve a security token too often).

  • Renamed property type 'executeSql' to 'getFromSql'.

  • New 'ifElementNotPresent' condition on step, action and control. #1660.

  • From Execution page if execution is still in queue, page is automatically refreshed every 5 seconds and until execution start. #1653

  • New buttons on RunTestCase page in order to submit and automatically redirect to the result page (either Execution Detail or Report By Tag Page depending on how many execution were triggered). #1653

Warning to be considered before applying the version (deprecated features)

  • SQL 1300 1302 1303 and 1304 could be quite long on system with a lot of execution.

  • Actions Marked as DEPRECATED : 'removeDifference' and 'mouseOverAndWait' (Stop using them as they will soon disappear).

  • Deprecated action has been removed : 'getPageSource'. -→ Use 'getPageSource' Control for the same result.

  • Deprecated property has been removed : 'executeSoapFromLib' and 'executeSqlFromLib'. Use getFromDataLib for the same result.

  • No longuer used invariant were removed from database : 'MNTACTIVE','NCONFSTATUS','PROBLEMCATEGORY','PROPERTYBAM','RESPONSABILITY','ROOTCAUSECATEGORY','SEVERITY'.

35.8. 3.4

Bug fixes

  • Improved automatic reload of execution detail page when execution still in queue.

  • Fixed filters on ReportByTag page.

  • Fixed nullPointerException when service call provide empty result.

Improvements / New features

  • Added new system variables : "TOMORROW-yyyy", "TOMORROW-MM", "TOMORROW-dd", "TOMORROW-doy".

  • New Interactive tutorial available from Documentation menu.

  • For Application Services, GET Query String is also feed from active Request details (key/value). Just like Postman does.

  • Various documentation improvements.

  • New QE execution status in order to split execution still in queue from the ones that will not be processed (because in ERROR). #1707

  • For Mobile devices (Appium)

    • Android : Fix a Bug on webview with Android devices : can’t type correctly a field.

    • Android : New action executeCommand to execute a shell command (adb shell) on android devices

    • Android and iOS : New action scrollTo to scroll to an element or a text

Warning to be considered before applying the version (deprecated features)

  • Removed Opera support following selenium deprecation.

35.9. 3.5

Bug fixes

  • Fix Critical issue when using glassfish 5 : (java.lang.ClassNotFoundException: org.joda.time.ReadableInstant)

  • Fixed Issue when creating or duplicating a datalib that has a special character.

  • Put back the Maintenance Activation flag combobox on environment modal.

Improvements / New features

  • AddToExecutionQueueV003 servlet have now new option for manualUrl (2) that override application definition url/contextroot/loginurl and envdata.

  • New system variable : %system.APP_CONTEXTROOT% and %system.EXEURL%

  • New property type getFromCommand. Available for appium android devices

  • Add action installApp and removeApp for Android to authorize Cross App on android devices

  • Implements action openApp (package,activity) for Android

  • Execution Retry now also cover the case where robot is not available (or connection is not always working).

  • Order of status in reportingbytag page and notification email is now always the same.

  • Added 'Post Testing' Support. All active testcase that are created inside 'Post Testing' Test will be automatically added at the end of any testcase that belong to the same application.

  • 'Pre Testing' and 'Post Testing' tescase are now also filtered depending on From/To Sprint/Rev Activation Criterias.

  • Service now support FTP GET in order to retreive xml, json or any files on FTP.

  • Service now support FTP POST In order to send xml, json or any files on FTP.

  • NE status that was used for manual execution not yet executed has been renamed to WE (Waiting Execution). NE status is now used for execution that are desactivated by condition. Step, Actions and Controls now also appear as NE in grey color that better correspond to a non executed status. #1712

Warning to be considered before applying the version (deprecated features)

  • nothing

35.10. 3.6

Bug fixes

  • Execution pop in ReportByTag was not always correctly displayed.

  • Service libraries didn’t work as expected when you wanted to update or create them (special chars and empty field).

Improvements / New features

  • Steps can now be forced to be executed by setting Y to the Force Exe data. This is useful in order to perform some end of session/logout operation at the end of every testcase even if the test failed somewhere during the execution. #1709

  • Trying to delete a label that still have links to testcases will now generate an error message. You need to remove the links using mass Action before. #1688

Warning to be considered before applying the version (deprecated features)

  • Nothing