Qlik Community

Ask a Question


QlikWorld Online 2021, May 10-12: Our Free, Virtual, Global Event REGISTER TODAY
Showing results for 
Search instead for 
Did you mean: 

Qlik Sense Enterprise Scalability Tools

Note: This is a Beta release of our Enterprise performance testing package. Our mature performance testing offering can be found here: Qlik Sense Scalability Tools.

The Qlik Sense Enterprise Scalability Tools are used to create and run load and performance tests towards Qlik Sense Enterprise for Windows (QSEfW) and Qlik Sense Enterprise on Kubernetes (QSEoK) deployments.

Included parts are:

  • Documentation on how to use the package
  • Command line tool for Windows, Mac and Linux. This command line tool (gopherciser) is open source and can be found here .
  • GUI for Windows, Mac and Linux.

Downloadable files can be found here:
📎 Qlik Sense Enterprise Scalability Tools 


Change log

v0.6.0 -> v0.6.1

  • All Windows binaries now signed with Qlik code signing certificate.
  • Gopherciser v0.6.26 -> v0.8.0:
    • Bugfixes.
    • New action: clearfield.
    • New action: askhubadvisor.
    • Removed action staticselect.
    • Random action: only do random selection in objects with at least one dimension.
    • select action: new select type values for static selection of element values.
    • openapp action: new parameter unique enforcing new unique engine session without users previous session state.

v0.5.1 -> v0.6.0

Updated to support Qlik Sense February 2021 release.

  • Bug fixes.
  • Gopherciser v0.6.19 -> v0.6.26:
    • Bugfixes.
    • Add support for grid charts.
    • Add prometheus metrics for API calls.
    • Add sn-video-player as supported object.
    • Add option to apply selections only in `applybookmark` action.
    • Add support for sheet show condition.

v0.5.0 -> v0.5.1

  • Option to load custom gopherciser versions.
  • Possibility to set script overrides during execution
  • Option to ignore event errors during sequence execution.
  • Gopherciser v0.6.3 -> v0.6.17
    • Bug fixes.
    • Updated request flows for "elastic" actions.
    • Add published/approved meta to sheets in appstructure.
    • Add possibility to override script values.
    • Add possibility to pipe scripts or overrides.
    • Elasticreload action: Uses events instead of polling. Deprecated settings `pollinterval` and `pollingoff`.
    • Uploaddata action: New `replace` parameter. Deprecated `destinationpath` parameter. Added support for spaces.
    • Deletedata: Deprecated parameter `path`. Added support for spaces.
    • New action: `containertab`.
    • New action: `DoSave`.
    • Support getting data for container, share-button, variable-input, animator and date-picker objects (dashboard bundle).

v0.4.0 -> v0.5.0

  • Updated Gopherciser to support Qlik Sense Enterprise September 2020
  • Bug fixes
  • Gopherciser v0.5.6 -> v0.6.3
    • Bug fixes
    • Possibility to re-connect websocket, app and objects on websocket disconnect
    • New action for listbox select
    • New action for action-button support
    • Action removed "elasticshareapp"
    • Add events websocket and utlize events in elastic reload
    • Replace `tick` log column with straight sequence
    • Story and snapshot objects added to app structure

v0.3.3 -> v0.4.0

  • Built-in executor that can run single scripts or sequences of scripts with custom inter-dependencies. The executor can be run headless by disconnecting the GUI once it's been started.
  • Support for app structures that makes it easier to configure certain actions by connecting to the app directly and providing the available IDs.
  • Underlying Gopherciser version has changed (v0.5.0 -> v0.5.5)
    • Support new bullet chart and sparkline charts
    • Support for latest version of auto-charts (auto-charts in existing apps need to be re-created)
    • Bug fixes and documentation update

v0.3.2 -> v0.3.3

  • Updated Gopherciser to support Qlik Sense Enterprise April 2020
  • Underlying Gopherciser version has changed (v0.4.9 -> v0.5.0)
    • New actions for bookmarks: PublishBookmark and UnpublishBookmark
    • New actions for handling spaces: ElasticMoveApp and ElasticPublicApp
    • Support new org chart visualization
    • New options in CreateBookmark to reflect additions in QSE
    • Option for same randomization seed for all user sessions
    • Support variables in more parameters (see documentation)

v0.3.1 -> v0.3.2

  • Fix a bug where test connection might give a false positive
  • Improve error messages on connect failures
  • Bug fixes through updated gopherciser
  • Underlying Gopherciser version has changed (v0.4.2 -> v0.4.9)
    • Fix a bug where an upload error could cause the tool to hang
    • Fix a bug where a binary payload could get written to log
    • Improved handling when creating collections
    • Fix a bug where selections in tables could fail
    • Improved handling of cookies for QSEfW authentication


Your use of Qlik Sense Enterprise Scalability Tools will be subject to the same license agreement between you and Qlik for your Qlik Sense License. Qlik does not provide maintenance and support services for the Qlik Sense Enterprise Scalability Tools, however please check QlikCommunity for additional information on use of these products.

30 Replies

Looks like there's a doc bug (albeit minor).

In any of the examples where you use 

"claims": "{\"user\":\"{{.UserName}}}\",\"directory\":\"{{.Directory}}\"}"

This results in a user named user_#}

Like so:

2019-07-31 16_46_01-Users - QMC.png


 Which isn't exactly pretty 😀

Swap to:

"claims": "{\"user\":\"{{.UserName}}\",\"directory\":\"{{.Directory}}\"}"

Thank you Levi, I will make sure this is updated in the next release.

I am trying to get the app working. It says "connection successful". But when I run it I keep getting the error "Failed to perform app selection: app<Test App> not found in artifact map".


Is there some map where I need to add this app?

Command used:

gopherciser execute -c "path to script\Script1.json"

Attaching the script1.json to this post.

Any help would be appreciated.



It's an easy fix. You just need to add an OpenHub action before your OpenApp action.

Alternatively, you can use the GUID instead of name to open the app directly.

The reason for this is the tool uses an internal "artifact map" that maps between the name of an app and a guid. When the OpenHub action occurs, the tool "sees" what apps are in the system and remembers them for future access. Then it uses this artifact map to look up the app. I attached a fixed version of your script.


That hit the spot, right on bulls eye! It started working as soon as i added "open hub". Thank you kind sir.


I updated the script to use generate users using a prefix, to scale to 25 users and for 25 iterations.


Created the scenario as below:


When the run the tool in command prompt, I am getting a couple of errors:

1. Sessions exceeded

2. Hub cannot be opened (presumably for hub was already open for the user from the first run) (maybe I am missing something that would allow to do "open hub" only in the first iteration and skip for the rest?

Most common error:
[90m11:26AM[0m [1m[31mERR[0m[0m failed to get DocList: EOF [36mAction=[0mopenhub [36mActionId=[0m25 [36mAppGUID=[0m [36mAppName=[0m [36mDetails=[0m [36mErrors=[0m0 [36mInfoType=[0m [36mLabel=[0m [36mObjectType=[0m [36mReceived=[0m0 [36mRequestsSent=[0m0 [36mResponseTime=[0m0 [36mSent=[0m0 [36mSession=[0m5 [36mSessionName=[0m [36mStack=[0m"EOF\nfailed to get DocList\ngithub.com/qlik-trial/gopherciser-oss/scenario.OpenHubSettings.Execute.func2\n\t/go/src/github.com/qlik-trial/gopherciser-oss/scenario/openhub.go:68\ngithub.com/qlik-trial/gopherciser-oss/session.(*PendingHandler).QueueRequest.func1\n\t/go/src/github.com/qlik-trial/gopherciser-oss/session/pendinghandler.go:88\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:1357" [36mThread=[0m1 [36mTick=[0m1767086597274 [36mUser=[0mQSEST_5 [36mWarnings=[0m0 [36mtimestamp=[0m2020-03-06T17:26:27.9188073Z

Any suggestions on these, please?


We seem to have a bug that sometimes causes the connection test to succeed even if the header settings are invalid. After double-checking the header name and header value against the QMC settings, the issue was resolved on my end. Would you please double check:

* Virtual proxy prefix

* Header name

* Header value


I had the previous test on November 2019 Patch 5. Now I am on February 2020.

I do not have an issue with connectivity, for it lists the apps on my test server properly. Attached is one run text file, and it has no errors.

The issue starts when it starts this in a loop for scalability testing. Below is the error when it starts iterating over 25 users over 25 runs.

ERR failed to get DocList: EOF Action=openhub ActionId=47 AppGUID= AppName= Details= Errors=0 InfoType= Label= ObjectType= Received=0 RequestsSent=0 ResponseTime=0 Sent=0 Session=16 SessionName= Stack="EOF\nfailed to get DocList\ngithub.com/qlik-trial/gopherciser-oss/scenario.OpenHubSettings.Execute.func2\n\t/go/src/github.com/qlik-trial/gopherciser-oss/scenario/openhub.go:68\ngithub.com/qlik-trial/gopherciser-oss/session.(*PendingHandler).QueueRequest.func1\n\t/go/src/github.com/qlik-trial/gopherciser-oss/session/pendinghandler.go:88\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:1357" Thread=2 Tick=4201200023 User=QSEST_16 Warnings=0 timestamp=2020-03-09T15:47:59.6543096Z
10:47AM ??? Action=openhub ActionId=47 AppGUID= AppName= Details=SenseEfW Errors=1 InfoType= Label= ObjectType= Received=132 RequestsSent=1 ResponseTime=0 Sent=84 Session=16 SessionName= Stack= Success=false Thread=2 Tick=4201200031 User=QSEST_16 Warnings=0 timestamp=2020-03-09T15:47:59.6543096Z

This error occurs pretty much at every run after the first.

And also the below one (was occurring in Nov 2019 P5 too).

10:50AM ??? {"jsonrpc":"2.0","method":"OnMaxParallelSessionsExceeded","params":{"severity":"fatal","timestamp":"2020-03-09T15:50:51.736728Z","message":"Access to the app is denied: MaxParallelSessionsExceeded"}} Action=openhub ActionId=497 AppGUID= AppName= Details=Received Errors=0 InfoType= Label= ObjectType= Received=0 RequestsSent=0 ResponseTime=0 Sent=0 Session=241 SessionName= Stack= Thread=15 Tick=4552568617 User=QSEST_241 Warnings=0 timestamp=2020-03-09T15:50:50.0148592Z


It sounds like you're encountering some issues related to your licenses. I note that you're using a list of 3 users that are invoked multiple times in parallel. Increasing the number of users in your user list to match the number of concurrent users in the script should mitigate your problems.

Refer to the following document:  Professional access allocations  

The maximum number of parallel user connections for a single user of this type of access pass is five (5).If you use a license with a signed license key, accessing the QMC also counts and adds to the maximum number of parallel sessions, which is five. To avoid unnecessary session consumption, the root admin should not be allocated any type of access.

and your test may also be affected by the "cool down" timer for licensed users, which is why it fails after the first time:

When a user with the maximum number of parallel user connections ends a connection (for example, by logging out) five minutes must pass before the user can use the access pass to add another connection (for example, by logging in).