You are not logged in. Click here to log in.

codebeamer Application Lifecycle Management (ALM)

Search In Project

Search inClear

How to Run Performance Tests

Executing performance tests requires relevant expertise and experience.

To run performance tests, Codebeamer must be started with the following configurations:
  • "webSecurity" : { "csrfEnabled" : false}
  • "apiThrottling": false

How to Run Performance Tests

Jars

For Codebeamer releases 21.09-LTS (EMMA) and 22.04 (FELICITY), download the below files to conduct performance tests:

  • cb-performance-test.jar - Run gatling performance test
  • cb-performance-result-renderer.jar - Render result of performance test into ASCII Table, CSV and HTML
Since Codebeamer release 22.10-LTS (GINA), the cb-performance-test.jar and the cb-performance-result-renderer.jar files can be found in the root directory of the installed application.
It is recommended to run the cb-performance-test.jar on a separate machine, as close to the Codebeamer as possible. Network could cause performance issues.

Your directory should look like this:

├── cb-performance-result-renderer.jar
├── cb-performance-test.jar
└── config
    ├── gatling.conf
    ├── scenarios.yaml
    └── warm-up-scenarios.yaml


Create a config directory with the following files:

  • gatling.conf
    gatling {
      codebeamer {
        baseUrl = "https://my.codebeamer.com"
        password = "007"
        apiUser = "bond"
        apiPassword = "007"
        fetchRandom = false
        logUrls = false
        lowestRequestTimeout = 500
        lowRequestTimeout = 1000
        normalRequestTimeout = 3000
        highRequestTimeout = 10000
        highestRequestTimeout = 30000
      }
      core {
        simulationClass = "com.intland.codebeamer.simulation.PerformanceSimulation"
      }
      data {
        console {
          writePeriod = 300
        }
      },
      ssl {
        useOpenSsl = false
      }
    }
    
  • scenarios.yaml (example)
    logins:
      - login: # Setting the number of users to be logged in with different kind of roles
        discriminator: DataGenSmallProject
        developer: 500
        qa: 500
        projectAdmin: 75
        devLead: 75
        qaLead: 75
        reviewer: 25
    
    scenarios:
      - scenario: Developer is checking his / her task
        discriminator: DataGenSmallProject # which project to use in the sceanrio
        pause: 30s
        inject:
          from: 1 # Number of users logged in
          to: 500 # Maximum number of users logged in
          during: 15m # Maximum users must be logged in during this time
          hold: 1h # Performance test is running for this long
        steps:
          - visit: authenticate # This should be the first step in a scenario
            pause: 1s
            parameters:
              roleName: Developer # User with the given role will execute the following steps
          - visit: trackersPage
          - visit: trackerItemPage
            parameters:
              trackerType: TASK # Optional parameter to specify which type of tracker the user action takes place in
          - visit: addComment
            pause: 5m # Pause can be added for visits, simulating the time the action would take for a real user.
            parameters:
              trackerType: TASK
              random: 10 # Step would happen 10% of the time, if not set it's 100%
          - visit: trackerDocumentView
            parameters:
              trackerType: USERSTORY
          - visit: loadNextPageOnDocumentView
            parameters:
              trackerType: USERSTORY
          - visit: loadDescriptionTooltip
            parameters:
              trackerType: USERSTORY
          - visit: trackerItemPage
            parameters:
              trackerType: USERSTORY
  • Scenario files for real life user behavior:

Commands

  • java -Xmx2G -cp 'cb-performance-test.jar:config' io.gatling.app.Gatling
    • Run performance test
  • java -Xmx2G -cp 'cb-performance-test.jar:config' com.intland.codebeamer.page.AllPagesDocPrinter
    • Print documentation of available step
  • java -jar cb-performance-result-renderer.jar [TABLE|CSV] stats.json
    • Print result as ASCII Table or CSV
  • java -jar cb-performance-result-renderer.jar HTML <NAME> stats.json > result.html
    • Print result as HTML
    • Rendering multiple results is also possible. java -jar cb-performance-result-renderer.jar HTML <NAME_1> stats1.json <NAME_2> stats2.json

Once the performance test is executed, the results can be found under the result directory.


Documentation for composing the scenarios.yaml file

(accessible from console with the AllPagesDocPrinter command listed above)

Available steps:
 - Create a new association for a tracker item
    How to use it:
    | - visit: addAssociation
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     trackerType: [EPIC|USERSTORY|TASK|TESTCASE|BUG] # Adding association to a tracker item of the given tracker type - Optional parameter
    |     associatedTrackerType: [EPIC|USERSTORY|TASK|TESTCASE|BUG] # An item of the given tracker type will be added to the other side of the association - Required parametere
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Create a new comment on a tracker item
    How to use it:
    | - visit: addComment
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     trackerType: [EPIC|USERSTORY|TASK|TESTCASE|BUG] # Visit a tracker item page of the given tracker type - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Authenticate a user
    How to use it:
    | - visit: authenticate
    |   parameters:
    |     roleName: [Developer|QA|Project Admin|Dev Lead|QA Lead|Reviewer] # Use with role - Optional parameter
    |     random: [true|false] # Get a random user, default is false - Optional parameter
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit a baseline page on a project
    How to use it:
    | - visit: baselinesPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit create project page and create one
    How to use it:
    | - visit: createProject
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     kindOfNewProject: [clean|demo] # Set the project type which should be "demo" or "clean" - Optional parameter
    |     demoDataPack: [Agile-Scrum|Agile-Waterfall-Hybrid|Automotive|Avionics|Medical] # Set project template if "demo" project is selected - Optional parameter
    |     templateProjId: [Project template id] # Set project template id - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Create project dashboard
    How to use it:
    | - visit: createProjectDashboard
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit create project page
    How to use it:
    | - visit: createProjectPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Create project wiki
    How to use it:
    | - visit: createProjectWiki
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Create test run from test case on document view
    How to use it:
    | - visit: createTestRunOnDocumentView
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Create tracker item
    How to use it:
    | - visit: createTrackerItem
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     trackerType: [EPIC|USERSTORY|TASK|TESTCASE|BUG] # Create tracker item - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Create tracker item on document edit view
    How to use it:
    | - visit: createTrackerItemDocumentEditView
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     trackerType: [EPIC|USERSTORY|TASK|TESTCASE] # Create tracker item on document edit view - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Create tracker item on document view
    How to use it:
    | - visit: createTrackerItemDocumentView
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     trackerType: [EPIC|USERSTORY|TASK|TESTCASE] # Create tracker item on document view - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Create tracker item on planner view
    How to use it:
    | - visit: createTrackerItemOnPlannerView
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     trackerType: [EPIC|USERSTORY|TASK|TESTCASE] # Create tracker item on release planner view - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Create user dashboard
    How to use it:
    | - visit: createUserDashboard
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Create user wiki
    How to use it:
    | - visit: createUserWiki
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit a kanban view on a tracker
    How to use it:
    | - visit: kanbanBoardPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     trackerType: [EPIC|USERSTORY|TASK|TESTCASE|TESTRUN|BUG] # Visit a kanban page of the given tracker type - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Set a baseline for the session
    How to use it:
    | - visit: loadBaseline
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Load Tracker Item description tooltip
    How to use it:
    | - visit: loadDescriptionTooltip
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     trackerType: [EPIC|USERSTORY|TASK|TESTCASE|BUG] # Visit a tracker item page of the given tracker type - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Load issue properties
    How to use it:
    | - visit: loadIssueProperties
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     trackerType: [EPIC|USERSTORY|TASK|TESTCASE] # Load issue properties on document view of the given tracker type - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Load a next page from a random tracker item
    How to use it:
    | - visit: loadNextPageOnDocumentView
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     trackerType: [EPIC|USERSTORY|TASK|TESTCASE] # Document View of the given tracker type will be used - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Authenticate a user
    How to use it:
    | - visit: login
    |   parameters:
    |     roleName: [Developer|QA|Project Admin|Dev Lead|QA Lead|Reviewer] # Use with role - Optional parameter
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit login page
    How to use it:
    | - visit: loginPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Logout a user
    How to use it:
    | - visit: logout
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Mass edit tracker items
    How to use it:
    | - visit: massEditTrackerItems
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     trackerType: [EPIC|USERSTORY|TASK|TESTCASE|BUG] # Mass edit items of the given tracker type - Optional parameter
    |     trackerItemsCount: [Positive integer] # The number of items to mass edit - Required parametere
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Modify test case test steps (for createTrackerItem)
    How to use it:
    | - visit: modifyTestCaseTestSteps
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Opens a reference field selector on a User Story item
    How to use it:
    | - visit: openReferenceSelectorDialog
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     trackerType: [EPIC|USERSTORY|TASK|TESTCASE] # Visit a tracker item page of the given tracker type - Optional parameter
    |     fieldName: [Any text] # Selects the field which reference selector should be opened - Optional parameter
    |     fieldId: [Any integer] # Selects the field which reference selector should be opened - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Open a report
    How to use it:
    | - visit: openReport
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
    |     reportType: [SIMPLE, ADVANCED] # Type of the report - Optional parameter
 - Open a report for edit
    How to use it:
    | - visit: openReportForEdit
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
    |     reportType: [SIMPLE, ADVANCED] # Type of the report - Optional parameter
 - Open a tracker item traceability section
    How to use it:
    | - visit: openTrackerItemTraceability
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     trackerType: [EPIC|USERSTORY|TASK|TESTCASE|BUG] # Visit a tracker item page of the given tracker type - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit the project backlog page
    How to use it:
    | - visit: projectBacklog
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit a project document page and load document tree
    How to use it:
    | - visit: projectDocumentPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit a project document directory page and load the document tree
    How to use it:
    | - visit: projectDocumentPageDirectoryPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit a project document directory properties page
    How to use it:
    | - visit: projectDocumentPageDirectoryPropertiesPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit a project document file properties page
    How to use it:
    | - visit: projectDocumentPageFilePropertiesPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit a project member page
    How to use it:
    | - visit: projectMembersPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit a project page and load project wiki tree
    How to use it:
    | - visit: projectPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit a project listing page
    How to use it:
    | - visit: projectsPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Remove a baseline from the session
    How to use it:
    | - visit: removeBaseline
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit a report page and run 'project.id IN project AND tracker.id IN tracker' query on a tracker
    How to use it:
    | - visit: reportPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     trackerType: [EPIC|USERSTORY|TASK|TESTCASE|BUG] # Visit a report page of the given tracker type and run 'project.id IN (${project}) AND tracker.id IN (${tracker}) AND TeamID IN (${team})' query - Optional parameter
    |     showAllChildren: [true|false] # Check show all children checkbox - Optional parameter
    |     showAncestorItems: [true|false] # Check show ancestor items checkbox - Optional parameter
    |     showDescendantItems: [true|false] # Check show descendant items checkbox - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit a review page
    How to use it:
    | - visit: reviewPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit a review statistics page
    How to use it:
    | - visit: reviewStatisticsPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit reviews page
    How to use it:
    | - visit: reviewsPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit sprint page
    How to use it:
    | - visit: sprintPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit a coverage page on a tracker
    How to use it:
    | - visit: trackerCoveragePage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     trackerType: [EPIC|USERSTORY|TESTRUN] # Visit a coverage page of the given tracker type - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit a document edit view on a tracker
    How to use it:
    | - visit: trackerDocumentEditView
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     trackerType: [EPIC|USERSTORY|TASK|TESTCASE] # Visit a tracker document edit view page of the given tracker type - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit a document view on a tracker
    How to use it:
    | - visit: trackerDocumentView
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     trackerType: [EPIC|USERSTORY|TASK|TESTCASE] # Visit a tracker document view page of the given tracker type - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit a tracker item on a tracker
    How to use it:
    | - visit: trackerItemPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     trackerType: [EPIC|USERSTORY|TASK|TESTCASE|BUG] # Visit a tracker item page of the given tracker type - Optional parameter
    |     tabs: [WORKLOG|SCM|HISTORY|ALLHISTORY] # Open a tab after tracker item page is loaded. Comma seprated list of tab names - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit a tracker page on a project, table layout is used
    How to use it:
    | - visit: trackerPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     trackerType: [EPIC|USERSTORY|TASK|TESTCASE|TESTRUN|BUG] # Visit a tracker page of the given tracker type - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit a traceability page on a tracker
    How to use it:
    | - visit: trackerTraceabilityReportPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     trackerType: [EPIC|USERSTORY|TASK|TESTCASE|BUG] # Visit a traceability report page of the given tracker type - Optional parameter
    |     traceabilityConfigType: [DEV|QA] # DEV: Join EPIC, USERSTORY and TASK trackers, QA: Join USERSTORY, TASK and TESTCASE trackers - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit a traceability table view page on a tracker with a predefined view
    How to use it:
    | - visit: trackerTraceabilityTableView
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit a trackers page on a project and load tracker tree
    How to use it:
    | - visit: trackersPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Update description of a tracker item  (for createTrackerItem)
    How to use it:
    | - visit: updateDescription
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     trackerType: [EPIC|USERSTORY|TASK|TESTCASE|BUG] # Visit a tracker item page of the given tracker type - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Update tracker item status (for createTrackerItem)
    How to use it:
    | - visit: updateTrackerItemStatus
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     trackerType: [EPIC|USERSTORY|TASK|TESTCASE|BUG] # Update tracker item status - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit a user homepage
    How to use it:
    | - visit: userHomePage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit a user's photo
    How to use it:
    | - visit: userPhotoPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     size: [SMALL|LARGE] # The size of the photo to be opened. - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit project dashboard
    How to use it:
    | - visit: visitProjectDashboardPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit project wiki
    How to use it:
    | - visit: visitProjectWikiPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit a release page
    How to use it:
    | - visit: visitReleasePage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit the release stats page. If parameters are given it will filter on the page.
    How to use it:
    | - visit: visitReleaseStatsPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
    |     releaseStatusFilter: [RESOLVED|CLOSED|RESOLVEDORCLOSED|OPEN|OVERDUE|OVERTIME] # The status of the tracker items that we are filtering for - Optional parameter
    |     releaseTypeFilter: [DEFAULT|TEST_RUNS_ONLY|ALL_TRACKER_ITEMS] # The type of tracker items that we are filtering for - Optional parameter
 - Visit the report finder dialog
    How to use it:
    | - visit: visitReportFinderDialog
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit the Reports page
    How to use it:
    | - visit: visitReportsPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     trackerType: [EPIC|USERSTORY|TASK|TESTCASE] # Visit a report page - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter
 - Visit user wiki page/dashboard
    How to use it:
    | - visit: visitUserDashboardPage
    |   parameters:
    |     groupName: [Any text] # Add to the action name - Optional parameter
    |     random: [Integer - 1-100] # Chance to run the requests, 100 by default (always run) - Optional parameter


Database Dump

The schema name to be imported is CBTEST.

There are database dumps for Postgres and Oracle, containing up to 1M tracker items in one single project. With tracker items having rich contents like descriptions, associations, downstream references and field values.

For more information about obtaining these database dumps and how to import them, contact your IT department.


Apply License

For applicable licenses to be used during performance tests, contact the Solution Engineering team at codebeamer-solutionengineering2@ptc.com.

Codebeamer Tuning

For more information on database pool configuration, see Database Connection Pool Parameters


The following environment variables can be set in order to increase performance. The number of these configurations depends on your scenarios, and might need to be changed.


21.09 Version

  • TOMCAT_CONNECTOR_ACCEPT_COUNT=500
  • CB_application_database_pool_max_active=300
  • CB_application_database_pool_max_idle=50
  • CB_application_database_pool_min_idle=20

22.04 Version for Tomcat Database Pool

  • TOMCAT_CONNECTOR_ACCEPT_COUNT=500
  • CB_DATABASE_POOL_TYPE=TOMCAT
  • CB_tomcat_pool_maxActive=300
  • CB_tomcat_pool_max_idle=50
  • CB_tomcat_pool_min_idle=20

22.04 Version for HikariCP Database Pool

  • TOMCAT_CONNECTOR_ACCEPT_COUNT=500
  • CB_DATABASE_POOL_TYPE=HIKARICP
  • CB_hikaricp_pool_maximumPoolSize=300
  • CB_hikaricp_pool_minimumIdle=50

22.10 Version for Tomcat/HikariCP Database Pool

The same configuration is to be used as for Codebeamer version 22.04.

How to Read the Test Results

Stats


Column Description
Requests The list of executed requests or groups of requests. Click the group requests to see the requests included.
Executions
Total The total time a request, or a group of requests was executed.
OK Passed request.
KO Failed request.
% KO The percentage of the failed requests.
Cnt/s Count of requests or group of requests per second.
Response Time (ms)
Min The fastest response time.
Percentiles The percentage of the response time compared with other response times.
Max The slowest response time.
Mean The average response time.
StdDev The difference between the current response time and the average response time.

Response Times

If the Response Time value is low, the response times are close to the average. In case of a high response time value, investigation is needed to find the cause.

Percentiles

Read the below example to understand how to interpret the percentile values.


The following example statements have identical meanings:

  • Measured at the 90th percentile, the response time is 3 seconds.
  • A response time of 3 seconds is greater than 90% of all responses.
  • 90% of responses were faster than 3 seconds.
  • 10% of responses were slower than 3 seconds.

The larger the user base, the closer you want to measure to the 100th percentile. Whether a 3-second response time at the 99th percentile is satisfactory or not depends on the number of end users that make up the remaining 1%.

Errors


Column Description
Error The list of errors found. For example: Timeout Exception.
Count The frequency of occurrence of the error.
Percentage The percentage of the current error out of the total errors.

Customizing the Report

The acceptable performance is not the same for every applications. To customize the acceptable ranges, change the values in the gatling.conf file.


For the full article, see: My first Gatling Test Report | Gatling Blog