Kontinuierliche Integration ist eine Softwareentwicklungstechnik, in der werden die automatisierte Projekt-Builds erstellt, um die Integrationsprobleme schnellstmöglich zu identifizieren und zu lösen. Eine derartige Vorgehensweise ermöglicht die geeignete für die Freigabe Produktversion in jeder Phase des Entwicklungsprozesses zu liefern.
Integration ist die letzte Stufe jedes typischen Projekts, bei denen arbeiten Entwickler auf verschiedenen Systemteile unabhängig. Kontinuierliche Integration bezieht sich auf agile Praktiken und wird in extreme Programmierung aktiv verwendet, um Routineprozesse zu automatisieren und Integrationsprobleme bedeutend zu reduzieren.
Integrationstest (oder Integration und Test, I&T) ist ein Software-Testtyp, in denen werden einzelne Software-Module kombiniert und als eine Gruppe nach der Unit-, aber vor den Systemtests getestet.
Als Eingabe, nutzt Integrationstest die Module, die Unit-Tests schon bestanden haben, dann ordnet sie zu größere Sets, führt Tests, die im Testplan festgelegt wurden, und stellt die Ergebnisse als Ausgang und Eingang für die nachfolgende Systemtests.
Integrationstest zielt darauf ab, die Einhaltung der entworfenen Einheiten mit Funktions-, Akzeptanz- und Sicherheitsanforderungen zu überprüfen.
Kontinuierliches Integration-System besteht sich aus zahlreichen Subsystemen (Versionskontrollsystem, Skripte und Service Einführung-Versammlungstests) und wird während der automatisierten Integrationstests verwendet und folgende Funktionsprinzipien hat:
Der Quellcode und alle anderen Einzelteile, die für Aufbau und Tests des Projekts erforderlich sind, werden in einem Repository für Quellcodeverwaltung gespeichert. Die lokale Build kann nach der externen Anfrage erstellt werden, im Zeitplan (tägliche Build), nach der Aktualisierung von Repository, usw. Die tägliche Build wird automatisch jede Nacht generiert , um bereiten Testergebnissen zu Beginn des Arbeitstages zu haben. In der Regel wird jede neue Build durch die natürliche Zahl in aufsteigender Reihenfolge aufgezählt.
Abbildung 1 zeigt ein Diagramm des Integrationsprozesses.
Um den größtmöglichen Nutzen aus dem kontinuierlichen Integration-System zu erhalten, ist es wichtig, eine Frequenzsynchronisation durchzuführen, laufende Probleme schnell zu lösen, einen leistungsfähigen Server, schnelle (maximal 10 Minuten) und zuverlässige Montage zu haben.
Es gibt solche kontinuierliche Integrationswerkzeuge: Hudson und Jenkins, CruiseControl, TeamCity, BuildBot, Travis CI.
Die Praxis der kontinuierlichen Integration wird verwendet, um die Test-Qualität der Software zu verbessern. Die automatisierte Integrationstests werden nach jedem Update durchgeführt. Das hilft eventuelle Fehler in kurzer Zeit zu erkennen und zu korrigieren.
Es gibt noch einige Eigenheiten der Verwendung von kontinuierliche Integrationspraxis. Einer von ihnen ist der Mangel an automatischen Tests. Es gibt keine Garantie dafür, dass etwas nicht funktioniert wird. Auto-Tests erlauben Mini-Regression bei jedem Commit und geben dem Test-Team zumindest eine Art von Vertrauen. Es sollte auch berücksichtigt werden, dass ständige Aktualisierung des Testservers zeitaufwendig ist und verschiedene Unannehmlichkeiten verursachen können.
Manchmal können die Testdaten während des Montageprozesses verloren werden. In einem solchen Fall müssen Sie einige Zeit für ihre Wiederherstellung nehmen, um Datensicherung zu liefern und alle Mitglieder des Testteams sollen über die Umgebungseinstellungen wissen.
Das kontinuierliche Integrationssystem löst Probleme effektiv, die nach der Integration der verschiedenen Codeteile auftreten können. Allerdings hat es einige Vor-und Nachteile.
Von der QS Sicht, hat auch die kontinuierliche Integration zahlreicher Gewinn und, um zusammenzufassen, sind hier die wichtigsten von ihnen:
All diese Aspekte ermöglichen, Qualität des Endprodukts rechtzeitig und im Rahmen des geplanten Budgets zu liefern. Es ist doch das wichtigste Ziel eines jeden Projektes, nicht war ?