Dieser Kurs führt Sie in die modernsten Techniken der automatisierten Analyse ein. Die automatisierte Analyse umfasst sowohl Ansätze zur automatischen Generierung einer sehr großen Anzahl von Tests, um zu prüfen, ob Programme die Anforderungen erfüllen, als auch Mittel, mit denen man *beweisen* kann, dass Software die Anforderungen erfüllt und frei von bestimmten, häufig auftretenden Fehlern ist, wie z.B. Divide-by-Zero, Overflow/Underflow, Deadlock, Race-Condition-Freiheit, Buffer/Array Overflow, nicht abgefangene Exceptions und verschiedene andere häufig auftretende Fehler, die zu Programmfehlern oder Sicherheitsproblemen führen können. Der Lernende wird mit der grundlegenden Theorie und den Anwendungen solcher Ansätze vertraut gemacht und wendet eine Reihe von automatisierten Analysetechniken auf Beispielprogramme an.
Nach Abschluss dieses Kurses ist der Teilnehmer in der Lage: - die Grundlagen der automatisierten Verifikation zu verstehen: Randomisierung und symbolische Darstellungen - die Stärken und Schwächen von Zufallstests, symbolischer Analyse, statischer Analyse und Model Checking zu unterscheiden - eine Vielzahl moderner statischer Analyse- und automatisierter Testwerkzeuge für die automatisierte Verifikation zu verwenden - ausführbare Anforderungen als Orakel zu erstellen, das für automatisierte Tests und symbolische Analysen geeignet ist - zu verstehen, wie die Wahl des Orakels die Fehlersuche für automatisierte Analysestrategien beeinflusst.
- Verwenden Sie automatisierte Tests, um eine vollständige Mutationsabdeckung zu erreichen - Erstellen Sie einen Testplan, der sowohl manuell geschriebene Tests als auch automatisierte Tests verwendet, um die Strenge zu maximieren, den Aufwand und die Zeit zu minimieren und die Testkosten zu minimieren. Dieser Kurs richtet sich an Teilnehmer, die die Prinzipien der Automatisierung und die Anwendung von Werkzeugen für die Analyse und das Testen von Software verstehen möchten. Dieses Wissen ist für verschiedene typische Rollen von Vorteil: Software-Ingenieur, Software-Ingenieur im Test, Testautomatisierungs-Ingenieur, DevOps-Ingenieur, Software-Entwickler, Programmierer, Computer-Enthusiast. Wir erwarten, dass Sie mit dem Lebenszyklus der Softwareentwicklung vertraut sind und ein Verständnis für die Grundlagen des Softwaretestens haben, ähnlich dem, was in den Kursen Einführung in das Softwaretesten und Black-Box- und White-Box-Testen vermittelt wird.
Vertrautheit mit einer objektorientierten Sprache wie Java oder die Fähigkeit, die Java-Syntax schnell zu erfassen, um Code zu schreiben und zu ändern, sowie die Bereitschaft, Tools und IDEs zu verwenden, werden vorausgesetzt.