Pour répondre d'abord à votre question: oui, ils font définitivement partie de l'intégration continue si vous me le demandez. Mais je pense que nous devons clarifier ce que sont les tests d'intégration.
Martin Fowler parlait de la livraison continue comme d'un moyen d'automatiser le processus de construction complet pour un déploiement rapide. Cela nécessite que les développeurs obtiennent une rétroaction rapide fournie par le processus d'intégration continue. Il définit donc les étapes de la construction :
- une construction de commit
- tests approfondis
- déploiement
La construction de la validation ne devrait pas prendre plus de 10 minutes, déclare-t-il, en raison des commentaires rapides des développeurs.
Voici comment je vois les choses: dans la première étape, récupérez le dernier commit et construisez-le. Si cela réussit, vous exécutez vos tests unitaires pour savoir si vos classes / groupes de classes fonctionnent comme prévu et prévu.
Lorsque cela réussit, vous accédez à la partie test d'intégration. Ici, vous testez l'interaction des unités testées avec succès. Cela implique d'alimenter les unités en entrée et de surveiller leur état / interaction / sortie. N'oubliez pas que nous sommes toujours dans la version commit, nous voulons donc que cela soit aussi rapide. Les interactions avec le système de fichiers, une base de données, les homologues du réseau et autres doivent donc être stoppées pour une exécution rapide. Martin Fowler fait également allusion à l'utilisation de bases de données en mémoire si vous en avez besoin, juste pour que l'exécution soit rapide sur le serveur CI.
Après vous être assuré que les unités fonctionnent et interagissent selon les besoins, vous souhaitez généralement vous renseigner sur la couverture des tests (simplement tester un petit sous-système n'est généralement pas suffisant) et rendre les artefacts testés disponibles pour les tests fonctionnels / QA / déploiement ( lire: tests approfondis) si vous pensez que vos tests couvrent suffisamment votre programme. À ce moment-là, vous provisionnez un environnement de test qui reflète l'environnement de production que vous ciblez et exécutez des tests qui impliquent une vraie base de données, de vrais fichiers, de vrais pairs du réseau, etc.
Au final, les tests d'intégration concernent les changements de code. Vous voulez vous assurer que les modifications que vous avez apportées ne cassent pas le système actuel, ce qui signifie qu'elles s'intègrent bien. Pour savoir s'ils le sont, vous devez vous assurer qu'ils se comportent correctement en eux-mêmes, puis s'ils interagissent correctement avec leurs dépendances et s'ils ont été testés. Vous pouvez avoir confiance en votre système après avoir passé tous ces tests.
Si des étapes ultérieures rencontrent des problèmes avec votre programme (comme lorsque votre base de données renvoie une certaine valeur, votre connexion réseau s'arrêtera), vous devriez essayer d'obtenir ces tests dans les tests d'intégration. La build de validation est probablement plus rapide que QA;)