Articles

Test de fuzzing en ingénierie logicielle

Le fuzzing est une technique d’ingénierie logicielle qui consiste à tester le logiciel en envoyant des données aléatoires pour trouver des erreurs. Essayons de comprendre les avantages et les inconvénients du test de fuzzing!

Fuzzing, également connu sous le nom de test de fuzz, est une technique de test logiciel automatisée qui consiste à fournir des données invalides, inattendues ou aléatoires (fuzz) en tant qu’entrées d’un programme informatique. L’objectif est de trouver des erreurs de codage, des bugs, des vulnérabilités de sécurité et des failles qui peuvent être exploitées. Cet article commence par expliquer quelques types de fuzzing de base. La métaphore «tester la serrure» est ensuite utilisée pour expliquer les rouages de cette technique. Une liste d’outils disponibles est donnée et un ensemble de meilleures pratiques est exploré pour que le fuzzing soit mené de manière éthique, efficace et sûre.

Black-box fuzzing is the most common type of fuzzing. It does not require any knowledge about the internal architecture of the software being tested. The tester only needs to provide the input data and observe the output. This type of fuzzing is suitable for testing applications with a user interface, such as web browsers, media players, and office applications.

White-box fuzzing requires knowledge about the internal architecture of the software being tested. The tester needs to understand the code and identify the areas that need to be tested. This type of fuzzing is suitable for testing complex applications, such as operating systems, databases, and network protocols.

Métaphore du Test de la Serrure

La métaphore du test de la serrure est utilisée pour expliquer le fonctionnement de la technique de fuzzing. Cette métaphore compare le processus de fuzzing à un test pour vérifier si une serrure est ouverte ou fermée. Dans ce scénario, le tester est le cambrioleur et la serrure est le logiciel à tester. Le but du cambrioleur est d’ouvrir la serrure en essayant différentes clés. Dans le cas du fuzzing, le tester envoie des données aléatoires au logiciel pour voir si elles peuvent le faire planter ou révéler des vulnérabilités.

Le processus de fuzzing commence par la génération de données aléatoires. Ces données sont ensuite envoyées au logiciel pour tester sa robustesse. Si le logiciel fonctionne correctement, les données sont rejetées et le processus recommence avec des données différentes. Si le logiciel plante ou révèle une vulnérabilité, le tester peut identifier le problème et le corriger.

Le fuzzing est une technique très efficace pour trouver des bugs et des vulnérabilités dans un logiciel. Cependant, il est important de comprendre l’architecture du logiciel pour pouvoir l’utiliser correctement et efficacement. Une bonne compréhension de l’architecture du logiciel permet de cibler les zones à tester et d’améliorer les résultats.

Outils et Pratiques Recommandées

Il existe plusieurs outils disponibles pour effectuer des tests de fuzzing. Certains outils sont spécialisés pour tester des applications spécifiques, tandis que d’autres sont plus génériques et peuvent être utilisés pour tester tout type d’application. Les outils les plus populaires sont Sulley, Peach Fuzzer, SPIKE, American Fuzzy Lop (AFL) et Boofuzz.

En plus des outils disponibles, il existe certaines pratiques recommandées pour effectuer des tests de fuzzing de manière éthique, efficace et sûre. Il est important de bien documenter le processus de test et d’informer les développeurs des résultats obtenus. Il est également important de ne pas divulguer les résultats du test à des tiers sans l’autorisation des développeurs. Enfin, il est important de respecter la loi et les règles en vigueur lors de l’exécution des tests.

Le fuzzing est une technique très puissante qui peut être utilisée pour trouver des bugs et des vulnérabilités dans un logiciel. Cependant, il est important de comprendre l’architecture du logiciel et d’utiliser les bons outils et pratiques pour obtenir les meilleurs résultats. Une bonne compréhension de l’architecture et une utilisation appropriée des outils et pratiques peuvent aider
Source de l’article sur DZONE

Améliorer la prise de décision avec Dyna-Q et Q-Learning

Dyna-Q et Q-Learning sont des méthodes puissantes pour améliorer la prise de décision. Elles offrent des solutions innovantes et efficaces pour résoudre des problèmes complexes.

Introduction à l’apprentissage Q

The learning process begins with initializing the Q-values to arbitrary values. After that, the agent interacts with the environment, observing the reward for each action taken. The agent then updates its Q-values using the Bellman equation, which takes into account the reward observed and the estimated future reward.

The agent continues this process until it converges to a policy that maximizes its expected reward. This process is known as exploration-exploitation, where the agent explores different actions to find the best one, and then exploits that action to maximize its reward.

Introduction à l’apprentissage Q

L’apprentissage Q est un algorithme sans modèle essentiel dans l’apprentissage par renforcement, se concentrant sur l’apprentissage de la valeur, ou «valeur Q», des actions dans des états spécifiques. Cette méthode excelle dans les environnements imprévisibles, car elle n’a pas besoin d’un modèle prédéfini de son environnement. Il s’adapte aux transitions stochastiques et aux récompenses variées de manière efficace, ce qui le rend polyvalent pour les scénarios où les résultats sont incertains. Cette flexibilité permet à l’apprentissage Q d’être un outil puissant dans les scénarios nécessitant une prise de décision adaptative sans connaissance préalable des dynamiques de l’environnement.

Processus d’apprentissage:

L’apprentissage Q fonctionne en mettant à jour une table de valeurs Q pour chaque action dans chaque état. Il utilise l’équation de Bellman pour mettre à jour ces valeurs de manière itérative en fonction des récompenses observées et de sa estimation des récompenses futures. La politique – la stratégie de choix d’actions – est dérivée de ces valeurs Q.

Le processus d’apprentissage commence par l’initialisation des valeurs Q à des valeurs arbitraires. Après cela, l’agent interagit avec l’environnement, observant la récompense pour chaque action prise. L’agent met alors à jour ses valeurs Q en utilisant l’équation de Bellman, qui tient compte de la récompense observée et de la récompense future estimée.

L’agent continue ce processus jusqu’à ce qu’il converge vers une politique qui maximise sa récompense attendue. Ce processus est connu sous le nom d’exploration-exploitation, où l’agent explore différentes actions pour trouver la meilleure, puis exploite cette action pour maximiser sa récompense.

Architecture de l’apprentissage Q

L’architecture de l’apprentissage Q est relativement simple et peut être représentée par un diagramme à blocs. Il comprend un agent qui interagit avec un environnement et un tableau de valeurs Q qui stocke les valeurs Q pour chaque action dans chaque état. Lorsque l’agent interagit avec l’environnement, il observe la récompense et met à jour le tableau de valeurs Q en utilisant l’équation de Bellman.

Le tableau de valeurs Q est le cœur de l’architecture de l’apprentissage Q. Il stocke les valeurs Q pour chaque action dans chaque état et est mis à jour par l’agent en fonction des récompenses observées et des estimations des récompenses futures. Une fois que le tableau est mis à jour, l’agent peut choisir la meilleure action à prendre

Source de l’article sur DZONE

Les 5 meilleurs outils pour les tests automatisés du front-end

Découvrez les 5 meilleurs outils pour vous aider à effectuer des tests automatisés du front-end de manière efficace et simple !

Test de l’interface utilisateur (UI) et de l’expérience utilisateur (UX) d’une application web

The most important benefit of automated front-end testing is that it allows for the creation of a database of test results. This database can be used to compare different versions of the application and to identify issues that have been fixed since the last version. This helps to ensure that the application is always up to date and that any problems are quickly identified and resolved. 

Le test frontal fait référence à l’évaluation de l’interface utilisateur (UI) et de l’expérience utilisateur (UX) d’une application Web. Étant donné qu’il garantit que le programme est convivial et fonctionne comme prévu, cette phase est essentielle dans le processus de développement logiciel.  

Le test frontal automatisé implique l’utilisation d’outils pour automatiser le processus de test. Cette approche permet de gagner du temps et des ressources en permettant aux testeurs d’exécuter des tests efficacement. De plus, elle améliore la qualité des tests en permettant de tester une variété de scénarios, ce qui facilite la découverte de problèmes qui autrement seraient impossibles à trouver. 

Le principal avantage du test frontal automatisé est qu’il permet de créer une base de données de résultats de tests. Cette base de données peut être utilisée pour comparer différentes versions de l’application et pour identifier les problèmes qui ont été résolus depuis la dernière version. Cela permet de s’assurer que l’application est toujours à jour et que tous les problèmes sont rapidement identifiés et résolus. 

Source de l’article sur DZONE

Systèmes distribués: le split-brain

Les systèmes distribués sont une technologie complexe qui peut présenter des risques, tels que le split-brain. Apprenons à mieux comprendre ce phénomène et à le gérer.

Le problème du Split-Brain

Split-brain can be caused by a variety of factors, including network partitions, hardware failures, or software bugs. It can also be triggered by intentional actions, such as when an administrator deliberately isolates a node from the cluster. In any case, the result is the same: two or more isolated groups of nodes, each with its own view of the data.

Real-World Example

A real-world example of split-brain occurred in 2017 when a major outage affected Amazon Web Services’ S3 storage service. The outage was caused by a network partition that split the S3 cluster into two isolated groups. As a result, some requests to the S3 service were routed to one group, while others were routed to the other group. This caused data inconsistency and led to widespread disruption.

The S3 outage serves as a reminder of the importance of testing distributed systems for split-brain scenarios. While it is impossible to completely eliminate the risk of split-brain, it is possible to reduce the impact by designing systems that are resilient to network partitions and other forms of failure.

Best Practices

When designing distributed systems, it is important to consider how the system will handle split-brain scenarios. In some cases, it may be possible to use techniques such as quorum or leader election to minimize the impact of split-brain. However, these techniques should be used with caution, as they can introduce additional complexity and overhead.

In general, the best approach is to design systems that are resilient to network partitions and other forms of failure. This can be achieved by using techniques such as replication, redundancy, and fault tolerance. It is also important to test distributed systems for split-brain scenarios before they are deployed in production.

Le problème du Split-Brain

Dans les systèmes distribués, il est essentiel de maintenir une vue cohérente des données sur tous les nœuds pour un fonctionnement correct. Lorsqu’un scénario de split-brain se produit, chaque groupe partitionné peut recevoir des mises à jour différentes, ce qui entraîne une incohérence des données et rend difficile la résolution des conflits lorsque les partitions se reconnectent finalement.

Le split-brain peut être causé par une variété de facteurs, notamment des partitions réseau, des pannes matérielles ou des bogues logiciels. Il peut également être déclenché par des actions intentionnelles, telles que lorsqu’un administrateur isole délibérément un nœud du cluster. Dans tous les cas, le résultat est le même : deux ou plusieurs groupes isolés de nœuds, chacun ayant sa propre vue des données.

Exemple concret

Un exemple concret de split-brain s’est produit en 2017 lorsqu’une panne majeure a affecté le service de stockage S3 d’Amazon Web Services. La panne était causée par une partition réseau qui a divisé le cluster S3 en deux groupes isolés. En conséquence, certaines demandes au service S3 ont été acheminées vers un groupe, tandis

Source de l’article sur DZONE

Chorégraphie de modèles : optimiser la communication en systèmes distribués.

La chorégraphie de modèles est un outil puissant pour optimiser la communication en systèmes distribués. Elle permet de coordonner et de gérer les interactions entre les différents acteurs.

Dans le paysage technologique en constante évolution d’aujourd’hui, il est commun que les applications migrent vers le cloud pour embrasser l’architecture des microservices.

Logiciel Chorégraphie

La chorégraphie est une méthodologie qui se concentre sur l’interaction entre les services sans l’utilisation d’un orchestrateur central. Au lieu de cela, chaque service est responsable de la communication avec les autres services. Les services peuvent communiquer directement entre eux ou via un bus de messages. La chorégraphie est une méthode très populaire pour gérer la communication entre les microservices car elle offre une plus grande flexibilité et une plus grande scalabilité que l’orchestration. Il est également plus facile à mettre en œuvre et à maintenir.

Avantages et inconvénients de la chorégraphie

Bien que la chorégraphie offre une plus grande flexibilité et une plus grande scalabilité, elle présente également certaines limitations. Par exemple, le développement et le déploiement des services peuvent être plus difficiles car ils doivent être conçus pour fonctionner ensemble. De plus, il est plus difficile de déboguer et de maintenir des applications basées sur la chorégraphie car il n’y a pas d’orchestrateur central pour surveiller le flux de messages entre les services. Enfin, la chorégraphie peut être plus difficile à mettre en œuvre dans des environnements distribués car elle nécessite une coordination stricte entre les services.

Conclusion

La chorégraphie est une méthodologie très populaire pour gérer la communication entre les microservices. Il offre une plus grande flexibilité et une plus grande scalabilité que l’orchestration, mais il présente également certaines limitations. Il est plus difficile à développer et à déployer, à déboguer et à maintenir, et peut être plus difficile à mettre en œuvre dans des environnements distribués. Cependant, dans certains cas, la chorégraphie peut être la meilleure solution pour gérer la communication entre les microservices. Il est important de comprendre les nuances et les avantages et les inconvénients de cette méthodologie avant de choisir le bon logiciel pour votre application.

Logiciel Chorégraphie

La chorégraphie est une méthodologie qui se concentre sur l’interaction entre les services sans l’utilisation d’un orchestrateur central. Au lieu de cela, chaque service est responsable de la communication avec les autres services. Les services peuvent communiquer directement entre eux ou via un bus de messages. La chorégraphie est une méthode très populaire pour gérer la communication entre les microservices car elle offre une plus grande flexibilité et une plus grande scalabilité que l’orchestration. Il est également plus facile à mettre en œuvre et à maintenir.

Avantages du logiciel Chorégraphie

La chorégraphie offre une variété d’avantages par rapport à l’orchestration. Tout d’abord, elle permet aux services de communiquer directement entre eux sans avoir à passer par un orchestrateur central. Cela signifie que chaque service peut fonctionner indépendamment des autres, ce qui permet une plus grande flexibilité et une plus grande scalabilité. De plus, la chorégraphie est plus facile à mettre en œuvre et à maintenir car il n’y a pas d’or

Source de l’article sur DZONE

Test de pénétration d'application Web : qu'est-ce que c'est ?

Le test de pénétration d’application Web est une méthode pour vérifier la sécurité des applications Web. Découvrez comment cela fonctionne !

C’est également connu sous le nom de test de pénétration d’application web ou de test de sécurité, qui est une évaluation organisée de la sécurité d’une application web pour identifier l’exposition et la faiblesse qui pourraient être exploitées par des acteurs malveillants.

1. Identifying the target application and its environment. 

2. Gathering information about the target application. 

3. Identifying potential vulnerabilities. 

4. Exploiting the identified vulnerabilities. 

5. Documenting the results and providing recommendations. 

Le test d’intrusion des applications web, également connu sous le nom de test de sécurité ou de test d’intrusion, est une évaluation organisée de la sécurité d’une application web afin d’identifier les expositions et les faiblesses qui pourraient être exploitées par des acteurs malveillants. L’objectif principal du test d’intrusion est d’évaluer de manière proactive la posture de sécurité d’une application web et d’identifier les vulnérabilités potentielles avant que des attaquants ne puissent les exploiter.

Pendant un test d’intrusion d’application web, des professionnels de la sécurité qualifiés, connus sous le nom de testeurs d’intrusion ou de hackers éthiques, simulent divers scénarios d’attaque pour découvrir les failles de sécurité qui pourraient entraîner un accès non autorisé, des violations de données ou d’autres activités malveillantes. Le processus implique les points suivants :

1. Identification de l’application cible et de son environnement.

2. Recueil d’informations sur l’application cible.

3. Identification des vulnérabilités potentielles.

4. Exploitation des vulnérabilités identifiées.

5. Documentation des résultats et fourniture de recommandations.

Le test d’intrusion des applications web est un processus essentiel pour assurer la sécurité des logiciels et des systèmes informatiques. Les tests d’intrusion peuvent être effectués manuellement ou automatiquement à l’aide de logiciels spécialisés. Ces outils peuvent être utilisés pour rechercher des vulnérabilités connues et des failles de sécurité dans les applications web et les systèmes informatiques. Les tests d’intrusion peuvent également être effectués pour vérifier si les applications web respectent les normes et les réglementations en matière de sécurité.

Les tests d

Source de l’article sur DZONE

Apache Druid: 1000+ QPS Facile pour l'Analyse

des Données

Apache Druid offre une puissance de 1000+ QPS pour l’analyse des données, ce qui rend plus facile et plus rapide que jamais la prise de décision basée sur des données.

Les cas d’utilisation des analytics évoluent avec une augmentation du volume et des requêtes à faible latence. Mais l’échelle des analytics pour les requêtes à haut QPS nécessite une certaine considération. Si vos requêtes récupèrent des lignes simples dans des tables avec peu de colonnes ou de lignes ou agrègent une petite quantité de données, alors virtuellement n’importe quelle base de données peut répondre à vos exigences QPS.

Mais les choses deviennent difficiles si vous avez une application d’analytique (ou prévoyez en construire une) qui exécute beaucoup d’agrégations et de filtres sur des données à haute dimension et à haute cardinalité à grande échelle. Le genre d’application où beaucoup d’utilisateurs devraient pouvoir poser n’importe quelle question et obtenir leurs réponses instantanément sans contraintes sur le type de requêtes ou la forme des données.

Testing is a key factor in scaling analytics for high QPS. It’s important to understand the performance of your analytics application under different scenarios. This will help you identify bottlenecks and optimize your queries for better performance.

Les cas d’utilisation d’analytique évoluent avec des requêtes à haut volume et à faible latence. Mais le passage à l’échelle des analyses pour des requêtes élevées par seconde (QPS) nécessite une certaine prise en compte. Si vos requêtes récupèrent des lignes simples dans des tables avec peu de colonnes ou de lignes ou agrègent une petite quantité de données, alors pratiquement n’importe quelle base de données peut répondre à vos exigences QPS.

Mais les choses deviennent difficiles si vous avez une application d’analytique (ou prévoyez d’en construire une) qui exécute de nombreuses agrégations et filtres sur des données à haute dimension et à haute cardinalité à l’échelle. Le genre d’application où de nombreux utilisateurs devraient pouvoir poser n’importe quelle question et obtenir leurs réponses instantanément sans contraintes sur le type de requêtes ou la forme des données.

Le test est un facteur clé pour passer à l’échelle des analyses pour des QPS élevés. Il est important de comprendre les performances de votre application d’analytique dans différents scénarios. Cela vous aidera à identifier les goulots d’étranglement et à optimiser vos requêtes pour une meilleure performance.

Source de l’article sur DZONE

Implémentation d'Istio et API Gateway

L’implémentation d’Istio et d’un API Gateway peut offrir une meilleure sécurité et une plus grande flexibilité pour votre système. Découvrez les avantages de cette solution !

Avec l’arrivée des microservices, du cloud et des conteneurs, les architectes et l’équipe DevOps doivent repenser et réinventer comment simplifier la complexité du réseau et atteindre une sécurité réseau sans confiance avant d’être dans de mauvaises eaux. Il y a des limites aux passerelles API dans le parcours de modernisation des applications lorsque nous considérons Istio par rapport aux passerelles API. Cependant, cet article discutera de différents scénarios pour mettre en œuvre Istio avec votre infrastructure de passerelle API existante.

## Avec l’arrivée des microservices, du cloud et des conteneurs, les architectes et l’équipe DevOps doivent réinventer la simplification de la complexité du réseau et atteindre une sécurité réseau sans confiance

Avec l’avènement des microservices, du cloud et des conteneurs, les architectes et l’équipe DevOps doivent repenser et réinventer la manière de simplifier la complexité du réseau et d’atteindre une sécurité de réseau sans confiance avant de se retrouver dans de mauvaises eaux. Il existe des limites aux passerelles API dans le parcours de modernisation de l’application lorsque nous considérons Istio par rapport aux passerelles API. Cependant, cet article discutera de différents scénarios pour mettre en œuvre Istio avec votre infrastructure existante de passerelle API.

Une des principales raisons pour lesquelles les entreprises choisissent Istio est sa capacité à fournir une sécurité de réseau sans confiance. Istio peut être utilisé pour fournir une sécurité de réseau sans confiance en utilisant des stratégies de contrôle d’accès basées sur les rôles, des stratégies de sécurité basées sur le contenu et des stratégies de sécurité basées sur le comportement. Les stratégies de sécurité basées sur le contenu peuvent être appliquées à l’aide d’une base de données qui stocke des informations sur les requêtes et les réponses entre le client et le serveur. Les stratégies de sécurité basées sur le comportement peuvent être appliquées en surveillant les activités des utilisateurs et en identifiant les comportements suspects.

En outre, Istio peut être utilisé pour fournir une visibilité complète du trafic entrant et sortant à l’aide d’un moteur de journalisation intégré. Les journaux peuvent être stockés dans une base de données pour une analyse ultérieure. Les journaux peuvent être utilisés pour surveiller les activités des utilisateurs, identifier les comportements suspects et appliquer des stratégies de sécurité basées sur le comportement. Les journaux peuvent également être utilisés pour déterminer si des attaques ont été effectuées contre le réseau et pour identifier les vulnérabilités du réseau. Enfin, Istio peut être utilisé pour fournir une authentification et une autorisation robustes à l’aide d’une base de données qui stocke des informations sur les utilisateurs et leurs rôles.

Source de l’article sur DZONE

Partie 2: Microservices avec Apache Camel et Quarkus

Dans cette partie, nous allons apprendre à créer des microservices avec Apache Camel et Quarkus. Nous verrons comment les deux outils peuvent être utilisés ensemble pour créer des applications modernes et performantes.

Exécution locale d’une application microservices basée sur Apache Camel et AWS SDK

Dans la première partie de cette série, nous avons vu une application de transfert d’argent simplifiée basée sur les microservices, mise en œuvre à l’aide des outils de développement Java Apache Camel et AWS SDK (Software Development Kit) et de Quarkus comme plate-forme d’exécution. Comme indiqué, il existe de nombreux scénarios de déploiement qui pourraient être envisagés pour exécuter la production d’une telle application; le premier et le plus simple consiste à l’exécuter localement de manière autonome. C’est le scénario que nous examinerons dans ce nouveau post.

Quarkus est capable d’exécuter vos applications de deux manières: en mode JVM (Java Virtual Machine) et en mode natif. Le mode JVM est la manière classique standard d’exécuter des applications Java. Ici, l’application en cours d’exécution n’est pas exécutée directement sur le système d’exploitation, mais dans un certain milieu d’exécution où des bibliothèques et des API Java sont intégrées et enveloppées. Ces bibliothèques et API peuvent être très volumineuses et elles occupent une partie spécifique de la mémoire appelée Resident Set Size (RSS). Pour en savoir plus sur le RSS et Quarkus (par opposition à la façon dont Spring Boot le gère), voir ici.

Lorsque vous exécutez votre application avec Quarkus en mode JVM, vous pouvez utiliser un outil appelé GraalVM pour compiler votre application en code natif. GraalVM est un outil open source qui permet de compiler des applications Java en code natif. Il prend en charge plusieurs langages, dont Java, JavaScript, Ruby, Python et R. GraalVM est capable de compiler votre application Java en code natif très rapidement, ce qui permet à votre application de s’exécuter plus rapidement et avec moins de consommation de mémoire. Il est également possible d’utiliser GraalVM pour compiler votre application en code natif et l’exécuter directement sur le système d’exploitation, sans passer par le mode JVM. Cela permet à votre application de fonctionner plus rapidement et avec une consommation de mémoire minimale.

Ainsi, grâce à l’utilisation du logiciel Quarkus et de GraalVM, vous pouvez facilement déployer votre application microservices-based money transfer sur votre système local. Vous pouvez également utiliser GraalVM pour compiler votre application en code natif et l’exécuter directement sur le système d’exploitation, ce qui permet à votre application de fonctionner plus rapidement et avec une consommation de mémoire minimale. Cela peut être très utile pour les applications qui nécessitent une exécution rapide et une consommation minimale de mémoire. De plus, vous pouvez également déployer votre application sur des plates-formes cloud telles que AWS ou Azure afin de bénéficier des avantages supplémentaires offerts par ces plates-formes.

Source de l’article sur DZONE

Tests unitaires et composants d'IBM App Connect Enterprise

Les tests unitaires et les composants d’IBM App Connect Enterprise offrent une solution complète pour la mise en œuvre et le déploiement de solutions intégrées.

Intégration des flux souvent interagir avec plusieurs services externes tels que des bases de données, gestionnaires de files d’attente MQ, régions CICS, etc., et le test des flux a historiquement exigé que tous les services soient disponibles lors de l’exécution des tests. Cela fournit un haut degré de confiance que les flux se comportent correctement pour les scénarios testés, mais le nombre de scénarios qui peuvent être testés de cette façon est souvent trop petit pour fournir une confiance suffisante que la solution globale se comportera correctement dans toutes (ou même la plupart) des circonstances. Le test unitaire avec des services simulés est une solution courante à ce problème dans le monde du développement d’applications, mais les solutions d’intégration peuvent nécessiter un style de test intermédiaire en raison du grand nombre d’interactions de service et des modèles de réutilisation courants dans le monde de l’intégration. Le développement App Connect Enterprise a commencé à appeler ces «tests de composants» il y a quelque temps: des tests unitaires qui testent des sections légèrement plus grandes de code et (à la différence des tests unitaires purs) sont autorisés à communiquer avec des services externes. Cet article tentera d’illustrer cette approche en utilisant une base de données comme exemple de service.

L’intégration des flux nécessite souvent l’interaction avec de multiples services externes tels que des bases de données, des gestionnaires de files d’attente MQ, des régions CICS, etc. La mise à l’essai des flux a historiquement nécessité que tous ces services soient disponibles lors des tests. Cela offre une grande confiance quant au fonctionnement correct des flux pour les scénarios testés, mais le nombre de scénarios qui peuvent être testés de cette manière est souvent trop faible pour donner une confiance suffisante quant au bon fonctionnement de la solution globale dans toutes les circonstances (ou même la plupart).

Le test unitaire avec des services simulés est une solution courante à ce problème dans le monde du développement d’applications, mais les solutions d’intégration peuvent nécessiter un style de test intermédiaire en raison du grand nombre d’interactions entre les services et des modèles de réutilisation courants dans le monde de l’intégration. Le développement d’App Connect Enterprise a commencé à appeler ces «tests composants» il y a un certain temps : des tests unitaires qui testent des sections légèrement plus grandes de code et (à la différence des tests unitaires purs) sont autorisés à communiquer avec des services externes. Cet article tentera d’illustrer cette approche à l’aide d’une base de données en tant que service d’exemple.

L’architecture des tests composants est relativement simple. Au lieu de tester le code en interagissant avec un service externe réel, un service simulé est utilisé à sa place. Les services simulés peuvent être écrits pour répondre à des requêtes spécifiques et retourner des données prédéfinies ou générées dynamiquement. Les tests composants peuvent alors être écrits pour tester le code en interagissant avec le service simulé, ce qui permet aux tests d’être exécutés sans avoir à dépendre d’un service externe réel. Les tests composants offrent une couverture plus large et plus complète que les tests unitaires, car ils peuvent être conçus pour tester plusieurs scénarios différents et pour tester le code en interagissant avec un service externe.

Les tests composants peuvent être utilisés pour tester les intégrations qui utilisent une base de données comme service externe. Les tests peuvent être conçus pour tester le code qui interagit avec la base de données, en envoyant des requêtes SQL et en vérifiant que les résultats sont corrects. Les tests peuvent également être conçus pour tester le code qui interagit avec la base de données en envoyant des requêtes SQL et en vérifiant que les résultats sont corrects. Les tests peuvent également être conçus pour tester le code qui interagit avec la base de données en envoyant des requêtes SQL et en vérifiant que les résultats sont corrects. Les tests peuvent également être conçus pour tester le code qui interagit avec la base de données en envoyant des requêtes SQL et en vérifiant que les résultats sont corrects. Les tests peuvent également être conçus pour tester le code qui interagit avec la base de données en envoyant des requêtes SQL et en vérifiant que les résultats sont corrects.

Les tests composants peuvent offrir une couverture plus large et plus complè

Source de l’article sur DZONE