Découvrez comment intégrer facilement l'analyse statique, les tests unitaires et d'autres méthodes de test de logiciels C et C++ dans votre pipeline CI/CD. Inscrivez-vous pour la démo >>

5 Tests d'API «indispensables» pour la sécurité, la fiabilité et les performances des API

Par Parasoft

31 mars 2016

4  min lire

S'assurer que vos API offrent le niveau de sécurité, de fiabilité et de performances nécessaire implique inévitablement le développement, l'exécution continue et la maintenance religieuse d'un large éventail de tests complexes.

Voici 5 "incontournables" pour les tests d'API qui vous aideront à y parvenir :

1. Création de tests intelligents et validation automatisée

Exposer les services en tant qu'API sans durcissement approprié, c'est comme amener votre enfant dans un pays «en développement» sans obtenir au préalable les vaccinations recommandées. Heureusement, les outils et les stratégies pour obtenir le durcissement approprié sont une extension de ceux qui se sont avérés efficaces pour les tests SOA - tout comme le processus d'administration des vaccins nécessaires pour les voyages à l'étranger est essentiellement une extension de l'administration des vaccinations nationales recommandées.

Étant donné que l'exposition extrême et le potentiel d'utilisation abusive des API rendent le test d'un large éventail de conditions et de cas critiques critiques, l'automatisation est au premier plan. La création et l'exécution de tests automatisés simples avec une validation limitée ou manuelle auraient peut-être suffi compte tenu de la portée interne de la SOA, mais une automatisation plus sophistiquée et plus étendue est nécessaire pour être sûr que vos API sont suffisamment robustes pour survivre dans la nature. Vous avez besoin d'un niveau d'automatisation qui vous offre un ensemble complet de cas de test fonctionnels pouvant être répétés de manière systématique.

Les fonctionnalités recommandées pour cet objectif incluent une interface intuitive pour automatiser des scénarios complexes sur la couche de messagerie, les ESB, les bases de données et les mainframes:

  • Définition de scénarios de test automatisés sur le large éventail de protocoles et de types de messages utilisés dans les API: REST, JSON, MQ, JMS, EDI, messages de longueur fixe, etc.
  • Automatisation de la validation multicouche riche sur plusieurs points de terminaison impliqués dans des scénarios de test de bout en bout.
  • Paramétrage des messages de test, des validations et des configurations à partir de sources de données, de valeurs extraites de scénarios de test ou de variables.
  • Définition d'une logique de flux de test sophistiquée sans nécessiter de script.
  • Visualisation de la façon dont les messages et les événements circulent dans les architectures distribuées pendant l'exécution des tests.

2. Gestion des modifications pour les actifs et les environnements de test

Les API en constante évolution aident les organisations à garder une longueur d'avance sur la concurrence tout en répondant aux demandes de l'entreprise. Pourtant, ce changement fréquent présente des risques de qualité importants si la suite de tests automatisés ne parvient pas à suivre le rythme de l'évolution de l'API.

Un système de mise à jour rapide, simple et précise des ressources de test est essentiel pour garder les ressources de test synchronisées avec l'API en évolution. Si vous pouvez évaluer automatiquement l'impact des modifications apportées aux tests existants, puis mettre à jour rapidement les tests existants (ou en créer de nouveaux) en réponse aux impacts de changement identifiés, vous pouvez réduire considérablement le temps nécessaire pour garantir que vos tests n'échouent pas. en raison des changements attendus… ou négliger de nouvelles fonctionnalités critiques.

3. Virtualisation des services pour les environnements de test simulés

Virtualisation des services crée des environnements de test simulés qui fournissent un accès à tout moment et en tout lieu au comportement des composants système dépendants qui sont indisponibles, difficiles d'accès ou difficiles à configurer pour le développement ou les tests. Les « composants dépendants » peuvent inclure des mainframes, des applications mobiles frontales, des bases de données, des services Web, des applications tierces ou d'autres systèmes qui échappent au contrôle direct de votre équipe. La virtualisation des services peut être utilisée conjointement avec la virtualisation matérielle/OS pour accéder aux environnements dont vous avez besoin pour tester plus tôt, plus rapidement ou plus complètement.

Dans le contexte des tests d'API, la virtualisation des services peut être appliquée de deux manières principales:

  • Pour fournir l'accès au comportement du composant dépendant (par exemple, à partir d'une application mobile, d'une base de données, d'un système hérité ou d'un service tiers) dont vous avez besoin pour valider complètement votre API.
  • Pour imiter le comportement de vos propres API, en créant un environnement de test que les consommateurs d'API peuvent développer et tester sans impact sur votre environnement de production, ou pour permettre au développement et aux tests de commencer avant que vos API ne soient terminées.

4. Tests de performances approfondis - idéalement avec la virtualisation des services

En raison de la nature hautement exposée des API, il existe un fort potentiel de volumes de trafic imprévisibles et souvent volatils. Pour déterminer si votre API satisfera les SLA en cas de demande erratique ou croissante à laquelle les API sont généralement confrontées, il est essentiel d'augmenter la portée des tests de performances. Vous pouvez utiliser la virtualisation des services (décrite ci-dessus) pour créer des environnements de test simulés qui vous aident à tester par rapport à différents scénarios de performances qui seraient autrement difficiles à créer dans l'environnement de test.

Par exemple, vous pouvez facilement définir des conditions de performances (par exemple, synchronisation, latence, délai) pour émuler les performances de pointe, attendues et lentes, peut-être pour vous aider à planifier les rafales de cloud ou à déterminer comment l'API pourrait répondre lorsque quelqu'un y accède depuis la Chine. . Vous pouvez également configurer diverses conditions d'erreur et d'échec difficiles à reproduire ou à répliquer avec des systèmes réels. Par exemple, si vos API reposent sur Amazon Web Services, vous pouvez facilement simuler un scénario dans lequel AWS est en panne. Cette capacité à configurer rapidement un large éventail de conditions dans des systèmes dépendants est essentielle pour déterminer si vos API fournissent des réponses raisonnables - ou du moins échouent correctement - dans des conditions exceptionnelles.

Une dernière façon d'adopter la virtualisation des services facilite les tests de performances: vous pouvez «virtualiser» toutes les connexions à des systèmes tiers, en éliminant de manière fiable le risque que vos tests de résistance aient un impact sur des services que vous n'êtes pas autorisé (ou budgété) à barrer avec des messages de test.

5. Tests de sécurité approfondis - idéalement avec la virtualisation des services

Compte tenu de la surface d'attaque accrue des API, une stratégie de test de sécurité à multiples facettes est essentielle pour garantir que le développement a intégré le niveau de sécurité approprié dans votre application. Ceci comprend:

  • Exécution de scénarios de test complexes d'authentification, de chiffrement et de contrôle d'accès.
  • Génération d'un large éventail de scénarios d'attaque par pénétration impliquant un fuzzing de paramètres, des injections, de grandes charges utiles, etc.
  • Exécution de scénarios d'attaque par pénétration par rapport à vos scénarios de test fonctionnel existants.
  • Surveiller le back-end pendant l'exécution du test afin de déterminer si la sécurité est réellement compromise.

De plus, si vous adoptez la virtualisation des services (décrite ci-dessus), vous pouvez en tirer parti pour faire passer vos tests de sécurité au niveau supérieur:

  • Il fournit des moyens rapides d'émuler des scénarios d'attaque et d'émuler différents comportements de sécurité des dépendances. Cela vous permet de tirer plus de valeur de vos scénarios de test fonctionnel existants (puisque vous pouvez les exécuter par rapport à différents scénarios de sécurité qui seraient autrement difficiles à configurer et impossibles à tester).
  • Il permet d'effectuer des tests de sécurité approfondis sans un expert en sécurité. Les scénarios de test existants peuvent être facilement exécutés sur un large éventail de scénarios de sécurité préconfigurés.
  • Il vous aide à isoler et à vous concentrer sur la réponse de vos API à divers scénarios d'attaque et différents comportements de sécurité des dépendances.

Test d'API: recommandations de Forrester

Vous voulez en savoir plus sur les tests d'API? Téléchargez un rapport Forrester Wave gratuit qui évalue 9 fournisseurs d'outils d'automatisation des tests fonctionnels sur 40 critères pour aider les organisations travaillant sur des applications d'entreprise, mobiles et Web à sélectionner le meilleurs outils de test d'API.

Par Parasoft

Les outils de test de logiciels automatisés de pointe de Parasoft prennent en charge l'ensemble du processus de développement logiciel, depuis le moment où le développeur écrit la première ligne de code jusqu'aux tests unitaires et fonctionnels, jusqu'aux tests de performance et de sécurité, en exploitant des environnements de test simulés en cours de route.

Recevez les dernières nouvelles et ressources sur les tests de logiciels dans votre boîte de réception.