Automatisation des tests CI/CD

L'automatisation des tests constitue un élément central de tout pipeline CI/CD et une étape essentielle pour des versions plus fréquentes. TeamCity inclut une large gamme de fonctionnalités qui vous permettent d'optimiser vos tests automatiques, avec notamment la réorganisation des tests, la parallélisation, l'analyse intelligente des échecs, les murs qualité et de nombreuses autres. Grâce à la prise en charge intégrée des principaux cadres de test pour .NET, Java, Python, JavaScript et d'autres langages de programmation, TeamCity ouvre la voie à un meilleur code et à un processus de publication plus fiable pour l'ensemble de votre pile logicielle.

Adapté à votre workflow

Les workflows de test de logiciels sont aussi divers que les logiciels eux-mêmes. Orchestrer les conteneurs Docker, configurer les environnements de test, changer la portée des tests en fonction de différents paramètres et définir des murs qualité ne représentent que quelques-unes des tâches les plus courantes à réaliser avec votre outil de CI/CD. La bonne nouvelle est que TeamCity prend en charge tous ces scénarios, ce qui vous permet de configurer facilement des pipelines automatisés et parfaitement adaptés à votre workflow de test.

Intégration avec les principaux outils de build et de test

TeamCity s'intègre avec les outils de build et les frameworks de test comme aucune autre solution CI/CD. Il parallélise l'exécution de vos tests, identifie les tests non fiables et crée un historique détaillé des tests exécutés, ce qui inclut le journal de build, la durée, l'ordre d'exécution, la couverture du code et les résultats d'analyse statique, ainsi que d'autres données. Au fur et à mesure que TeamCity collecte davantage de statistiques de test, il devient indispensable pour comprendre les types de modification qui font généralement échouer les tests.

Convient à tous les projets, indépendamment de leur taille et complexité

Si vous avez déjà eu à gérer des transitions entre différents outils CI/CD, vous savez que ce processus peut prendre des mois. Avec TeamCity, vous n'aurez jamais à vous demander si votre système de build est sous-dimensionné et doit être remplacé. Notre solution a été conçue pour gérer les projets les plus complexes et lourds. Par exemple, dans JetBrains, une seule installation de TeamCity est utilisée par plus de 1 000 développeurs qui exécutent plus de 5 000 builds en parallèle.

Boostez votre productivité avec des rapports de test avancés

En automatisant vos tests et en les exécutant de façon régulière, vous et votre équipe bénéficiez de retours rapides sur vos modifications. Ainsi, il devient possible d'identifier et de corriger les bugs plus rapidement, alors que vous avez encore la modification en tête.

Avec TeamCity, vous pouvez configurer des tests automatiques dans le cadre de vos pipelines de CI/CD. Les résultats de test sont fournis instantanément pour assurer des retours rapides. Lorsque le test échoue, TeamCity fournit des détails sur les changements de code associés, ainsi que des suivis de piles, des fichiers journaux et des artefacts de build afin de vous aider à lancer le processus de débogage. Les tests non fiables et ceux qui viennent d'échouer sont mis en évidence, et si certains tests sont résolus dans des builds ultérieures, la page des résultats de test est chargée automatiquement en utilisant les informations correspondantes.

Outre le fait qu'ils peuvent être affichés dans l'interface utilisateur web, les résultats des tests sont communicables par e-mail, Slack ou toute autre messagerie, ou livrés directement sur votre IDE. Cela, encore une fois, vous donne, à vous et votre équipe, des retours sur vos dernières modifications sans avoir à attendre l'étape de build pour terminer.

Fonctionnalités de base d'automatisation des tests

Analyse des échecs et couverture du code

TeamCity est fourni avec différents exécuteurs de build qui s'intègrent avec les outils utilisés pour développer, tester et déployer les logiciels. Lorsqu'une suite de test s'exécute à l'aide d'un exécuteur de build, TeamCity est en mesure de comprendre les événements qui se produisent pendant le processus de build, de vérifier la couverture du code, de créer des rapports à la volée, de collecter des statistiques et d'analyser les tendances.

Il peut parfois sembler compliqué de convertir un script de test en étapes de build TeamCity. Dans ce cas, il peut être intéressant d'utiliser l'exécuteur de build générique depuis la ligne de commande. Si vous décidez de procéder ainsi, vous pouvez ajouter les messages de service de TeamCity à votre sortie de script pour informer TeamCity de la progression, tout en conservant l'accès à toutes ses fonctionnalités intelligentes. Par exemple, fournir des informations sur les noms des tests et leur durée permet à TeamCity de calculer comment les tests peuvent être parallélisés. Pour en savoir plus, voir la section Messages de service de notre documentation.

Selon vos besoins, TeamCity permet de définir quand une build doit être identifiée comme ayant réussi ou échoué. Par exemple, s'il est important que la couverture de vos tests unitaires ne se diminue pas d'une build à l'autre, vous pouvez définir la valeur de la couverture du code comme une condition d'échec ou de réussite d'une build.

Pour la gestion des échecs de test, TeamCity vous permet d'affecter des investigations aux membres de votre équipe ou de ne pas afficher les tests que vous ne devez pas corriger immédiatement. Les tests masqués sont ignorés au cours des exécutions suivantes de pipelines, ce qui permet à votre processus de test automatisé de se dérouler sans interruptions, ni modifications manuelles dans le pipeline.

Nous développons des exécuteurs de build pour tous les outils populaires et les langages de programmation, dont :

  • Gradle
  • Kotlin
  • Maven
  • .NET
  • Node.js
  • Python
  • Et de nombreux autres

En supplément des exécuteurs de build pris en charge par JetBrains, vous disposez de 100 plugins gratuits et d'une API complète permettant d'intégrer TeamCity avec vos propres outils et scripts.

Tests parallèles

La parallélisation intelligente des tests est une fonctionnalité propre à TeamCity qui permet d'accélérer considérablement vos procédures de test. Lorsque plusieurs agents de build sont disponibles, TeamCity peut répartir automatiquement les tests dans des lots de taille égale en fonction de leur durée, puis les exécuter en parallèle. Si vos tests utilisent des scripts personnalisés, et non pas les exécuteurs de build de TeamCity, vous pouvez utiliser les messages de service pour informer TeamCity de leur progression, de façon à lui permettre de calculer la méthode de parallélisation des tests optimale et, sur cette base, de générer des fichiers d'instructions spéciaux pour vous aider à mettre en place la parallélisation.

Pour en savoir plus, voir la section Tests parallèles de notre documentation.

Suivi des performances

Il n'est souvent pas facile de comprendre si le matériel ou les instances cloud sur lesquels vous exécutez vos tests sont optimaux pour vos projets. La fonctionnalité de surveillance des performances de TeamCity collecte automatiquement des statistiques sur les performances du processeur, de la mémoire et du disque dur, ce qui facilite l'identification des goulots d'étranglement dans vos pipelines.

Pour en savoir plus, voir la section Moniteur de performances de notre documentation.

Tests du code sans faire de commit à un VCS

TeamCity permet de tester votre code sans créer de commit dans un système de contrôle de version, ce qui est particulièrement utile si votre développement se fait dans une seule branche. En effet, cela réduit considérablement le risque de faire échouer la build et de bloquer ainsi les autres membres de l'équipe.

La solution la plus simple pour tester vos modifications sans effectuer de commit consiste à utiliser la fonctionnalité Remote Run du plugin TeamCity pour les IDE basés sur IntelliJ ou Visual Studio. Les équipes qui hébergent leur code sur Git ont également la possibilité de créer un correctif Git, de le charger sur TeamCity, puis d'exécuter une build personnelle en utilisant l'interface utilisateur de TeamCity.

Configuration flexible des pipelines de test automatisés

TeamCity fournit différents déclencheurs de build pour lancer les tests automatiquement et permet d'exécuter les tests manuellement depuis son interface utilisateur ou celle de votre IDE. Selon ce qui a déclenché la build et ce qui s'est produit auparavant dans le pipeline, vous pouvez ajouter une logique conditionnelle à votre pipeline de test pour simplifier vos processus et définir quand les exécuter. Par exemple, vous pouvez programmer des builds nocturnes et pour exécuter une suite complète de tests, exécuter uniquement des tests unitaires sur chaque commit ou spécifier la portée exacte des tests lors de l'exécution manuelle d'un pipeline.

Plus de fonctionnalités TeamCity pour compléter votre workflow de test

Évolution automatique de l'infrastructure CI/CD

Le fait d'avoir un grand système CI/CD gérant de nombreux projets peut rendre difficile l'identification précise du nombre d'agents de build requis pour exécuter des builds et des tests. TeamCity peut vous aider à implémenter une configuration CI/CD évolutive en lançant automatiquement de nouveaux agents de build dans le cloud, ce qui augmente de façon dynamique la capacité de vos pipelines. Les plateformes cloud prises en charge incluent Amazon EC2, Microsoft Azure, Google Cloud, VMWare vSphere et Kubernetes, entre autres.

Intégration avec Docker

TeamCity prend en charge et peut accélérer tous les workflows de développement logiciel qui utilisent Docker. Par exemple, il peut exécuter des tests unitaires dans une version d'environnement spécifique afin d'assurer des résultats cohérents et reproductibles, ou réaliser des tests d'intégration qui impliquent l'orchestration de plusieurs conteneurs Docker. Quelle que soit la façon dont vous utilisez Docker dans vos pipelines CI/CD, TeamCity permet de suivre tous les événements qui se produisent pendant la build et fournit des rapports en temps réel, des analyses de test et autres informations utiles.

Fusion automatique des modifications

Si la build est réussie, TeamCity peut automatiquement fusionner les modifications dans une branche cible spécifiée. Il est également possible de configurer une série d'opérations de fusion en cascade. Combiné avec la possibilité de tester le code avant de l'envoyer en commit à un VCS, cela vous permet d'utiliser le modèle de commit pré-testé.

FAQ : tests automatisés avec TeamCity

La fonctionnalité de parallélisation des tests de TeamCity est-elle gratuite ?

Oui, la parallélisation des tests est disponible gratuitement dans toutes les éditions de TeamCity, y compris dans la version gratuite auto-hébergée. Dans TeamCity On-Premises, vous pouvez répartir les tests dans autant d'agents de build que votre licence le permet.

Quels sont les systèmes d'exploitation pris en charge par TeamCity ?

TeamCity est disponible pour Windows, Linux et macOS, et peut s'exécuter en tant que conteneur Docker sur toute plateforme prenant en charge un environnement d'exécution Docker. Vous pouvez également l'utiliser en tant que service géré, TeamCity Cloud, qui ne demande aucune installation ou gestion de votre part.

TeamCity peut-il relancer automatiquement les tests qui ont échoué ?

Oui, avec l'aide du déclencheur de build Retry, TeamCity peut replacer automatiquement la build en file d'attente en cas d'échec. Cela permet de gérer des situations où le code est correct, mais les tests échouent en raison de problèmes réseau ou autres facteurs externes.

Est-ce que TeamCity prend en charge les frameworks de test de l'interface utilisateur ?

TeamCity est un outil polyvalent de CI/CD qui peut être utilisé avec un large éventail d'outils et de frameworks de test, ce qui inclut ceux qui sont utilisés pour les tests d'interface utilisateur. Pour en savoir plus sur l'utilisation de TeamCity pour les tests d'interface utilisateur, consultez notre article de blog Interface utilisateur de TeamCity : Comment nous l'avons testée ? (en anglais).