Zum Inhalt

Lernziele Modul 450 Applikation testen

Allgemeines zu Lernkontrollen:

  • Es geht dabei auch um ein speditives, zielgerichtetes Anwenden innerhalb eines definierten Zeitrahmens.
  • Hilfsmittel:
    • Je nach Prüfung: -- keine -- oder Übungen, persönliche Notizen, Internetseiten , wie sie im Unterricht verwendet wurden
  • Sie dürfen keine fremden oder gemeinsam erarbeitete Lösungen oder auch nur Teile davon verwenden.
  • Und Sie dürfen Ihre Lösung oder Teile davon niemandem weitergeben.

Testarten

A, HZ1, HZ3

  • Ich kann die verschiedenen Testarten (Unit, Integration, System, E2E) unterscheiden und deren Ziele und Einsatzgebiete erklären.
  • Ich kann die Testarten in der Testpyramide einordnen und deren Verhältnis zueinander erklären.
  • Ich kann die Rolle der Testarten im Softwareentwicklungsprozess erklären.
  • Ich kann typische Beispiele für jede Testart nennen und deren Umsetzung beschreiben.
  • Ich kann Black-Box-Tests und White-Box-Tests unterscheiden und deren Einsatzgebiete erklären.

Vorgehensmodelle

A, HZ1, HZ2, HZ3

  • Ich kann verschiedene Softwareentwicklungsprozesse (z.B. Wasserfall, V-Modell, Agile) nennen und deren Hauptmerkmale beschreiben.
  • Ich kann erklären, wie und wann verschiedene Testarten in den jeweiligen Entwicklungsprozessen eingesetzt werden.
  • Ich kann die Bedeutung von Tests in agilen Entwicklungsprozessen erläutern.

Test Prozess Planen

A, B, HZ1, HZ2, HZ3

  • Test-Prozess-Modelle

    • Ich kann erklären, was ein Test-Prozess-Modelle ist.
    • Ich kann verschiedene Test-Prozess-Modelle benennen und deren Unterschiede erläutern.
    • Beispiele: ISO/IEC/IEEE 29119, ISTQB Test Process Model, Testquadranten von Crispin & Gregory
    • Ich kann die Rolle von Test-Prozess-Modellen im Testmanagement und in der Teststrategie erklären.
  • Teststrategie

    • Ich kann den Zweck und Inhalt einer Teststrategie erklären.
    • Ich kann den Aufbau einer Teststrategie beschreiben.
    • Ich kann die Beziehung zwischen Teststrategie, Testkonzept und Testplan erläutern.
    • Ich kann eine Teststrategie entwerfen.
  • Testkonzept

    • Ich kann den Zweck und Inhalt eines Testkonzeptes erklären.
    • Ich kann den Aufbau eines Testkonzeptes beschreiben.
    • Ich kann ein Testkonzept entwerfen.

Unit Testing

B, C, DHZ5, HZ6, HZ7

(Hinweis: Unittest wurden in einigen Modulen zuvor bereits behandelt. zBsp Modul 320, Modul 426)

  • Ich kann den Zweck und die Bedeutung von Unit Tests im Softwareentwicklungsprozess erklären.
  • Ich kann die Merkmale eines guten Unit Tests beschreiben.
  • Ich kann Unit Tests mit JUnit in Java erstellen und ausführen.
  • Ich kann Testfälle für Unit Tests entwerfen und implementieren.
  • Ich kann Testabdeckungsmetriken (z.B. Anweisungs-, Zweig- und Bedingungsabdeckung) erklären und anwenden.
  • Ich kann Testergebnisse interpretieren und Korrekturmassnahmen vorschlagen.

Mocking

B, C, D, HZ5, HZ6, HZ7

  • Ich kann die Unterschiede von Dummy, Fake, Stub, Mock erklären.
  • Ich kann Gründe für und das Prinzip des Mocks erklären und anhand eines Beispiels aufzeigen.
  • Ich kann erklären, wie das Design die Möglichkeiten für das Anwenden eines Mocks beeinflusst und Vorschläge dazu machen.
  • Ich kann erklären, wieso und wie Mocking bei Unit Tests verwendet wird und welche Rolle das Mock-Objekt dabei hat.
  • Ich kann erklären was Mockito ist.
  • Ich kann in einem Maven Projekt mit JUnit und Mockito Mocking, Mock Objekte für Unit Tests anwenden und die Schritte der Anwendung erklären.
  • Ich kann systematisch und begründet Unit-Tests entwerfen, die Mockito verwenden.
  • Ich kann einen Unittests mit Mockito mit dem Debugger analysieren und erklären, was passiert.
  • Ich kann das Prinzip vom Mocken auf Situationen mit komplexeren Datenstrukturen übertragen. (ZBsp Mock einer Datenbank mit mehreren Entitäten)
  • Ich kann Unittests mit Unterstützung eines Mocks für komplexeren Datenstrukturen erstellen. (ZBsp Mock einer Datenbank mit mehreren Entitäten.) Ich kann im Zusammenhang mit Mocks Begriffe wie injection, @Mock, @InjectMocks … erklären.
  • Ich kann einen bestehenden Unittest analysieren, erklären, Verbesserungen vorschlagen und anwenden.
  • Ich kann Testergebnisse interpretieren und Korrekturmassnahmen vorschlagen.
  • Ich kann erklären, was beim Mocken in Java passiert. Was diese Begriffe damit zutun haben.
    Bsp. Dice.class, Byte Buddy, Reflection, Instrumentierte Implementierung, Methodeninterzeption, Stubbing, Dice dice = mock(Dice.class); when(dice.roll()).thenReturn(3).thenReturn(4);

E2E Tests

B, C, D, HZ5, HZ6, HZ7

  • Ich kann den Zweck und die Bedeutung von End-to-End Tests im Softwareentwicklungsprozess erklären.
  • Ich kann Beispiele für paraktische Anwendungsfälle von E2E-Tests nennen.
  • Ich kan die Konzepte für E2E-Tests (WebDriver-basiert, DevTools/Engine-basiert, In-Browser-basiert) erklären und deren Vor- und Nachteile beschreiben.
  • Ich kann E2E-Tests ZBsp mit Cypress erstellen, ausführen und erklären.
  • Ich kann Testergebnisse interpretieren und Korrekturmassnahmen vorschlagen.

Testautomatisierung

HZ5, HZ6, HZ7

  • Ich kann die Bedeutung von Testautomatisierung für die Softwarequalität und den Entwicklungsprozess erklären.
  • Ich kann Unit Tests in den Entwicklungsprozess integrieren (z.B. Test-Driven Development, Continuous Integration).
  • Ich kann Es2E-Tests automatisieren und in den Entwicklungsprozess integrieren.
  • Ich kann Testergebnisse interpretieren und Korrekturmassnahmen vorschlagen.

Code-Review und Verbesserung

D, HZ4, HZ7

  • Ich kann die Bedeutung Code Reviews erklären.
  • Codequality, Maintainability, Bug Detection, Knowledge Sharing...
  • Ich kann ein Code Review Ablaufe erklären, planen und vorbereiten.
  • Ich kann Code Reviews durchführen und konstruktives Feedback geben.
  • Ich kann Code Reviews annehmen und konstruktives Feedback umsetzen.
  • Ich kann Codequalität messen und bewerten (z.B. Code Metriken, statische Codeanalyse).
  • Ich kann Verbesserungspotenziale im Code identifizieren und entsprechende Massnahmen vorschlagen.
  • Ich kann Best Practices für sauberen, wartbaren und testbaren Code anwenden.