Error Handling & Robustheit Test
Test 1: Ungültige API-Endpunkte
Test 2: Fehlende Daten
Test 3: Ungültiges JSON
Test 4: Netzwerkfehler Simulation
Test 5: XSS-Schutz
Test 6: Große Datenmengen
Test 7: Gleichzeitige Anfragen
Test 8: Frontend Error Handling
",
content: "
",
initials: "XS",
createdAt: Date.now()
}]
}
};
const response = await fetch('/api/manifest/sync', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(xssPayload)
});
const result = await response.json();
// Prüfen ob XSS-Code escaped wurde
if (result.success && !result.alert) {
document.getElementById('xssProtection').innerHTML = '✅ XSS-Schutz aktiv
';
addErrorResult('XSS-Schutz', true, 'XSS-Prevention funktioniert');
} else {
document.getElementById('xssProtection').innerHTML = '❌ XSS-Schutz unzureichend
';
addErrorResult('XSS-Schutz', false, 'XSS-Schutz unzureichend');
}
} catch (error) {
document.getElementById('xssProtection').innerHTML = `❌ Fehler: ${error.message}
`;
addErrorResult('XSS-Schutz', false, error.message);
}
}
async function testLargeData() {
try {
// Erstelle große Datenmenge (1MB)
const largeContent = 'A'.repeat(1024 * 1024);
const largeData = {
token: "test",
data: {
posts: [{
id: "large_data_test",
title: "Large Data Test",
content: largeContent,
initials: "LD",
createdAt: Date.now()
}]
}
};
const response = await fetch('/api/manifest/sync', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(largeData)
});
const result = await response.json();
if (response.status === 200) {
document.getElementById('largeData').innerHTML = '✅ Große Daten verarbeitet
';
addErrorResult('Große Daten', true, 'System kann große Datenmengen verarbeiten');
} else {
throw new Error('Große Daten nicht verarbeitet');
}
} catch (error) {
document.getElementById('largeData').innerHTML = `❌ Fehler bei großen Daten: ${error.message}
`;
addErrorResult('Große Daten', false, error.message);
}
}
async function testConcurrentRequests() {
try {
const requests = [];
const results = [];
// Sende 10 gleichzeitige Anfragen
for (let i = 0; i < 10; i++) {
const requestData = {
token: "test_concurrent_" + i,
data: {
posts: [{
id: "concurrent_test_" + i + "_" + Date.now(),
title: "Concurrent Test " + i,
content: "Gleichzeitige Anfrage " + i,
initials: "CT",
createdAt: Date.now()
}]
}
};
requests.push(
fetch('/api/manifest/sync', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(requestData)
}).then(response => response.json())
);
}
const concurrentResults = await Promise.allSettled(requests);
const successful = concurrentResults.filter(r => r.status === 'fulfilled' && r.value.success).length;
if (successful >= 8) { // 80% Erfolgsrate
document.getElementById('concurrentRequests').innerHTML = `✅ ${successful}/10 Anfragen erfolgreich
`;
addErrorResult('Gleichzeitige Anfragen', true, `${successful}/10 erfolgreich`);
} else {
document.getElementById('concurrentRequests').innerHTML = `⚠️ Nur ${successful}/10 Anfragen erfolgreich
`;
addErrorResult('Gleichzeitige Anfragen', false, `Nur ${successful}/10 erfolgreich`);
}
} catch (error) {
document.getElementById('concurrentRequests').innerHTML = `❌ Fehler: ${error.message}
`;
addErrorResult('Gleichzeitige Anfragen', false, error.message);
}
}
function testFrontendErrors() {
try {
// Test 1: Undefined Variable
let undefinedVar;
try {
console.log(undefinedVar.someProperty);
} catch (e) {
console.log('Undefined Variable Error gefangen:', e.message);
}
// Test 2: Null Reference
try {
const nullObj = null;
console.log(nullObj.someProperty);
} catch (e) {
console.log('Null Reference Error gefangen:', e.message);
}
// Test 3: JSON Parse Error
try {
JSON.parse('invalid json');
} catch (e) {
console.log('JSON Parse Error gefangen:', e.message);
}
// Test 4: Type Error
try {
const num = 123;
num.toUpperCase();
} catch (e) {
console.log('Type Error gefangen:', e.message);
}
document.getElementById('frontendErrors').innerHTML = '✅ Frontend Error Handling funktioniert
';
addErrorResult('Frontend Errors', true, 'Frontend Error Handling funktioniert');
} catch (error) {
document.getElementById('frontendErrors').innerHTML = `❌ Frontend Error Handling fehlerhaft: ${error.message}
`;
addErrorResult('Frontend Errors', false, error.message);
}
}
// Automatischer Start bei Seitenaufruf
window.onload = function() {
console.log('Error Handling Test gestartet');
};