Continous Integration ist ein weiterer Grundpfeiler agiler Softwareentwicklung. Grundvoraussetzung für qualitativ hochwertige Software ist erst einmal, dass möglichst jeder Teil des Quellcodes durch Unit Tests abgedeckt wird. Auf diese Weise stellt man sicher, dass der geschriebene Code in allen möglichen Varianten und Kombinationen von Faktoren und Möglichkeiten das richtige Ergebnis liefert. Dies wäre durch menschliche Tester schier unmöglich. Folgendes Beispiel verdeutlicht dies:
function test($a, $b, $c, $d) {
if($a) {
// Mach was mit $a
}
if($b) {
// Mach was mit $b
}
if($c) {
// Mach was mit $c
}
if($d) {
// Mach was mit $d
}
}
Der oben stehende Code hat eine NPath Komplexität von 16, denn jedes if verdoppelt die Anzahl der Ausführungspfade. Alleine diese Funktion müsste 16 mal getestet werden, eine Software besteht aus mehreren tausend Funktionen. Ein Mensch ist also ökonomisch gesehen gar nicht in der Lage eine Software vernünftig zu testen. Aus diesem Grund sind gerade in der Webentwicklung, wo meist nicht agil entwickelt wird, viele Projekte instabil und voller Fehler.
Continous Integration hilft diesen Prozess des Testens zu optimieren, indem die Unit Tests nun immer wieder ausgeführt werden, z.B. jedes Mal wenn ein Entwickler den Code in die Versionskontrolle eincheckt. Dann erstellt der Continous Integration Server ein sogenanntes build. Laufen alle Tests fehlerfrei durch, bekommt ein Build den Status "grün". Treten Fehler in diesem Prozess auf, bekommt das Build den Status "rot" und alle Beteiligten wissen, das etwas schief gelaufen ist.
Der Vorteil dieses Systems ist es nun, das man nicht nur den Quellcode testen kann, der gerade entwickelt wird, sondern auch alle vorangegangenen Versionen. Auf diese Weise kann man sich sicher sein, dass Veränderungen, die man gerade eingeführt hat nicht nur in der aktuellen Version funktionieren, sondern man weiß auch, ob sie die Kompatibilität mit anderen Versionen beeinträchtigen.
Doch damit nicht genug, durch CI ist man auch in der Lage die Qualität des Quellcodes zu kontrollieren, man kann die Performance der Software kontrollieren. Soll die Applikation, die man entwickelt, mehrere Datenbanken unterstützen, kann man jede Kombination von unterstützter Software automatisch testen lassen. Dasselbe gilt für Betriebsysteme. Auf diese Weise kann man alle Arten von Kompatibilitätsproblemen entdecken, bevor es die Kunden tun. Daher ist Continous Integration ein wichtiger Punkt für meine Arbeit
So viel zu dieser kurzen Betrachtung zur agilen Webentwicklung. Sollten Sie noch Fragen haben oder eine Beratung wünschen, kontaktieren Sie mich gerne