Sem II (Program I) - N1 Flashcards
Was sind manuelle Tests und wann könnten sie eingesetzt werden?
Manuelle Tests sind solche, bei denen der Programmierer die Ausführung und die Überprüfung der Ergebnisse manuell durchführt. Sie eignen sich besonders für einmalige, spezifische Testfälle oder für Testszenarien, bei denen eine automatisierte Prüfung schwierig ist.
Was ist die “Class Under Test” (CUT) in der modellbasierten Entwicklung?
Тестируемый класс” обозначает класс, который проверяется в рамках модульных тестов.
Was bedeuten die Farben in der JUnit-Testausgabe?
Ein roter Balken bedeutet, dass der Test fehlgeschlagen ist, während ein grüner Balken anzeigt, dass der Test bestanden wurde.
Was überprüft der folgende Unit-Test?
@Test public void testGetKontostand() { Konto ko = new Konto(); assertTrue(ko.getKontostand() == 0f); }
Dieser Test überprüft, ob der Anfangskontostand eines neuen Kontos tatsächlich 0 ist. Es handelt sich um einen einfachen Test, der sicherstellt, dass das Konto korrekt initialisiert wurde.
Was bedeutet die Annotation @Test in einer JUnit-Testklasse?
Die Annotation @Test kennzeichnet eine Methode als Testfall. Diese Methode wird von JUnit ausgeführt, um zu überprüfen, ob eine bestimmte Bedingung erfüllt ist.
Was ist der Zweck der Methode assertTrue() in JUnit?
verwendet, um zu prüfen, ob eine gegebene Bedingung wahr ist. Ist sie nicht wahr, schlägt der Test fehl.
Wann verwendet man Test Driven Development (TDD)?
TDD wird eingesetzt, bevor der eigentliche Code geschrieben wird. Man entwickelt zuerst Tests für die gewünschten Funktionalitäten und schreibt dann den Code, um die Tests zu bestehen.
Wie kann man negative Tests mit JUnit durchführen, um Fehlersituationen abzudecken?
Negative Tests überprüfen, ob die Software erwartungsgemäß reagiert, wenn unerwartete oder fehlerhafte Eingaben auftreten. In JUnit kann dies durch die Verwendung von assertThrows() erreicht werden, um sicherzustellen, dass eine bestimmte Ausnahme geworfen wird.
Wie kann man sicherstellen, dass eine Methode explizit fehlschlägt?
Eine Methode kann absichtlich durch fail(“Nachricht”) zum Fehlschlagen gebracht werden, wenn bestimmte Bedingungen im Code nicht erfüllt sind. Dies ist nützlich, um festzustellen, ob der Code eine spezifische Ausführung erreicht.
Was bedeutet “modellbasierte Entwicklung” im Kontext des Testens?
Modellbasierte Entwicklung bedeutet, dass Softwareentwicklung und -tests auf Grundlage eines Modells durchgeführt werden. Dieses Modell beschreibt die zu testenden Funktionalitäten, zum Beispiel durch Klassen, Methoden und deren erwartetes Verhalten.
Warum ist es wichtig, die JUnit-Libs zum Build-Pfad hinzuzufügen?
Die JUnit-Libs müssen zum Build-Pfad hinzugefügt werden, damit die JUnit-Framework-Funktionen im Projekt verfügbar sind und die Testklassen korrekt ausgeführt werden können.
Was sind die wesentlichen Merkmale von Software-Qualität gemäß ISO 9126?
Software-Qualität umfasst Funktionalität, Zuverlässigkeit, Effizienz, Benutzbarkeit, Änderbarkeit und Übertragbarkeit.
Wie erreicht man eine hohe Software-Qualität?
— Trennung von Anwendungs- und Testklassen für modularen Aufbau.
— Kapselung von Instanz- und Klassenvariablen (private).
— „Do One Thing“-Prinzip: Methoden sollen nur eine Aufgabe erfüllen.
— Vermeidung von „Magic Numbers“: Stattdessen Konstanten verwenden.
— Defensive Programmierung: Fehler antizipieren und behandeln.
— Klare Namenskonventionen und Formatierung.
Was versteht man unter „defensiver Implementierung“ in der Softwareentwicklung?
Defensive Implementierung bedeutet, potenzielle Fehlerfälle vorwegzunehmen und angemessen darauf zu reagieren, z.B. durch Ankündigung und Behandlung von Ausnahmen (Exceptions) oder Rückgabe von Fehlercodes.
Welche Vorteile bietet die Verwendung von Unit-Tests?
Unit-Tests helfen dabei, die Funktionalität der Software zu überprüfen und Fehler frühzeitig zu erkennen.
Warum sollte eine Methode nur eine Aufgabe erledigen?
Eine Methode, die nur eine Aufgabe erfüllt, ist leichter zu verstehen, zu ändern und zu testen
Welche Kosten entstehen durch Fehlerbehebung in verschiedenen Phasen des Software-Entwicklungsprozesses?
Die Kosten zur Behebung von Fehlern steigen, je später sie im Entwicklungsprozess entdeckt werden. Fehler, die erst im Betrieb gefunden werden, sind in der Regel am teuersten zu beheben.
Kann in Java eine Klassenmethode mit objekt.methode() aufgerufen werden?
Nein, Klassenmethoden sollten mit Klasse.methode() aufgerufen werden. Es ist zwar technisch möglich, sie mit objekt.methode() aufzurufen, aber das ist nicht best practice.
Welche Testfälle sollten beim Testen von Software berücksichtigt werden?
Normalfall: Die üblichen(Обычные), erwarteten Eingaben.
Grenzfall: Testen von Eingaben an den Rändern der zulässigen Wertebereiche.
Bester Fall: Günstigster Fall für die Eingaben (z.B. bereits sortiertes Array).
Schlechtester Fall: Ungünstigster Fall für die Eingaben (z.B. umgekehrt sortiertes Array).
Unzulässige Eingaben: Absichtliche Fehlereingaben, um die Robustheit zu prüfen.
Ressourcen-Tests: Testen der Leistungsfähigkeit (z.B. sehr lange Arrays sortieren).
Wie sieht der typische Ablauf eines TDD-Zyklus aus?
Test schreiben: Einen Unit-Test für eine noch zu implementierende Funktion erstellen.
Implementieren: Minimalen Code schreiben, um den Test bestehen zu lassen.
Refaktorisieren: Den Code verbessern, ohne dass die Tests fehlschlagen.