2025-11-30 23:52:21 +11:00
2025-11-30 23:52:21 +11:00
2025-11-30 23:41:43 +11:00
2025-11-30 23:52:21 +11:00
2025-11-30 23:52:21 +11:00
2025-11-30 23:52:21 +11:00
2025-11-30 23:52:21 +11:00
2025-11-30 23:52:21 +11:00
2025-11-30 23:52:21 +11:00

Website Stress Testing Tool - Enhanced Edition

A professional stress testing application that simulates realistic traffic patterns to test production websites with support for 1-5000 concurrent users. Now with Website Crawler for realistic user simulation!

🚀 Features

Core Testing

  • Concurrent Users: Simulate 1-5000 users simultaneously
  • Traffic Patterns: Steady, Burst, Ramp-Up, and Random patterns
  • 🕷️ Website Crawler: NEW! Randomly navigate through website links like real users
  • Real-Time Monitoring: Live statistics and interactive charts
  • CORS Proxy: Bypass browser CORS restrictions with user agent rotation

Advanced Metrics

  • Percentile Analysis: P50, P95, and P99 response times
  • Error Categorization: Track 4xx, 5xx, timeout, and network errors separately
  • Bandwidth Tracking: Monitor total data sent and received
  • Request History: Live log of last 100 requests with filtering

User Experience

  • 🌓 Theme Toggle: Switch between dark and light modes
  • Test Presets: Quick-load configurations (Light, Medium, Heavy, Spike)
  • 💾 Save Configurations: Save and reload custom test setups
  • ⌨️ Keyboard Shortcuts: S=Start, P=Pause, X=Stop
  • 📱 Mobile Responsive: Works great on all devices
  • Export Results: JSON and CSV export functionality

Premium UI

  • Modern dark/light theme with glassmorphism effects
  • Real-time charts with Chart.js
  • Smooth animations and transitions
  • Professional color-coded statistics

📋 Prerequisites

  • Node.js (v14 or higher) - Required for the CORS proxy server
  • Modern Web Browser (Chrome, Firefox, Edge, Safari)

🛠️ Setup Instructions

Step 1: Install Node.js

If you don't have Node.js installed:

Windows:

# Using Chocolatey
choco install nodejs

# Or download from: https://nodejs.org/

macOS:

# Using Homebrew
brew install node

Linux:

# Ubuntu/Debian
sudo apt install nodejs npm

# Fedora
sudo dnf install nodejs

Step 2: Start the CORS Proxy Server

The proxy server is required to bypass CORS restrictions when testing production websites.

# Navigate to the project directory
cd "C:\Users\DM\OneDrive - BCT\BCT-YT - Documents\Project-Files\HomeLoan\HTML\StressTest"

# Start the proxy server
node proxy-server.js

You should see:

╔════════════════════════════════════════════════════════════╗
║         CORS Proxy Server for Stress Testing Tool         ║
╚════════════════════════════════════════════════════════════╝

✅ Server running on: http://localhost:3000
✅ Max connections: 5000
✅ Request timeout: 30000ms

Keep this terminal window open while using the stress testing tool.

Step 3: Open the Stress Testing Tool

Open index.html in your web browser:

Option A: Double-click the index.html file

Option B: Use a local web server (recommended)

# In a NEW terminal window (keep proxy running in the first)
python -m http.server 8080

# Then open: http://localhost:8080

📖 Usage Guide

Quick Start with Presets

  1. Select a Preset: Choose from Light, Medium, Heavy, or Spike test
  2. Enter Target URL: https://example.com
  3. Click "Start Test": Watch real-time metrics
  4. Review Results: Scroll down after test completes

Basic Test

  1. Enter Target URL: https://beyondcloud.solutions/tag/guides/
  2. Set Concurrent Users: Use the slider (1-5000)
  3. Set Duration: Test duration in seconds (10-600)
  4. Select Traffic Pattern:
    • Steady: Constant requests per second
    • Burst: Traffic spikes at intervals
    • Ramp-Up: Gradual increase in load
    • Random: Realistic user behavior
  5. Click "Start Test"
  6. Monitor Live Statistics: Watch real-time metrics and charts
  7. Stop or Wait: Click "Stop" or let it complete
  8. Review Results: Scroll down to see detailed metrics
  9. Export (optional): Download results as JSON or CSV

🕷️ Crawler Mode (NEW!)

Simulate real users by randomly navigating through website links:

  1. Enable Crawler Mode: Check the "Enable Crawler Mode" checkbox
  2. Set Crawl Depth: How many page hops per user (1-5)
  3. Set Links Per Page: Maximum links to extract (1-50)
  4. Start Test: Users will randomly click links and navigate the site
  5. Monitor: Watch the Request History to see different URLs being visited

How it works:

  • Extracts links from HTML responses
  • Randomly selects links from the same domain
  • Simulates realistic browsing behavior
  • Tracks unique URLs visited

Advanced Options

Click "Advanced Options" to configure:

  • HTTP Method: GET, POST, PUT, DELETE, PATCH
  • Custom Headers: Add authentication, content-type, etc.
    {
      "Authorization": "Bearer your-token",
      "Content-Type": "application/json"
    }
    
  • Request Body: For POST/PUT requests
    {
      "key": "value"
    }
    
  • Think Time: Delay between requests (0-5000ms)

Keyboard Shortcuts

  • S: Start test
  • P: Pause/Resume test
  • X: Stop test

Theme Toggle

Click the 🌓 Theme button in the header to switch between dark and light modes. Your preference is saved automatically.

Save & Load Configurations

  1. Configure your test with desired settings
  2. Click "💾 Save Current Config"
  3. Enter a name for your configuration
  4. Reload page to see it in the presets dropdown
  5. Select saved config to quickly load those settings

📊 Understanding Results

Key Metrics

  • Total Requests: Number of HTTP requests sent
  • Success Rate: Percentage of successful responses (2xx, 3xx)
  • Requests per Second (RPS): Average throughput
  • Response Time: Min, Max, Average, P50, P95, P99
  • Failed Requests: Number of errors or timeouts
  • Bandwidth: Total data sent and received

Percentiles (NEW!)

  • P50 (Median): 50% of requests were faster than this
  • P95: 95% of requests were faster than this (good for SLAs)
  • P99: 99% of requests were faster than this (catches outliers)

Error Breakdown (NEW!)

  • 4xx Errors: Client errors (bad request, not found, etc.)
  • 5xx Errors: Server errors (internal server error, etc.)
  • Timeout Errors: Requests that exceeded timeout limit
  • Network Errors: Connection failures, DNS errors, etc.

Charts

  • RPS Chart: Shows request rate over time
  • Response Time Chart: Shows latency trends
  • User Load vs Error Rate: Correlates user count with error percentage

Request History (NEW!)

  • Live table showing last 100 requests
  • Color-coded by success/failure
  • Shows URL, status code, and response time
  • Auto-scrolls with new requests

🔧 Configuration

Changing the Proxy URL

If you deploy the proxy server to a different location, update the proxy URL in script.js:

this.config = {
  // ... other config
  proxyUrl: 'http://your-server:3000' // Change this
};

Deploying to Production

When hosting on a web server:

  1. Update proxy server allowedOrigins in proxy-server.js:

    const CONFIG = {
      allowedOrigins: 'https://your-domain.com', // Not '*'
    };
    
  2. Deploy both files:

    • Frontend: index.html, styles.css, script.js
    • Backend: proxy-server.js, package.json
  3. Run proxy server on your hosting:

    npm start
    # or
    node proxy-server.js
    

🎯 Testing Your Website

Example: Testing with Crawler Mode

  1. Start proxy server: node proxy-server.js
  2. Open index.html in browser
  3. Enter URL: https://beyondcloud.solutions
  4. Enable Crawler Mode
  5. Set crawl depth: 2
  6. Set users: 50
  7. Set duration: 60 seconds
  8. Select pattern: Random
  9. Click "Start Test"
  10. Watch Request History to see different pages being visited
  11. Monitor results

⚠️ Important Notes

Browser Limitations

  • This tool runs in the browser, which has connection limits
  • For very high loads (1000+ users), consider server-side tools:
    • Apache JMeter
    • k6
    • Artillery
    • Gatling

CORS Proxy Security

  • Development: The proxy allows all origins (*)
  • Production: Update allowedOrigins to your specific domain
  • Never expose an open proxy to the internet

Responsible Testing

  • Only test websites you own or have permission to test
  • Start with low user counts to avoid overwhelming servers
  • Monitor your target server during tests
  • Be aware that aggressive testing may trigger rate limiting or security measures
  • Crawler mode generates more requests - use responsibly

🐛 Troubleshooting

"All requests are failing"

Problem: CORS proxy not running

Solution: Start the proxy server:

node proxy-server.js

"Connection refused" errors

Problem: Proxy server not accessible

Solutions:

  1. Check proxy is running on port 3000
  2. Verify firewall isn't blocking port 3000
  3. Check proxyUrl in script.js matches your setup

"Request timeout" errors

Problem: Target server is slow or unreachable

Solutions:

  1. Increase timeout in proxy-server.js (line 16)
  2. Reduce concurrent users
  3. Increase think time
  4. Check target URL is accessible

Problem: Website uses JavaScript to render links

Solutions:

  1. Crawler only works with server-rendered HTML
  2. Try disabling crawler mode for JavaScript-heavy sites
  3. Consider using headless browser tools for SPA testing

📁 File Structure

StressTest/
├── index.html          # Main application UI (enhanced)
├── styles.css          # Premium design system (dark/light theme)
├── script.js           # Frontend logic (with crawler)
├── proxy-server.js     # CORS proxy backend (enhanced)
├── package.json        # Node.js configuration
└── README.md           # This file

🆕 What's New in Enhanced Edition

Version 2.0 Features

Website Crawler: Simulate real user navigation 📊 Percentile Metrics: P50, P95, P99 response times 🔍 Error Categorization: Detailed error breakdown 📈 Bandwidth Tracking: Monitor data usage 📝 Request History: Live log of recent requests Test Presets: Quick-load common scenarios 💾 Save Configurations: Persist custom setups 🌓 Theme Toggle: Dark and light modes ⌨️ Keyboard Shortcuts: Quick controls 🎨 Enhanced UI: Improved mobile responsiveness 🔄 User Agent Rotation: More realistic traffic simulation

🔒 Security Considerations

  1. Proxy Server: Restrict allowedOrigins in production
  2. Rate Limiting: Consider adding rate limits to the proxy
  3. Authentication: Add auth if exposing publicly
  4. Monitoring: Log requests for security auditing
  5. Crawler Mode: Be mindful of the additional load it generates

📝 License

MIT License - Feel free to modify and use as needed.

🤝 Support

For issues or questions:

  1. Check this README
  2. Review the browser console for errors
  3. Check proxy server logs
  4. Verify target website is accessible

Happy Stress Testing! 🚀

Enhanced with Website Crawler & Advanced Metrics

Description
No description provided
Readme GPL-3.0 1.5 MiB
Languages
JavaScript 56.1%
CSS 20.7%
HTML 17.1%
Shell 3.9%
PowerShell 2.2%