Um Ihre Frage zuerst zu beantworten: Ja, sie sind definitiv Teil der kontinuierlichen Integration, wenn Sie mich fragen. Aber ich denke, wir müssen klären, was Integrationstests sind.
Martin Fowler sprach von einer kontinuierlichen Bereitstellung, um den gesamten Erstellungsprozess für eine schnelle Bereitstellung zu automatisieren. Dies erfordert, dass Entwickler schnelles Feedback vom Continuous Integration-Prozess erhalten. Also definiert er Phasen, die der Build durchlaufen soll :
- ein Commit Build
- gründliche Prüfung
- Einsatz
Der Commit-Build sollte aufgrund des schnellen Feedbacks für Entwickler nicht länger als 10 Minuten dauern.
So sehe ich die Dinge: Holen Sie sich im ersten Schritt das neueste Commit und erstellen Sie es. Wenn dies erfolgreich ist, führen Sie Ihre Komponententests durch, um herauszufinden, ob Ihre Klassen / Klassengruppen wie definiert und erwartet funktionieren.
Wenn dies erfolgreich ist, gelangen Sie zum Integrationstestteil. Hier testen Sie die Interaktion der gerade erfolgreich getesteten Einheiten. Dies beinhaltet das Füttern der Einheiten mit Eingabe und das Beobachten ihres Zustands / ihrer Interaktion / Ausgabe. Denken Sie daran, dass wir uns noch im Commit-Build befinden. Daher möchten wir, dass dies auch schnell geht. Daher müssen Interaktionen mit dem Dateisystem, einer Datenbank, Netzwerkkollegen und dergleichen für eine schnelle Ausführung gestoppt werden. Martin Fowler weist auch auf die Verwendung von In-Memory-Datenbanken hin, wenn Sie diese benötigen, um die Ausführung auf dem CI-Server schnell zu halten.
Nachdem Sie sichergestellt haben, dass die Einheiten wie erforderlich funktionieren und interagieren, möchten Sie in der Regel Informationen zur Testabdeckung erhalten (das Testen eines kleinen Subsystems reicht normalerweise nicht aus) und die getesteten Artefakte für Funktionstests / Qualitätssicherung / Bereitstellung verfügbar machen ( Lesen Sie: gründliche Tests), wenn Sie der Meinung sind, dass Ihre Tests genug von Ihrem Programm abdecken. In diesem Moment stellen Sie eine Testumgebung bereit, die die Produktionsumgebung widerspiegelt, auf die Sie abzielen, und führen Tests durch, die eine echte Datenbank, echte Dateien, echte Netzwerkkollegen usw. umfassen.
Bei Integrationstests geht es letztendlich um Codeänderungen. Sie möchten sicherstellen, dass die von Ihnen vorgenommenen Änderungen das aktuelle System nicht beschädigen, was bedeutet, dass sie sich gut integrieren lassen. Um herauszufinden, ob dies der Fall ist, müssen Sie sicherstellen, dass sie sich in sich selbst korrekt verhalten, ob sie mit ihren Abhängigkeiten korrekt interagieren und ob sie überhaupt getestet wurden. Nachdem Sie alle diese Tests bestanden haben, können Sie sich auf Ihr System verlassen.
Wenn in späteren Phasen Probleme mit Ihrem Programm auftreten (z. B. wenn Ihre Datenbank einen bestimmten Wert zurückgibt, wird Ihre Netzwerkverbindung unterbrochen), sollten Sie versuchen, diese Tests in den Integrationstests zu löschen. Der Commit-Build ist höchstwahrscheinlich schneller als die Qualitätssicherung;)