CI/CD-Testautomatisierung

Die Testautomatisierung ist ein zentraler Bestandteil jeder CI/CD-Pipeline und ein wesentlicher Schritt zur Verkürzung der Release-Intervalle. Damit Sie das Maximum aus Ihren automatisierten Tests herausholen können, stellt Ihnen TeamCity eine Vielzahl von Funktionen bereit, darunter Änderung der Testreihenfolge, Testparallelisierung, intelligente Fehleranalyse, Quality Gates und vieles mehr. Mit integrierter Unterstützung für gängige Testframeworks für .NET, Java, Python, JavaScript und weitere Programmiersprachen ebnet Ihnen TeamCity den Weg zu einer besseren Codequalität und einem zuverlässigeren Releaseprozess in Ihrem gesamten Software-Stack.

Für Ihren Workflow optimiert

Die Abläufe beim Testen von Software sind so vielfältig wie die Softwareprojekte selbst. Docker-Container orchestrieren, Testumgebungen konfigurieren, den Testumfang anhand verschiedener Parameter anpassen, Quality Gates einrichten – dies sind nur einige der Aktivitäten, die Sie vielleicht in Ihrem CI/CD-Tool durchführen möchten. Die gute Nachricht ist, dass TeamCity all diese Szenarien unterstützt, sodass Sie unkompliziert automatisierte Pipelines einrichten können, die auf Ihren konkreten Test-Workflow zugeschnitten sind.

Integration in alle gängigen Build- und Testtools

In Bezug auf die Integration mit Buildtools und Testframeworks lässt sich TeamCity von keiner anderen CI/CD-Lösung etwas vormachen. TeamCity parallelisiert die Ausführung Ihrer Tests, identifiziert unzuverlässige Tests und speichert die Historie jedes einzelnen Testlaufs, darunter Buildprotokoll, Dauer, Reihenfolge der Ausführung, Code-Coverage, statische Analyseergebnisse und andere Daten. Durch das stetige Sammeln von statistischen Daten zu Ihren Tests wird TeamCity mit der Zeit immer unentbehrlicher, wenn es darum geht, zu verstehen, welche Arten von Änderungen am häufigsten zu Testfehlern führen.

Geeignet für Projekte jeder Größe und Komplexität

Wenn Sie schon einmal von einem CI/CD-Tool auf ein anderes umgestiegen sind, wissen Sie, dass dies viele Monate Arbeit bedeuten kann. Mit TeamCity müssen Sie sich keine Sorgen machen, dass Ihr Unternehmen aus seinem Build-System herauswächst und auf ein größeres System wechseln muss. Unsere Lösung ist so ausgelegt, dass es auch mit den größten und komplexesten Projekten zurechtkommt. Bei JetBrains wird zum Beispiel eine einzige TeamCity-Installation von über 1000 Entwickler*innen verwendet, die mehr als 5000 Builds parallel ausführen.

Höhere Produktivität mit umfassendem Test-Reporting

Wenn Sie Ihre Tests automatisieren und regelmäßig durchführen, profitiert Ihr Team von einem schnellen Feedback nach Änderungen. Auf diese Weise können Fehler schneller erkannt und behoben werden, während Sie die Änderungen noch im Kopf haben.

Mit TeamCity können Sie automatisierte Tests als Teil Ihrer CI/CD-Pipelines konfigurieren. Die Testergebnisse werden sofort bereitgestellt, um Ihnen schnelles Feedback zu geben. Wenn Tests fehlschlagen, stellt TeamCity Details zu den dazugehörigen Codeänderungen sowie Stack-Traces, Änderungsprotokolle und Build-Artefakte bereit, damit Sie das Debugging schnell in die Wege leiten können. Unzuverlässige und zum ersten Mal fehlgeschlagene Tests werden hervorgehoben, und wenn einige Testfehler in späteren Builds behoben werden, wird die Ergebnisseite entsprechend aktualisiert.

Die Testergebnisse können nicht nur in der Weboberfläche angezeigt, sondern auch über E-Mail, Slack oder andere Messenger versendet oder sogar direkt an Ihre IDE übermittelt werden. Dadurch erhalten Sie und Ihr Team sofortiges Feedback zu den letzten Änderungen, ohne auf den Abschluss des Build-Schritts warten zu müssen.

Zentrale Funktionen für die Testautomatisierung

Fehleranalyse und Code-Coverage

TeamCity wird mit verschiedenen Build-Runnern ausgeliefert, die eine Integration mit Tools zum Kompilieren, Testen und Bereitstellen von Software ermöglichen. Wenn eine Testsuite mithilfe eines Build-Runners ausgeführt wird, kann TeamCity die Ereignisse während des Buildvorgangs erfassen, die Code-Coverage überprüfen, Sofortberichte erstellen, Statistiken sammeln und Trends analysieren.

Manchmal ist es unpraktisch, ein Testskript in TeamCity-Build-Schritte umzuwandeln, sodass Sie stattdessen vielleicht den generischen Befehlszeilen-Build-Runner verwenden möchten. Wenn Sie diesen Weg gehen, können Sie Ihr Skript TeamCity-Servicenachrichten ausgeben lassen, um TeamCity über den Fortschritt zu informieren und auf diese Weise alle intelligenten Funktionen nutzen zu können. Wenn zum Beispiel Informationen zu Testnamen und Testdauer bereitgestellt werden, kann TeamCity berechnen, wie die Tests am besten zu parallelisieren sind. Weitere Details finden Sie im Abschnitt Service Messages der Dokumentation.

In TeamCity können Sie je nach Ihren konkreten Anforderungen festlegen, wann ein Build als erfolgreich oder fehlgeschlagen markiert werden soll. Wenn es zum Beispiel wichtig ist, dass die Unit-Test-Coverage von einem Build zum nächsten nicht abnimmt, können Sie die Code-Coverage-Zahlen als Erfolgsbedingung für den Build-Schritt festlegen.

Zum Zwecke des Testfehler-Managements können Sie mit TeamCity Ihren Teammitgliedern Untersuchungen zuweisen oder Tests stummschalten, wenn die Behebung nicht sofort geschehen muss. Stummgeschaltete Tests werden bei nachfolgenden Pipeline-Läufen ignoriert, sodass Ihr automatisierter Testprozess ohne manuelle Änderungen an der Pipeline unterbrechungsfrei fortgesetzt werden kann.

Wir entwickeln Build-Runner für alle gängigen Tools und Programmiersprachen:

  • Gradle
  • Kotlin
  • Maven
  • .NET
  • Node.js
  • Python
  • Und viele andere

Neben den von JetBrains unterstützten Build-Runnern stehen Ihnen über 100 kostenlose Plugins und eine umfassende API zur Verfügung, um TeamCity in Ihre eigenen Tools und Skripte zu integrieren.

Parallele Tests

Die intelligente Testparallelisierung ist eine exklusive Funktion von TeamCity, mit der Sie Ihren Testprozess erheblich beschleunigen können. Wenn mehrere Build-Agents verfügbar sind, kann TeamCity die Tests unter Berücksichtigung der Testdauer automatisch in gleichmäßige Gruppen aufteilen und parallel ausführen. Wenn Sie bei Ihren Tests benutzerdefinierte Skripte anstelle der Build-Runner von TeamCity verwenden, können Sie TeamCity mit Servicenachrichten über den Fortschritt informieren, damit TeamCity die optimale Art und Weise der Parallelisierung berechnen und spezielle Anweisungsdateien erzeugen kann, um Ihnen bei der Einrichtung der Parallelisierung zu helfen.

Weitere Details finden Sie im Abschnitt Parallel Tests der Dokumentation.

Performance-Überwachung

Es ist oft nicht einfach zu überblicken, ob die Hardware oder die Cloud-Instanzen, auf denen Sie Ihre Tests durchführen, für Ihre Projekte optimal sind. Der Performance Monitor von TeamCity sammelt automatisch Statistiken zur CPU-, Speicher- und Datenträgerleistung, um Ihnen bei der Erkennung von Engpässen in Ihren Pipelines zu helfen.

Weitere Details finden Sie im Abschnitt Performance Monitor der Dokumentation.

Testen Ihres Codes ohne VCS-Commit

Mit TeamCity können Sie Ihren Code testen, ohne ihn in ein Versionsverwaltungssystem zu committen. Dies ist besonders nützlich, wenn Ihre Entwicklung in einem einzigen Hauptbranch stattfindet, da so die Gefahr minimiert wird, dass der Build fehlschlägt und die Arbeit anderer Teammitglieder blockiert.

Der einfachste Weg, Ihre Änderungen zu testen, ohne sie zu committen, ist die Funktion Remote Run in den TeamCity-Plugins für IntelliJ-basierte IDEs und Visual Studio. Teams, die ihren Code in Git hosten, haben darüber hinaus die Möglichkeit, einen Git-Patch zu erstellen, ihn in TeamCity hochzuladen und dann einen persönlichen Build über die TeamCity-Bedienoberfläche auszuführen.

Flexible Konfiguration von Testautomatisierungs-Pipelines

TeamCity bietet eine Vielzahl von Build-Triggern zum automatischen Auslösen von Tests. Sie können Tests aber auch manuell über die TeamCity-Bedienoberfläche oder über Ihre IDE ausführen. Sie können in Ihre Testpipeline logische Bedingungen aufnehmen, um abhängig vom Auslöser des Builds und den Ereignissen in der Pipeline Ihren Prozess zu optimieren und die Ausführung von Tests zu steuern. Zum Beispiel können Sie festlegen, dass bei Nightly-Builds eine komplette Testreihe und bei einem Commit nur Unit-Tests ausgeführt werden. Ebenso können Sie genau vorgeben, welche Tests beim manuellen Ausführen der Pipeline durchgeführt werden sollen.

Weitere TeamCity-Funktionen, die Ihren Test-Workflow ergänzen

Automatische Skalierung Ihrer CI/CD-Infrastruktur

Bei einem großen CI/CD-System mit vielen Projekten ist es nicht immer einfach zu bestimmen, wie viele Build-Agents zum Ausführen von Builds und Tests erforderlich sind. TeamCity unterstützt Sie bei der Implementierung eines skalierbaren CI/CD-Systems, indem es automatisch neue Build-Agents in der Cloud startet und so die Kapazität Ihrer Pipeline dynamisch erhöht. Zu den unterstützten Cloud-Plattformen gehören Amazon EC2, Microsoft Azure, Google Cloud, VMware vSphere, Kubernetes und andere.

Docker-Integration

TeamCity unterstützt und beschleunigt alle Workflows in der Softwareentwicklung, bei denen Docker zum Einsatz kommt. So können Sie beispielsweise Tests in einer bestimmten Umgebungsversion durchführen, um einheitliche und reproduzierbare Ergebnisse zu gewährleisten, oder bei Integrationstests mehrerer Docker-Container orchestrieren. Unabhängig davon, wie Sie Docker in Ihren CI/CD-Pipelines einsetzen, kann TeamCity alle Ereignisse während des Buildvorgangs erfassen und Echtzeitberichte, Testanalysen und weitere Erkenntnisse bereitstellen.

Automatisiertes Merging von Änderungen

TeamCity bietet die Möglichkeit, Änderungen automatisch in einen bestimmten Zielbranch zu mergen, wenn der Build erfolgreich war. Sie haben auch die Möglichkeit, eine Reihe von kaskadierenden Merge-Aktionen einzurichten. In Verbindung mit der Möglichkeit, den Code vor dem VCS-Commit zu testen, können Sie so das Gated-Commit-Pattern nutzen.

FAQ: Testautomatisierung mit TeamCity

Ist die Testparallelisierung eine kostenlose Funktion von TeamCity?

Ja, die Testparallelisierung ist in allen TeamCity-Editionen – auch in der kostenlosen selbst gehosteten Edition – kostenlos verfügbar. In TeamCity On-Premises können Sie Tests auf so viele Build-Agents aufteilen, wie es Ihre Lizenz zulässt.

Welche Betriebssysteme unterstützt TeamCity?

TeamCity ist für Windows, Linux und macOS verfügbar und kann als Docker-Container auf jeder Plattform ausgeführt werden, die eine Docker-Laufzeitumgebung unterstützt. Sie können auch TeamCity Cloud als Managed Service verwenden und sich den gesamten Installations- und Wartungsaufwand ersparen.

Kann TeamCity fehlgeschlagene Tests automatisch wiederholen?

Ja, mithilfe des Build-Triggers Retry kann TeamCity den Build nach einem Fehler automatisch wieder in die Build-Warteschlange stellen. Dies hilft auch in Situationen, in denen Tests trotz korrektem Code aufgrund von Netzwerkproblemen oder anderen externen Faktoren fehlschlagen.

Unterstützt TeamCity UI-Testframeworks?

TeamCity ist ein flexibles CI/CD-System, das mit einer Vielzahl von Tools und Testframeworks verwendet werden kann, darunter auch Frameworks für UI-Tests. Um mehr über die Verwendung von TeamCity für UI-Tests zu erfahren, lesen Sie unseren Blogartikel zum Thema: Die TeamCity-UI: Wie testen wir sie? (in englischer Sprache)