lierre

Modele contrat d`essai

Pour réduire les risques de ruptures inattendues dans les contrats, il est utile de passer...

16 Fév

Pour réduire les risques de ruptures inattendues dans les contrats, il est utile de passer à une approche de contrats axés sur les consommateurs. Vous pouvez faciliter cela en laissant l`équipe fournisseur avoir des copies de vos tests de contrat afin qu`ils puissent les exécuter dans le cadre de leur pipeline de Build. Les données de test sont toujours un problème lors de l`implémentation de tests de toute sorte. Dans les tests de test, les données d`essai sont particulièrement gênantes puisque vous avez potentiellement de nombreux services chacun avec leur propre base de données (Voir l`image dans la section précédente). Pour configurer un environnement de test pour ces tests, vous devez fournir à chacune de ces bases de données des résultats de test qui correspondent aux attentes de vos tests. Spring Cloud Contract est un projet open source qui prend en charge ce style de test. Les contrats doivent être testés en permanence pour s`assurer qu`ils sont valides au fil du temps. Cela peut être réalisé de deux façons. Comme vous pouvez le voir, il y a de bonnes raisons d`implémenter des tests de contrat pilotés par le consommateur pour tester les interfaces entre les services dans un système distribué comme une architecture de microservice. Si vous êtes intéressé par la mise en œuvre des tests CDC, examinez le Framework PACT ou le contrat Spring Cloud. Pour un exemple sur la façon d`utiliser PACT, regardez ce billet de blog. 2018-01-01: à l`origine, cette entrée Bliki était intitulée intégration Contract test.

Depuis qu`il a été écrit le terme « test de contrat » est devenu largement utilisé pour ces, alors j`ai changé l`entrée Bliki. Les tests du monde réel ont des phases d`installation et de démontage. Les tests contractuels ne sont pas différents. Un cas d`utilisation courant pour les tests de contrat est de renseigner le système testé avec certaines données, puis d`effectuer des opérations sur celui-ci et enfin supprimer ces données de test. Les tests de contrat vérifient le contrat des appels de service externe, mais pas nécessairement les données exactes. Souvent, un stub capture un instantané d`une réponse à une date donnée, puisque le format des données est important plutôt que les données réelles. Dans ce cas, le test de contrat doit vérifier que le format est le même, même si les données réelles ont changé. Dans un système distribué, tester l`intégration réussie entre les services distribués est essentiel pour s`assurer que les services ne seront pas échouer dans la production juste parce qu`ils ne parlent pas la même langue.

Cet article aborde trois approches pour implémenter des tests d`intégration entre les services distribués et montre les avantages des tests de contrat pilotés par le consommateur. Lors de l`écriture d`un test pour une interaction, demandez-vous ce que vous essayez de couvrir. Les contrats devraient être sur la capture: les tests de contrat axés sur le consommateur (tests CDC) sont une spécialisation des tests simulés comme décrit ci-dessus. Ils fonctionnent comme des tests simulés avec la spécialité que le contrat d`interface est conduit par le consommateur et non, comme on peut s`y attendre naturellement, par le fournisseur. Cela fournit quelques avantages intéressants que nous allons venir à plus tard dans cet article. L`un des cas les plus courants de l`utilisation d`un TestDouble est lorsque vous communiquez avec un service externe. Typiquement, ces services sont maintenus par une équipe différente, ils peuvent être soumis à des réseaux lents et peu fiables, et peut-être eux-mêmes peu fiables. C`est pourquoi un double test est pratique, il arrête vos propres tests d`être lent et peu fiable. Mais le test contre un double soulève toujours la question de savoir si le double est en effet une représentation exacte du service extérieur, et que se passe-t-il si le service extérieur modifie son contrat? Parallèlement à cela, vous pouvez également exécuter des collections de contrats à l`aide de moniteurs de facteur. Les moniteurs peuvent fonctionner périodiquement, ce qui en fait un excellent outil pour obtenir une vue d`ensemble à long terme des ruptures de contrat.

En outre, lors de la configuration d`un environnement d`exécution, certains des services déployés peuvent être développés par une autre équipe ou même complètement en dehors de votre organisation.