Kontinuierliches Integration

Kontinuierliches Integration

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

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:

  • Überwachung von CVS
  • Die die lokale Speicherung wird jedes Mal aktualisiert, wenn der Quellcode im Repository geändert ist
  • Der Quellcode wird in die ausführbaren Module kompiliert
  • Die Leitung des Integrationstests und der Generation von Testberichterstellung.

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.

Abbildung 1. Das Schema von Integrationsprozess

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.

Kontinuierliche Integrationswerkzeuge

Es gibt solche kontinuierliche Integrationswerkzeuge: Hudson und Jenkins, CruiseControl, TeamCity, BuildBot, Travis CI.

  • Hudson ist ein kontinuierliches Integrationswerkzeug, das in Java geschrieben wurde. Es erlaubt mit CVS, Subversion, Mercurial, Git, Clearcase, Projekte zu arbeiten, kann Apache Ant und Apache Maven zu sammeln, Shell-Scripts und Windows-Befehle auszuführen.
  • Jenkins ist ein Open-Source-Toll, das wurde auch mit Java gebaut. Es wurde von Hudson (getrennt im Dezember, 2010) entstanden und bietet heute zahlreiche Möglichkeiten für die kontinuierliche Integration.
  • CruiseControl ist ein Java-basiertes Framework. Es ist freie, Open-Source-Software, die verschiedene Werkzeuge für Quellenverwaltung und Plug-ins für E-Mail-Benachrichtigungen hat. Web-Schnittstelle ist so entworfen, um die Informationen über die aktuellen und früheren Bulids anzuzeigen. Es ermöglicht, die kontinuierliche Integration für jeden Software-Entwicklungsprozess durchzuführen.
  • TeamCity ist ein Java-basierter Erstellungssever, der wird für die Verhinderung von Begehung des Codes verwendet, die der normale Aufbau des Projekts unterbrechen kann.
  • Travis CIist ist ein verteiltes Web-Service für Erstellung und Testings der Software, die wird GitHub für Hosting und Unterstützung der Projekte auf C, C + +, JavaScript, Java, Python, Ruby, PHP verwenden. Das Softwarekomponente-Service wird auch in GitHub gelegen, aber es ist nicht empfehlenswert es für die geschlossenen Projekte zu verwenden.
  • Buildbot ist ein Werkzeug, das wird für Automatisierung von Software-Build, Test- und Freigabeprozesse verwendet. Es ist das Open-Source-Framework, das alle Aspekte des Software-Entwicklungszyklus automatisieren kann.

Tests Besonderheiten

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.

Vorteile

  • Integrationsprobleme werden schneller und billiger identifiziert und korrigiert
  • Unit-Tests werden direkt nach jedem Update ausführen
  • Aktuelle Anwendungsversion steht immer für das Test-Team zur Verfügung
  • Software-Tests können gleichzeitig mit dem Entwicklungsprozess durchgeführt werden
  • Sie können die aktuelle Anwendungsversion an den Kunden immer zeigen
  • Laufende Integration der gesamten Anwendung
  • Automatisierung aller Prozesse
  • Anpassung oder Aufbau der Branche-Code entsprechend der gewünschten Umgebung.

Nachteile

  • Ständige Überwachung von Werkzeugen, Servers und andere Komponenten, die für kontinuierliches Integration-System notwendig sind.
  • Alle Fehlerbehebungen und Änderungen sollen so schnell wie möglich durchgeführt werden, weil das kontinuierliches Integration-System ständig betriebsbereit sein müssen.
  • Sie sollen dedizierten Server für kontinuierliche Integration haben.

Schlussfolgerungen

Von der QS Sicht, hat auch die kontinuierliche Integration zahlreicher Gewinn und, um zusammenzufassen, sind hier die wichtigsten von ihnen:

  • Die Verfügbarkeit der neuesten Änderungen
  • Stabiler Aufbau
  • Automatische bereit Testumgebung
  • Gelegenheit ein Rollback zur vorherigen Version der Anwendung zu machen
  • Möglichkeit ein Defekt in den frühen Stadien der Software-Entwicklung zu definieren

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 ?