@ -728,6 +728,132 @@ vertraunswürdiger. Beim Test schreiben werden kleine Schritte "baby steps" gema
dadurch weniger Fehler gemacht werden
## SU 09.Jan.2024 "Continous Integration"
_Folie 8_
Zusammenführung der Einzelleistungen
- mit kreativität ein Problem lösen, da es diese Lösung noch nicht gibt und erst "erfunden" werden muss
- technische Konflikte
- persönliche Konflikte --> jeder Mensch arbeitet anders
- Aufwand durch technische und persönliche Konflikte --> klären oder technik anschaffen = Aufwand und Zeitverlust
_Folie 9_
Vorteile von CI Systeme
- formale Prozesse verringern Konfliktpotential
- automatisierte Tests verringern aufwand --> verinfachen für den Entwickler das testen und ist nicht an einen Entwickler gebunden, da das unabhängig über Nacht etc. laufen kann.
_Folie 10_
Entwicklungsumgebung des Programmierers
- IDE
- Syntax hightlighting --> Besser lesbar
- Syntax vervollständigung --> angefangenes Wort wird erkannt und vorschläge gemacht
- automatisierte Refactorings
- Navigation --> führt mich automatisch zur z.B. Funkton, Variable. ...
- Compile-Parameter
- Code automatische Formatierung --> gibt Standard Formatierung an
- Fehler-Lokalisirung --> erkennt den Fehler und zeigt mir auch, wo der Fehler im Code ist.
_Folie 12_
SCM
- Sicherung der Arbeit einzelner Entwickler
- Zentrale Verfügbarkeit
- gut um Backups zu machen
- Zusammenführung parallel geänderter Dateien
- parallele Entwicklung an verschiedener Features möglich
- zentralle Bereitstellung (innerhalb der Organisation)
- Zugriff auf einzelne Versionen
_Folie 14_
build-Werkzeug
- Übersetzen
- Liefer-Artefakte erzeugen
- Abhängigkeiten organisieren
- automatische Tests ausfühern
- Deployment
_Folie 15_
Continous Integration Server
- SCM überwachen
- build-Prozess starten
- Ergebinisse berichten
_Folie 16_
Erweiterung für Continous Delivery
- Staging System --> application Tests werden hier ausgeführt; es soll so nah wie möglich an das realle Einsatzgebiet getestet werden
- Produktons Systen --> prouktive, aktive
_Folie 19_
Checkin Change
- veröffentlichen der Änderung
- eigener branch
- alle aktuell veröffentlichten Änderungen integriert
- vollständige Änderung --> wenn etwas beim übergeben vergessen wurde, z.B. eine Datei, die benötigt wird
- compiliert lokal
- automatisierte Tests sind "grün"
_Folie 21_
Build
- Änderungen mit aktuellen Stand integrieren (merge)
- f
_Folie 22_
Test
- nach erfolgreichen compile
- Testframework starten
- Ergebnisse sammen
_Folie 23_
Ergebnisauswertung
- Ermittelt Status von merge, compile und Test
- Erfolgsfall: Änderung als neuen aktuellen Stand übernehmen und veröffentlichen
- Ergebnisdarstellung als Website
_Folie 24_
Benachrichtigung
- zeitnach
- Fehlerfall: Committer wird benachrichtigt
- Erfolgsfall: alle Entwickler werden benachrichtigt --> Ermittler können jetzt den neuen und erfolgreichen Stand ziehen
- mögliche Wege der benachrichtigung
- Whatsapp
- Twitter
- Mail
- SMS
_Folie 25_
Problem des Continous Integration
- compilierbar != ausführbar
- CI soll immer lieferbaren Stand bereit halten
- Programm muss im CI Prozess ausgeführt werden
_Folie 27_
Vorteile automatisierter Tests
- automatisierte Tests führen Programm aus
- dokumentieren gewünschtes Verhalten
- sind wiederholbar
- erkennen Laufzeitfehler (außer UnitTests)
- Ausführzeiten von Arbeitszeiten entkoppelt
_Folie 28_
Grenzen automatisierter Tests
- finden nur Abweichungen von gewünschten/ bekannten Verhalten
- finden keine neuen fachlichen Fehler
### Erkentniss
Eine IDE ist ein mächtiges und hilfreiches tool für Entwichkler. IDEs sind speziel für eine oder mehrere Programmiersprachen gemacht. Die IDE unterstätzt den Entwichkler beim schreiben seines Codes mit Text highlighting, Fehlererkennung, Autovervollständigung, Navigation und Fehler-Lokalisierung.
### Wiederholung
Der CI Prozess funktioniert grob, dass ein Entwicker eine Änderung veröffentlicht, diese wird gecheckt, ob diese vollständig ist.
Diese Änderung wird in den aktuellen Stand integriert und dann getestet.
Nachdem der Test ausgeführt wurde wird das Ergebniss veröffentlicht. Bei einem Erfolg, bekommen alle eine Benachrichtigung und sie können sich den neuen, Erfolgreichen Stand ziehen. Wenn der Test nicht Erfolgreich war, bekommt nur der Entwickter eine Nachricht und muss seinen Code überarbeiten.