DevOps Automation

DevOps Automation

Join this online group to communicate across IBM product users and experts by sharing advice and best practices with peers and staying up to date regarding product enhancements.


#DevOps
 View Only

Building an Automated SVT (System Verification Testing) Framework for Web Applications

By Dhananjay Bhandarkar posted Sun October 19, 2025 03:26 PM

  

This detailed blog will walk you through setting up an end-to-end SVT automation framework using modern DevOps and testing tools — Jenkins, JMeter, Selenium Grid, WebSphere Liberty, InfluxDB, Grafana, and Slack. We’ll not only illustrate the architecture and workflow, but also guide you through high-level setup steps so you can replicate this environment for your own continuous test automation projects.


Introduction

System Verification Testing (SVT) ensures stability, performance, and functionality under real-world conditions before software reaches production. This approach integrates continuous integration tools (like Jenkins) with performance testing (JMeter), browser automation (Selenium Grid), and monitoring (Grafana + InfluxDB). The final layer — Slack — brings instant communication to development teams.

The diagram below gives an overview of how various components interact.


Architecture Overview

Core Components:

Layer Technology Purpose
CI/CD Jenkins Pipeline orchestration, job scheduling, and reporting
App Hosting WebSphere Liberty Host web application for test execution
Test Execution Apache JMeter Drives regression & load testing
Browser Simulation Selenium Grid Spawns concurrent browser-based test sessions
Metrics Storage InfluxDB Collects real-time test metrics
Visualization Grafana Displays live dashboards synced with tests
Notification Slack Reports test summary and build status

Environment Preparation

Before starting, ensure that you have:

  • A Jenkins master server and one or more Jenkins agents

  • Access to WebSphere Liberty or any preferred lightweight app server

  • Docker or Podman installed for containerized services (InfluxDB, Grafana)

  • Python 3 installed (for custom automation scripts)

References:


Jenkins Setup and Job Design

Step 1: Create a Jenkins Freestyle or Pipeline Job for Build Deployment

  1. Configure repository credentials to download the build artifact.

  2. Add pipeline steps or shell scripts to:

    • Copy artifacts to Liberty deployment directory.

    • Start Liberty via command line or server start <servername>.

      stage('Deploy Build') {
        steps {
          sh 'curl -O $REPO_URL/latest-build.zip'
          sh 'unzip latest-build.zip -d /opt/liberty/usr/servers/myApp'
          sh '/opt/liberty/bin/server start myApp'
        }
      }

Step 2: Create Jenkins Job for SVT (Regression) Execution

  1. Configure a Jenkins agent that has JMeter and Java installed.

  2. Include a shell or pipeline step to trigger JMeter tests:

    stage('Run Regression') {
      steps {
        sh 'jmeter -n -t /tests/viewer_regression.jmx -l results.jtl'
      }
    }
  3. Archive test results using Jenkins post-build actions.

  4. Add triggers: schedule builds when a successful commit is made or on a daily basis.

Step 3: Slack Notification Integration

  • Install Slack Notification Plugin in Jenkins.

  • Generate an API token from your Slack app setup.

  • Add a post-build step:

    slackSend(channel: '#svt-alerts', color: 'good', message: 'Viewer SVT completed: ${currentBuild.currentResult}

JMeter Configuration for SVT

  1. Use HTTP(S) Test Script Recorder in JMeter to capture actions like document download, conversion ,print, and redaction from the Viewer UI.

  2. Build Thread Groups to simulate concurrent sessions (e.g., 100 users).

  3. Use Backend Listener (InfluxDB) to send real-time metrics.

Backend Listener Configuration:

  • Backend Listener Implementation: org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient

  • Parameters:

    • influxdbMetricsSender = org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender

    • influxdbUrl = http://<influx_host>:8086/write?db=jmeter

    • application = ViewerSVT

Reference: JMeter InfluxDB Backend Listener Guide


Selenium Grid for Browser Load Simulation

  1. Deploy Selenium Hub:

    docker run -d -p 4442-4444:4442-4444 --name selenium-hub selenium/hub
  2. Deploy Browser Nodes (e.g., Chrome):

    docker run -d --link selenium-hub:hub selenium/node-chrome
    
  3. Verify: Open http://<hub-ip>:4444/ui to check node status.

Reference: Selenium Grid Official Docs


InfluxDB and Grafana Setup for Live Reporting

  1. Run InfluxDB and Grafana in containers:

    docker run -d -p 8086:8086 --name influxdb influxdb:2.7
    docker run -d -p 3000:3000 --name grafana grafana/grafana
     
  2. Create an InfluxDB database:

    influx -execute 'CREATE DATABASE jmeter'
  3. Connect Grafana to InfluxDB via Data Source → InfluxDB (HTTP URL: http://influxdb:8086).

  4. Import JMeter-Grafana dashboards from open-source templates (for example: ID 5496 from Grafana.com).

Reference: Grafana + JMeter Integration Guide


Python Script for Threshold Evaluation

A custom Python script can automatically evaluate test success/failure:

from influxdb import InfluxDBClient
import requests 
client = InfluxDBClient(host='influxdb', port=8086, database='jmeter')
query = "SELECT MEAN(failure) FROM jmeter WHERE time > now() - 1h"
result = list(client.query(query).get_points())[0]['mean']
if result > 0.05:
    requests.post('http://jenkins/job/SVT/build', data={'result':'FAIL'})
else:
    requests.post('http://jenkins/job/SVT/build', data={'result':'PASS'})

This enforces an objective quality gate based on defined performance thresholds.


Putting It All Together

When integrated:

  1. Jenkins downloads the daily build.

  2. Liberty deploys and starts the Viewer app.

  3. Jenkins triggers JMeter regression tests (optionally combined with Selenium Grid load).

  4. Metrics are streamed to InfluxDB → visualized in Grafana.

  5. Python automation validates outcomes.

  6. Jenkins posts a pass/fail summary to Slack with the dashboard link.


Key Benefits

  • Fully automated hands-free validation pipeline.

  • Live feedback in Grafana during load execution.

  • Data-driven Jenkins job status decision.

  • Continuous visibility via Slack alerts and grafana dashboard

  • Scalable infrastructure, easily extendible to cloud deployments.


Useful References


Conclusion

This setup represents a comprehensive SVT automation architecture combining CI/CD pipelines with real-time performance telemetry and intelligent result validation. It enhances both regression coverage and release confidence, forming a reference design for quality assurance in modern enterprise DevOps environments.

0 comments
35 views

Permalink