Prüfung 2: Praxis
Teststufen, Testarten, Testen nach Weiterentwicklung
- Sie können die vier Teststufen Komponententest, Integrationstest, Systemtest und Abnahmetest voneinander abgrenzen und zu jeder Testobjekte, Testziele, Testmethoden und Verantwortlichkeiten benennen.
- Sie können begründen, warum trotz funktionierender Tests auf einer Stufe weitere Tests auf einer höheren Stufe nötig sind.
- Sie können funktionale von nicht funktionalen und anforderungsbezogene von strukturbezogenen Tests unterscheiden und Testziele der jeweiligen Testarten benennen.
- Sie können die Begriffe Softwarepflege und Softwarewartung definieren, voneinander abgrenzen und erklären, warum Software überhaupt gepflegt und gewartet werden muss.
- Sie können die Begriffe Regressionsfehler und Regressionstest sowie eine Massnahme zu deren Verhinderung erklären.
Unterlagen
Statischer Test
- Sie können den statischen vom dynamischen Test anhand der Aspekte Testobjekte, Testvorgehen, Testzeitpunkt und Testziele unterscheiden.
- Sie können die Vorteile von Reviews auf Arbeitsergebnisse und Entwicklungsprozess erklären.
- Sie können den Ablauf, Rollen und Arten von Reviews erklären.
- Sie können die Grenzen der statischen gegenüber der dynamischen Prüfung aufzeigen.
Unterlagen
Dynamischer Test
- Sie können zwischen Blackbox- und Whitebox-Testverfahren unterscheiden, deren Unterschiede benennen und die Überdeckungsgrade der einzelnen Verfahren bestimmen.
- Sie können den Begriff Äquivalenzklasse definieren, Äquivalenzklassen (gültiger und ungültiger Werte) für eine gegebene Problemstellung bilden, daraus systematisch (positive und negative) Testfälle herleiten und diese mithilfe einer Grenzwertanalyse sinnvoll ergänzen.
- Sie können zustandsbasierte Testfälle anhand eines Zustandsautomaten oder einer Zustandstabelle herleiten.
- Sie können anhand gegebener Bedingungen eine Entscheidungstabelle aufstellen und daraus positive sowie negative Testfälle herleiten.
- Sie können Testfälle systematisch anhand des zu testenden Quellcodes und der relevanten Metrik (geforderte Anweisungs- oder Zweigüberdeckung) ermitteln.
- Sie können den Zusammenhang und Unterschied zwischen Anweisungs- und Zweigüberdeckung mithilfe eines Flussdiagramms erklären.
- Sie können den Nutzen und das Vorgehen der erfahrungsbasierten Testfallermittlung erklären.
Unterlagen
Test Doubles
- Sie können mögliche Probleme erklären, die beim Testen einer Klasse mitsamt ihrer Abhängigkeiten auftreten können, und diese Probleme mithilfe von Test Doubles lösen.
- Sie können das Konzept der Dependency Injection erklären und es auf gegebenen Programmcode (gekoppelte Klassen) anwenden.
- Sie können verschiedene Arten von Test Doubles (Dummy, Fake, Stub, Mock, Spy) voneinander unterscheiden, die Rahmenbedingungen für ihren Einsatz bestimmen und Test Doubles für eine gegebene Problemstellung implementieren.
- Sie können den Unterschied zwischen Aggregation und Komposition und die Konsequenz davon auf die Testbarkeit erklären.
Unterlagen
Separation of Concerns
- Sie können das Konzept der Separation of Concerns (SoC) und die Auswirkungen davon auf die Testbarkeit von Programmcode erklären.
- Sie können gegebenen Programmcode auf die Separation of Concerns analysieren und Verbesserungsvorschläge dafür ausdenken und umsetzen.
Unterlagen
Debugging
- Sie können die Vor- und Nachteile bei der Arbeit mit dem Debugger benennen.
- Sie können Debugging-Techniken und -Hilfsmittel erklären und anwenden.
- Sie können nachvollziehen, warum ein Debugger nicht das erste sondern eher das letzte Mittel bei der Fehlerbehebung sein sollte.
- Sie können erklären, warum ein Fehler zuerst zuverlässig nachvollziehbar gemacht werden soll, bevor man diesen behebt.
Unterlagen
Testwerkzeuge & Schnittstellentests
- Sie können die Werkzeuge
curl,jqundbashfür einfache Schnittstellentests verwenden und erklären, welches Werkzeug welchen Zweck erfüllt.
Unterlagen
Performance
nur für die Klasse INA23a relevant
- Sie können die Grundsätze der Performance-Optimierung (wann und wie) erklären und begründen.
- Sie können erklären, welche Rolle Zeitmessungen, Profiling, Compiler-Optimierungen und Regressionstests bei der Performance-Optimierung spielen.