Files
usb-ssd/scripts/ssd-testing
2025-08-07 19:28:22 +02:00
..
2025-08-07 19:28:22 +02:00
2025-08-07 19:28:22 +02:00

SSD Testing Module

Übersicht

Das SSD Testing Module bietet umfassende Qualitätssicherung für USB-C SSDs mit 11 spezialisierten Tests, Performance-Messung und SMB-Bereitschaftsprüfung. Es gewährleistet die Zuverlässigkeit und Kompatibilität der Storage-Infrastruktur.

Hauptkomponenten

ssd-test-suite.sh

Zweck: Umfassende Qualitätssicherung und Performance-Messung

Test-Kategorien:

  • Hardware-Tests: Connectivity, Power, Temperature
  • Filesystem-Tests: NTFS-Integrität, Permissions, Capacity
  • Performance-Tests: Read/Write Speed, IOPS, Latency
  • Integration-Tests: SMB-Bereitschaft, Mount-Stabilität
  • Security-Tests: Access-Control, Encryption-Support

Test-Suite Übersicht

Die 11 Kern-Tests

Test-ID Name Zweck Dauer
T01 Hardware Detection USB-C Connectivity und Device-Recognition 5s
T02 NTFS Filesystem Dateisystem-Integrität und Kompatibilität 10s
T03 Mount Stability Mount/Unmount Zyklen und Stabilität 30s
T04 Read Performance Sequential und Random Read-Geschwindigkeit 60s
T05 Write Performance Sequential und Random Write-Geschwindigkeit 60s
T06 File Operations Create, Copy, Delete, Rename Operationen 45s
T07 Permission System Linux-Permissions und NTFS-ACLs 15s
T08 SMB Readiness SMB-Freigabe Kompatibilität und Performance 30s
T09 Capacity Verification Verfügbarer Speicher und Fragmentierung 20s
T10 Error Handling Fehlerbehandlung und Recovery-Mechanismen 25s
T11 Security Scan Access-Control und Encryption-Support 40s

Verwendung

Grundlegende Test-Ausführung

# Alle Tests ausführen
./ssd-test-suite.sh all

# Spezifischen Test ausführen
./ssd-test-suite.sh T01

# Test-Kategorie ausführen
./ssd-test-suite.sh --category hardware
./ssd-test-suite.sh --category performance
./ssd-test-suite.sh --category integration

Erweiterte Test-Optionen

# Schnelle Tests (nur kritische)
./ssd-test-suite.sh --quick

# Umfassende Tests (alle mit erweiterten Parametern)
./ssd-test-suite.sh --comprehensive

# Performance-Benchmark
./ssd-test-suite.sh --benchmark

# Kontinuierliche Tests
./ssd-test-suite.sh --continuous --interval 300

Output-Formate

# Standard-Output (Human-readable)
./ssd-test-suite.sh all

# JSON-Output für Automation
./ssd-test-suite.sh all --output json

# XML-Report für CI/CD
./ssd-test-suite.sh all --output xml

# CSV für Datenanalyse
./ssd-test-suite.sh all --output csv

Test-Konfiguration

Environment Variables

# Test-Timeout (Sekunden)
export SSD_TEST_TIMEOUT=300

# Performance-Test Größe (MB)
export SSD_TEST_SIZE=100

# Test-Wiederholungen
export SSD_TEST_ITERATIONS=3

# Benchmark-Modus
export SSD_BENCHMARK_MODE=true

Konfigurationsdatei

# /etc/ssd-test/config.conf
TEST_MOUNT_POINT="/mnt/ssd-storage"
TEST_DATA_SIZE="100MB"
PERFORMANCE_THRESHOLD_READ="50MB/s"
PERFORMANCE_THRESHOLD_WRITE="30MB/s"
SMB_TEST_ENABLED=true
SECURITY_SCAN_ENABLED=true

Test-Details

Hardware-Tests (T01-T03)

T01: Hardware Detection

# Prüft USB-C Connectivity
- Device-Erkennung im System
- USB-Version und Geschwindigkeit
- Power-Management Status
- Device-Descriptor Validierung

T02: NTFS Filesystem

# Validiert NTFS-Kompatibilität
- Dateisystem-Typ Verifikation
- NTFS-Version Kompatibilität
- Journal-Status Prüfung
- Cluster-Size Optimierung

T03: Mount Stability

# Testet Mount/Unmount Zyklen
- 10x Mount/Unmount Zyklen
- Concurrent-Access Tests
- Mount-Option Validierung
- Recovery nach Fehlern

Performance-Tests (T04-T06)

T04: Read Performance

# Sequential Read Test
dd if=/mnt/ssd-storage/testfile of=/dev/null bs=1M count=100

# Random Read Test (4K Blocks)
fio --name=random-read --ioengine=libaio --rw=randread --bs=4k --size=100M

T05: Write Performance

# Sequential Write Test
dd if=/dev/zero of=/mnt/ssd-storage/testfile bs=1M count=100

# Random Write Test (4K Blocks)
fio --name=random-write --ioengine=libaio --rw=randwrite --bs=4k --size=100M

T06: File Operations

# Standard File-Operations
- 1000 kleine Dateien erstellen (1KB)
- 100 mittlere Dateien erstellen (1MB)
- 10 große Dateien erstellen (10MB)
- Copy, Move, Delete Operationen
- Symlink und Hardlink Tests

Integration-Tests (T07-T09)

T07: Permission System

# Linux-Permissions testen
chmod 755 /mnt/ssd-storage/testdir
chown user:group /mnt/ssd-storage/testfile

# NTFS-ACL Kompatibilität
setfacl -m u:user:rwx /mnt/ssd-storage/testdir

T08: SMB Readiness

# SMB-Kompatibilität prüfen
- Windows-Filename Kompatibilität
- Extended Attributes Support
- Case-Sensitivity Tests
- Unicode-Filename Support
- SMB-Performance Simulation

T09: Capacity Verification

# Speicher-Analyse
df -h /mnt/ssd-storage
du -sh /mnt/ssd-storage/*

# Fragmentierung prüfen
fsck.ntfs -f /dev/sdb1

Security-Tests (T10-T11)

T10: Error Handling

# Fehlerbehandlung testen
- Disk-Full Simulation
- Permission-Denied Scenarios
- Network-Interruption (bei SMB)
- Hardware-Disconnect Simulation

T11: Security Scan

# Security-Features prüfen
- Access-Control Lists (ACLs)
- Encryption-Support Detection
- Secure-Delete Capabilities
- Audit-Trail Funktionalität

Benchmark-Modus

Performance-Metriken

# Detaillierte Performance-Analyse
./ssd-test-suite.sh --benchmark --detailed

# Vergleich mit Referenz-Werten
./ssd-test-suite.sh --benchmark --compare baseline.json

# Performance-Trend Analyse
./ssd-test-suite.sh --benchmark --trend --days 30

Benchmark-Output

{
  "device": "/dev/sdb1",
  "timestamp": "2025-08-07T19:10:00Z",
  "performance": {
    "sequential_read": "120 MB/s",
    "sequential_write": "85 MB/s",
    "random_read_4k": "15000 IOPS",
    "random_write_4k": "8000 IOPS",
    "latency_avg": "2.5ms"
  },
  "health": {
    "temperature": "45°C",
    "wear_level": "2%",
    "error_count": 0
  }
}

CI/CD Integration

Jenkins Pipeline

pipeline {
    agent any
    stages {
        stage('SSD Tests') {
            steps {
                sh './ssd-test-suite.sh all --output xml'
                publishTestResults testResultsPattern: 'ssd-test-results.xml'
            }
        }
    }
}

GitHub Actions

name: SSD Tests
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Run SSD Tests
        run: ./ssd-test-suite.sh all --output json

Monitoring Integration

Prometheus-Metriken

# Metriken exportieren
./ssd-test-suite.sh --prometheus-metrics

# Grafana-Dashboard
# Siehe examples/monitoring/grafana-dashboard.json

Alerting

# Performance-Alerts
if [ $READ_SPEED -lt 50 ]; then
    alert "SSD Read Performance below threshold"
fi

# Health-Alerts
if [ $ERROR_COUNT -gt 0 ]; then
    alert "SSD Errors detected"
fi

Troubleshooting

Häufige Test-Fehler

  1. T01 Failed: USB-Verbindung prüfen, Treiber aktualisieren
  2. T04/T05 Slow: SSD-Health prüfen, USB-Port wechseln
  3. T08 Failed: SMB-Packages installieren, Firewall prüfen

Debug-Modus

# Erweiterte Diagnose
./ssd-test-suite.sh all --debug --verbose

# Test-Logs analysieren
tail -f /var/log/ssd-test.log

Best Practices

Produktionsumgebung

  1. Regelmäßige Tests (täglich/wöchentlich) einrichten
  2. Performance-Baselines etablieren und überwachen
  3. Test-Ergebnisse archivieren für Trend-Analyse
  4. Automatische Alerts bei Test-Fehlern konfigurieren

Entwicklungsumgebung

  1. Quick-Tests vor Code-Changes ausführen
  2. Comprehensive-Tests vor Releases durchführen
  3. Benchmark-Vergleiche für Performance-Regression
  4. Test-Coverage für alle SSD-Typen sicherstellen

Changelog

Version 0.1.0

  • 11 umfassende Test-Kategorien
  • Performance-Benchmark Integration
  • SMB-Bereitschaftsprüfung
  • CI/CD Pipeline Support
  • Prometheus-Metriken Export