### Kritik - `git status` zeigt mir einen groben Zustand meines Git-Repositorys an. Manchmal werden Dateien oder Verzeichnisse dort rot oder grün angezeigt. Die grünen Dateien verschwinden von der Ausgabe, wenn ich `git commit` ausführe. Rote Dateien werden mit `git add` grün.
### Kritik - `git status` zeigt mir einen groben Zustand meines Git-Repositorys an. Manchmal werden Dateien oder Verzeichnisse dort rot oder grün angezeigt. Die grünen Dateien verschwinden von der Ausgabe, wenn ich `git commit` ausführe. Rote Dateien werden mit `git add` grün.
### Mitteilung an die Dozierenden -
## Uebung 01 (31.10.2022)
## Uebung 01 (31.10.2022)
- Ich habe mein erstes Git-Repository auf Gitea erstellt.
- Ich habe mein erstes Git-Repository auf Gitea erstellt.
@ -31,10 +29,6 @@
### Wiederholung -
### Wiederholung -
### Kritik -
### Mitteilung an die Dozierenden -
## Uebung 02 (07.11.2022)
## Uebung 02 (07.11.2022)
Programmierparadigmen
Programmierparadigmen
@ -57,10 +51,6 @@
### Wiederholung -
### Wiederholung -
### Kritik -
### Mitteilung an die Dozierenden -
## Uebung 03 (14.11.2022)
## Uebung 03 (14.11.2022)
### Übung1.java
### Übung1.java
@ -148,9 +138,6 @@ after step over
### Wiederholung -
### Wiederholung -
### Kritik -
### Mitteilung an die Dozierenden -
## Uebung 04 (21.11.2022)
## Uebung 04 (21.11.2022)
@ -183,9 +170,6 @@ after step over
### Wiederholung - Warum SCM ideal für die Softwareentwicklung ist. Was sind remote und lokale Repositories und wie können sie auf unterschiedliche Weise vorteilhaft genutzt werden.
### Wiederholung - Warum SCM ideal für die Softwareentwicklung ist. Was sind remote und lokale Repositories und wie können sie auf unterschiedliche Weise vorteilhaft genutzt werden.
### Kritik -
### Mitteilung an die Dozierenden -
## Uebung 05 (28.11.2022)
## Uebung 05 (28.11.2022)
@ -260,11 +244,8 @@ after step over
### Wiederholung -
### Wiederholung -
### Kritik -
### Mitteilung an die Dozierenden -
## Uebung 06 (02.12.2022)
## Uebung 06 (05.12.2022)
**Kooperation Projekt Management**
**Kooperation Projekt Management**
@ -295,10 +276,93 @@ after step over
### Wiederholung -
### Wiederholung -
### Kritik -
### Mitteilung an die Dozierenden -
## Uebung 07 (12.12.2022)
**Testen Übung**
- **Was ist ein Test?** _Ein Test ist der Prozess der Ausführung eines Programms, um Fehler zu finden. Damit unsere Software gut funktioniert, sollte sie fehlerfrei sein. Wenn das Testen erfolgreich durchgeführt wird, werden alle Fehler in der Software beseitigt._
- **Was ist ein Fehler?** _Fehler sind die Probleme oder die Fehler, die im Programm auftreten, die das Verhalten des Programms anormal macht, und erfahrene Entwickler können diese Fehler auch machen. Programmierfehler sind auch als Bugs oder Fehler bekannt, und der Prozess der Beseitigung dieser Fehler ist als Debugging bekannt._
- **Welche Ziele haben Tests?** _Die Hauptziele von Softwaretests sind wie folgt: Auffinden von Fehlern, die vom Programmierer bei der Entwicklung der Software verursacht werden können. Vertrauen in das Qualitätsniveau zu gewinnen und Informationen darüber zu liefern. Fehler zu vermeiden._
- **Nennen Sie die Bestandteile eines Tests.** _Die Bestandteile eines Tests sind Stichprobe, Testfälle, Testdaten, Testobjekt, Testumgebung, Testziel und Soll-/Ist- Wertvergleich._
- **Welche Bedeutung hat die Testpyramide?** _Die Testpyramide, auch bekannt als Testautomatisierungspyramide, beschreibt im Wesentlichen die Testtypen, die die Entwicklungs- und QS-Teams in eine automatisierte Testsuite einbauen sollten. Außerdem legt sie die Reihenfolge und Häufigkeit solcher Bewertungen fest. Ziel ist es, schnelles Feedback zu geben, um sicherzustellen, dass Codeänderungen keine Auswirkungen auf bestehende Funktionen haben._
- **Beschreiben Sie ein Element des Testprozesses.** _Ein Testplan ist ein Plan, der die Teststrategien, die Ziele, den Zeitplan, die Schätzungen, die Fristen und die Ressourcen enthält, die für die Durchführung des Projekts erforderlich sind. Betrachten Sie ihn als einen Entwurf für die Durchführung der Tests, die erforderlich sind, um sicherzustellen, dass die Software korrekt funktioniert - kontrolliert von Testmanagern. Es wird eine Teststrategie geplant, die die Prioritäten, Entwurfsmethode, Testabdeckung, Testendekriterium und Testumgebung bestätigt._
- **Definieren Sie 5 Testfälle für eine Rechenoperation einer Taschenrechner-Anwendung.**
_Überprüfen Sie, ob alle arithmetischen Operationen (+, -, /, X, % usw.) ordnungsgemäß funktionieren.
Überprüfen Sie, ob die Summen- oder Gleichungstaste richtig funktioniert.
Überprüfen Sie, ob alle Zahlen richtig funktionieren (0-9)
Überprüfen Sie, ob frühere Berechnungen angezeigt werden können.
Überprüfen Sie, ob die "C"- oder Löschtaste alle eingegebenen Ziffern und Operationen löscht._
- **Definieren Sie 5 Testfälle für die Zeilenumbruch-Funktion einer Textverarbeitung.**
_Überprüfen Sie, ob die Zeilenumbruchfunktion den Text korrekt in die nächste Zeile umbricht, wenn eine Zeile die maximale Zeilenlänge überschreitet.
Überprüfen Sie, ob die Zeilenumbruchfunktion mehrere aufeinanderfolgende Leerzeichen korrekt verarbeitet und dabei sicherstellt, dass der Text an der richtigen Stelle umgebrochen wird und die zusätzlichen Leerzeichen nicht verloren gehen.
Überprüfen Sie, ob die Zeilenumbruchsfunktion Wörter, die länger als die maximale Zeilenlänge sind, korrekt behandelt und sicherstellt, dass das gesamte Wort in die nächste Zeile gesetzt wird.
Überprüfen Sie, ob die Zeilenumbruchfunktion Sonderzeichen wie Tabulatoren und Emojis korrekt verarbeitet, ohne sie über mehrere Zeilen zu verteilen.
Überprüfen Sie, ob die Zeilenumbruchsfunktion unterschiedliche Schriftgrößen und -stile korrekt verarbeitet, so dass die Zeilenumbrüche unabhängig von der Formatierung des Textes an der richtigen Stelle eingefügt werden._
- **Definieren Sie 5 Testfälle für Selbsteinschreibung bei horstl.**
_Überprüfen Sie, ob die Anmeldefunktion mit der richtigen Datenbank funktioniert, damit sich die Schüler anmelden können.
Überprüfen Sie, ob die Optionen des Startmenüs korrekt angezeigt werden und zu den richtigen Seiten führen.
Überprüfen Sie, ob die Studierenden ihre Kurspläne entsprechend den angemeldeten Kursen korrekt anzeigen lassen können.
Überprüfen Sie, ob die Studierenden ihre Noten entsprechend den abgelegten Prüfungen korrekt anzeigen können.
Überprüfen Sie, ob das System für Semestergebühren und Rückmeldung korrekt funktioniert._
- **Recherchieren Sie veröffentlichte Softwarefehler.** __
- **Handelte es sich dabei um latente, maskierte oder kaskadierte Fehler?** __
## SU 08 (14.12.2022)
### Lernziel - **Automatisiertes Testen von Software** - Motivation - Grundlagen - UnitTests - Anforderungen an zu testenden Code
### Erkenntnis -
- **Motivation:** Es gibt viele Probleme, die bei manuellen Tests auftreten können. Wiederholbarkeit von Problemen kann häufig vorkommen. Unterschiedliche Bedeutungen und Kontexte verschiedener Tester überschneiden sich und behindern die Testdurchführung. Das Testwissen der Tester spielt eine wichtige Rolle bei der korrekten Durchführung von Tests und der Vermeidung von weiteren Problemen. Unvollständige Testdokumentation, setzt implizites Wissen über den Betrieb der Anwendung voraus.
- **Grundlagen:** Die Tests müssen sich auf häufig wiederkehrende Fälle mit hoher Anzahl, hoher Kritikalität und hoher Stabilität beziehen. Beispiele für Tests sind Unit-Tests, Modultests, die Integrationstests und Regressionstests enthalten, und Anwendungstests, die Integrationstests, Regressionstests, Lasttests und Akzeptanztests enthalten.
- **UnitTests:** Unit-Tests werden in einem frühen Stadium des Entwicklungsprozesses durchgeführt. Sie haben ein einfaches API. Diese Tests sind im Vergleich zu anderen Units stabil gegenüber Änderungen. Unit-Tests zeigen, welche Anforderung nicht erfüllt ist, wo der Fehler besteht und unter welchen Bedingungen er auftritt. Unit-Tests prüfen die Geschäftslogik, Anwendungs-/Modultests prüfen die "Verdrahtung". Unit-Tests testen keinen Code. Sie prüfen Rückgabewerte und die Kommunikation mit anderen Einheiten des zu testenden Codes als Reaktion auf die übergebenen Parameter und/oder die Reaktionen der anderen Einheiten. Ein einzelner Unit-Test prüft genau eine Erwartung der Unit. Unit-Tests verhindern unerwünschte Änderungen.
- **Anforderungen an zu testenden Code:** Die Qualität des produktiven Codes beeinflusst die Qualität der Tests.Die wichtigsten "Clean Code"-Regeln sind _Separation of Concerns / Single Resposibility, Dependency inversion, Tell! Don't ask und Law of Demeter_. Schreibe immer einen sauberen Code. Konzentrieren sich auf die Konzepte des Gesetzes von Demeter und DRY.
### Wiederholung -
- Tests sind unerlässlich, um Schwachstellen aufzuzeigen, die Qualität zu erfassen, das Vertrauen zu stärken und die Grenzen zu ermitteln. Tests generieren Geld und Ressourcen. Testen hilft uns, unser Programm zu verbessern und unnötige Hürden in unserem Code zu vermeiden.
## Uebung 08 (19.12.2022)
**Testenautomatisierung Übung**
- Installiertes Ruby
- Installiert Ceedling
- Wir haben an zwei Projekten gearbeitet, einem in C und einem in Java. In diesen Projekten haben wir Haltepunkte eingeführt und mit Hilfe des installierten Ceedling und Ruby die Tests über das Terminal ausgeführt.
- **Motivation:** Unit-Tests sind die vorherrschende Testart. Sie können oft wiederholt werden. Sie können in großer Zahl durchgeführt werden. Sie haben eine hohe Kritikalität und eine größere Stabilität. Ein guter Test kann leicht lesbar sein, ist vertrauenswürdig in seiner Art der Arbeit, funktioniert schnell und kann leicht für eine lange Zeit gewartet werden. Es ist wichtig zu prüfen, ob der Produktionscode tatsächlich ausgeführt wird. Wenn der Test fehlschlägt, ist zu prüfen, ob er aus dem richtigen Grund fehlschlägt. Die Schlussfolgerung ist, dass Unit-Tests die am häufigsten zu erstellenden automatisierten Tests sind und dass die Test Driven Development der am besten geeignete Ansatz für ihre Erstellung ist.
- **Grundlagen:** Test Driven Development führt zu 100% Anforderungsabdeckung. TDD führt zu einer hohen Testabdeckung, aber nicht zu 100%.
**Der TDD-Mikrozyklus**:
1. Schreibe einen neuen Test, gerade genug, um ihn fehlschlagen zu lassen.
2. Schreiben Sie gerade genug Produktionscode, um den Test zu erfüllen.
3. Verbessern Sie den Code (Produktion und Test), ohne einen Test zu verletzen und ohne neue Funktionen (Geschäftslogik) hinzuzufügen.
### Wiederholung -
- Tests sind unerlässlich, um Schwachstellen in unserem Code aufzuzeigen, die Qualität unseres Codes zu erfassen und Einschränkungen zu ermitteln. Tests helfen uns, unser Programm zu verbessern und unnötige Hürden in unserem Code zu vermeiden.
- Es gibt verschiedene Arten von Tests: Unit-Tests, Modultests, die Integrationstests und Regressionstests umfassen, und Anwendungstests, die Integrationstests, Regressionstests, Lasttests und Akzeptanztests umfassen.
## Uebung 08 (09.01.2023)
**Test Driven Development Übung**
1. Für die TDD-Übung haben wir das Projekt aus unserer früheren Java-Testrepository-Übung übernommen.
2. Wir haben es in einen neuen Ordner mit dem Titel TDD in unserem Git-Repository verschoben.
3. Wir haben Tests zum Thema Bowling erstellt.
4. Der erste Test wurde für den Fall erstellt, dass keine Pins umgeworfen werden, was zu einer Nullpunktzahl führt. Der Test schlug fehl, da er nicht viele Informationen enthielt. Dann haben wir genug produktiven Code eingegeben, um ihn zu einem erfolgreichen Test zu machen.
5. In diesem Prozess haben wir unseren Code mit neuen Tests (mit neuer Funktionalität) verbessert, ohne die früheren Tests zu zerstören.