🌴 Youpi dansons la Kapoeira 🕺 💃
Channel: Capitole du Libre
Date: 13/02/2024

Johanna Vauchel, Mehdi Rebiai

Avec le monde de la Data en perpétuelle croissance, l'outil Open Source Apache Kafka est devenu incontournable grâce à ces capacités de collecte, de traitement temps réel, de stockage et d'analyse de données.

Mais comment facilement tester toutes ces opérations dans un environnement d'intégration ?
La solution Open Source Kapoeira tente de répondre à cette problématique.

Sais-tu danser la Kapoeira ? 🎶 C'est du Cucumber 🥒 et du Kafka ! 🎬 🎺

C'est à l'aide d'un langage simple et normalisé basé sur Gherkin, qu'un test automatisé Kapoeira pourra être co-écrit par un QA, un PO ou un DEV. Il pourra servir à la fois de spécification, de test d'acceptance et de test de transformation de données sur une vraie infrastructure Kafka.

Burger Quiz 🍔 : venez découvrir Kapoeira à travers une démo live testant un Kafka Stream qui fabrique des hamburgers !

Si vous êtes intéressés, nous serons ravis de récolter vos retours et vos contributions pour nous aider à améliorer cet outil.

Ressources
Sources Kapoeira: https://github.com/lectra-tech/kapoeira
Slides du talk : https://jvauchel.github.io/kapoeira-dance/
Ressources du talk : https://github.com/jvauchel/kapoeira-dance
Kapoeira c'est quoi ?
Nous avons développé Kapoeira, un outil de tests d'intégration de Kafka Streams. Il utilise la syntaxe Gherkin afin de faciliter la lecture et l'écriture d'un test.

Pourquoi Kapoeira ?
Pour son métier, Lectra a développé de nombreux Kafka Streams, reliés les uns aux autres et définissant ainsi une pipeline de traitement de données.
Par conséquent, nous avions besoin de tester individuellement chaque brique.

Unitairement, Kafka propose la librairie TopologyTestDriver qui répond parfaitement au besoin.
Mais ce n'est pas suffisant. Pour compléter la pyramide de nos tests, nous avions aussi besoin de réaliser des tests d'intégration, à savoir des tests automatisés lancés par notre intégration continue et interagissant avec une vraie infrastructure Kafka.
Nous recherchions également un outil pouvant être utilisé par notre ingénieur QA, afin qu'il puisse enrichir notre base de tests autrement qu'avec des tests manuels.
L'état de l'art actuel ne nous proposait pas ce type de solution.

Comment Kapoeira a commencé ?
Nous avons alors pris la décision de créer un nouvel outil, et nous nous sommes inspirés de l'outil Karate, qui permet de tester des APIs HTTP.
Il permet d'écrire des fichiers par Feature dans le langage Gherkin, un langage simple proche des spécifications métier.

En 2020, nous créons donc Kapoeira, écrit grâce à la librairie Cucumber-Scala, et utilisant la DSL Gherkin.

Plus exactement, Kapoeira est capable de produire des messages dans des topics Kafka d'entrée, de consommer le résultat dans des topics Kafka de sortie, pour ensuite vérifier ce résultat.

Un exemple ?
Dans notre présentation, nous montrerons au travers d'une démo, un exemple de test Kapoeira contrôlant le bon fonctionnement d'un Kafka Stream, qui transforme des aliments en hamburger.
Le public pourra participer à l'écriture du test afin de démontrer l'accessibilité de la solution.

REX: Comment nous utilisons Kapoeira dans notre quotidien ?
Nous utilisons Kapoeira dès la phase de conception de nos User Stories, afin d'écrire ensemble les tests d'acceptance (PO/QA/DEV).
Puis, notre QA ajoute des tests supplémentaires lors de la phase de validation (tests de non-régression, tests de cas particuliers aux limites ...).
Enfin, notre QA a également créé des tests de bout en bout, permettant de valider plusieurs streams à la fois.

Comment puis-je utiliser Kapoeira ?
Kapoeira et ses sources sont disponibles sur GitHub à cette adresse https://github.com/lectra-tech/kapoeira et sous DockerHub à cette adresse https://hub.docker.com/r/lectratech/kapoeira.
Vous trouverez dans le ReadMe toutes les informations pour utiliser cet outil chez vous.
N'hésitez pas à le tester et à nous faire vos retours.
Vous êtes aussi invités à contribuer pour nous aider à enrichir cet outil.

Captation par @TVn7Toulouse