6.1 Testen von Webanwendungen
Welche Komponenten sind typischerweise in Web-Applikationen enthalten und wie arbeiten sie zusammen?
Web-Applikationen bestehen aus HTML-Seiten, CSS-Stylesheets und JavaScript-Dateien. Diese Komponenten sind stark voneinander abhängig und müssen harmonisch zusammenarbeiten, um Fehler zu vermeiden und ein optimales Benutzererlebnis zu gewährleisten.
Was versteht man unter einem Release in der Software-Entwicklung?
Ein Release bezeichnet den spezifischen Stand einer Software, der an die Nutzer weitergegeben wird. Dies geschieht oft nach einer kontinuierlichen Weiterentwicklung, wobei nur bestimmte Stände der Software freigegeben werden.
Warum ist automatisiertes Testen in der agilen Software-Entwicklung besonders wichtig?
Automatisiertes Testen ist wichtig, um die Stabilität der Web-Applikationen trotz der häufigen Releases und kontinuierlichen Änderungen zu gewährleisten. Es ermöglicht das effiziente Testen einer großen Anzahl von Releases, die manuell nicht alle überprüft werden könnten.
Welche Arten von Tests werden für Web-Applikationen durchgeführt?
Funktionstest: Überprüft, ob die Anwendung gemäß den Anforderungen funktioniert.
Regressionstest: Testet, ob neue Fehler nach Änderungen oder Bugfixes entstanden sind.
Usability-Test: Bewertet die Benutzerfreundlichkeit durch Beobachtung von Nutzern.
Kompatibilitätstest: Prüft die Funktionalität auf verschiedenen Endgeräten.
Performance-Test: Testet die Leistung und Stabilität der Applikation lokal.
Last-Test: Bewertet die Performance unter großer Server-Belastung.
Unterbrechungsprüfung: Überprüft, wie die App auf Unterbrechungen reagiert.
User-Interface-Test: Stellt sicher, dass die Benutzeroberfläche nahtlos funktioniert.
Lokalisationstest: Prüft die Genauigkeit von Übersetzungen.
Sicherheitstest: Bewertet den Schutz vor Sicherheitsbedrohungen.
Was sind Unit-Tests und warum sind sie wichtig?
Unit-Tests sind Tests der kleinsten funktionalen Einheiten (Units) einer Anwendung. Sie sind wichtig, um die Rückwärtskompatibilität und Stabilität der Web-Applikation zu gewährleisten, insbesondere nach Änderungen am Code.
Wie wird „Mocking“ im Kontext von Unit-Tests verwendet?
„Mocking“ wird verwendet, um Schnittstellen, die noch nicht verfügbar sind oder für Tests ungeeignet sind, zu simulieren. Dies ermöglicht das Testen der Anwendung gemäß den Anforderungen, ohne auf die tatsächliche Implementierung der Schnittstellen angewiesen zu sein.
Nenne einige beliebte JavaScript-Test-Frameworks und ihre Hauptmerkmale.
Mocha: Marktführer im Testbereich für JavaScript.
JEST: Von Facebook entwickelt, beliebt für seine einfache Konfiguration.
Jasmine: Speziell für das Frontend, ermöglicht „Behavior Driven Development“.
Selenium: Fernsteuerung für Browser, ideal für das Testen von Frontends durch Simulation von User-Eingaben.
Was ist testgetriebene Entwicklung (TDD) und welche Vorteile bietet sie?
Testgetriebene Entwicklung (TDD) ist ein Paradigma, bei dem die Tests zuerst erstellt werden, bevor der eigentliche Programmcode entwickelt wird. Vorteile sind die Vermeidung unnötiger Code-Entwicklung, die Möglichkeit, den Fortschritt anhand der Testergebnisse zu messen, und eine bessere Code-Qualität durch kontinuierliches Refactoring.
Was ist der Unterschied zwischen testgetriebener Entwicklung (TDD) und verhaltensgetriebener Entwicklung (BDD)?
TDD (Test-Driven Development): Tests werden vor dem Code geschrieben, um die Funktionalität zu gewährleisten.
BDD (Behavior-Driven Development): Anwendungsfälle werden in einer verständlichen, aber formalen Sprache definiert, die für alle Beteiligten verständlich ist, und dann in automatisierte Tests umgesetzt.
6.2 Grundlegende Sicherheitskonzepte und -prinzipien
Welchen wirtschaftlichen Schaden verursachten Cyberangriffe 2020 in Deutschland?
2020 betrug der wirtschaftliche Schaden durch Cyberangriffe in Deutschland 223 Milliarden Euro (Holthusen, 2021).
Was ist das Open Web Application Security Project (OWASP) und welche Rolle spielt es bei der Web-Sicherheit?
Das Open Web Application Security Project (OWASP) überprüft regelmäßig Websites und Web-Apps auf Sicherheitslücken und veröffentlicht Berichte sowie Empfehlungen, um die Web-Sicherheit zu verbessern.
Nenne mindestens drei der zehn kritischsten Sicherheitslücken laut OWASP und beschreibe sie kurz.
Defekte Zugangskontrolle: Ressourcen dürfen nicht für alle Benutzer zugänglich sein; es muss überprüft werden, welche Benutzer Zugriff auf welche Ressourcen haben.
Kryptografische Fehler: Zu viele Informationen über die Website oder unzureichende Verschlüsselung können Angreifern nützliche Informationen liefern.
Code-Injektion: Manipulierte Eingaben können dazu führen, dass unerwünschter Code auf der Website ausgeführt wird, wie bei Cross-Site-Scripting (XSS).
Was ist eine häufige Sicherheitslücke im Design von Web-Applikationen?
Eine häufige Sicherheitslücke im Design ist ein unsicheres Design, bei dem Sicherheitsaspekte nicht ausreichend berücksichtigt werden, z. B. indem interne und externe Datenverarbeitung nicht ausreichend getrennt wird.
Warum sind anfällige und veraltete Komponenten ein Sicherheitsrisiko?
Anfällige und veraltete Komponenten können Sicherheitslücken enthalten, die ausgenutzt werden können. Regelmäßige Updates sind notwendig, um diese Sicherheitsrisiken zu minimieren.
Was versteht man unter Cross-Site-Scripting (XSS) und wie kann es verhindert werden?
Cross-Site-Scripting (XSS) ist eine Sicherheitslücke, bei der Angreifer eigenen Code (z.B. JavaScript) in eine Webseite injizieren können. Verhindert werden kann dies durch die sichere Verarbeitung und Ausgabe von Benutzereingaben, z.B. durch Quoting-Funktionen oder durch die Verwendung von innerText statt innerHTML.
innerText
innerHTML
Welche Best Practices sollte man für die Sicherheit von Web-Applikationen beachten?
Korrekte Konfiguration des Webservers: Sicherstellen, dass der Webserver richtig konfiguriert ist.
Nutzung einer Web Application Firewall: Einsatz einer speziellen Firewall, um viele Standard-Attacken abzuwehren.
HTTPS statt HTTP: Verwendung von HTTPS, um die Übertragung von Daten, einschließlich Passwörtern, zu verschlüsseln.
DNS absichern: Schutz des Domain Name Systems (DNS) durch Mechanismen wie DNSSEC, um Umleitungen und Angriffe zu verhindern.
Zuletzt geändertvor 2 Monaten