Threat Stack s’appelle désormais F5 Distributed Cloud App Infrastructure Protection (AIP). Commencez à utiliser Distributed Cloud AIP avec votre équipe dès aujourd’hui.
Tous les projets de développement logiciel, quelle que soit leur envergure, peuvent bénéficier de tests bien planifiés et correctement exécutés. Ils permettent de s’assurer que le logiciel développé fonctionne comme prévu et apporte de la valeur au client. Plus important encore, compte tenu du paysage actuel des cybermenaces, des tests correctement exécutés permettent de s’assurer que le logiciel n’est pas livré avec des erreurs ou des vulnérabilités susceptibles de compromettre son intégrité. En résumé, des tests de qualité permettent d’offrir aux clients des performances accrues, tout en leur garantissant une sécurité sous-jacente.
Chez Threat Stack, nous disposons d’un environnement de développement full stack complexe, qui exige de l’équipe d’ingénierie des tests une planification rigoureuse et de nombreuses prises de décision afin de garantir que tous les domaines fonctionnels de notre plateforme sont testés de manière efficace et optimale. Il s’agit notamment de choisir les outils de test à utiliser, car les outils appropriés nous permettent d’introduire l’automatisation, mais aussi d’accélérer les tests et d’assurer la reproductibilité, la cohérence et la précision des résultats.
Dans cet article, nous allons présenter dix des outils de test automatisé que nous utilisons, dans le but de partager quelques enseignements qui, nous l’espérons, vous aideront dans vos activités de test.
Avant d’examiner les outils, commençons toutefois par poser le contexte en nous intéressant aux principaux aspects que nos ingénieurs de test prennent en compte lorsqu’ils testent notre plateforme et son infrastructure.
- Les agents Threat Stack sont intégrés aux parcs de machines virtuelles Amazon Web Services des clients afin d’en assurer le suivi et la surveillance, qu’elles exécutent des distributions Linux — telles qu’Ubuntu, Amazon Linux, Red Hat Enterprise Linux, CentOS ou CoreOS — ou des versions de Windows telles que Windows Server 2012 R2, 2016 ou 2019.
- Nos clients peuvent utiliser des conteneurs ou Kubernetes, qui doivent être surveillés afin de détecter tout signe d’incident de sécurité.
- Chaque agent envoie de manière sécurisée des données à la Threat Stack Cloud Security Platform®, où elles sont ensuite analysées et traitées par l’un de nos nombreux microservices.
- Les données d’événements sont traitées par les règles Hôte, Fichier, CloudTrail, Renseignements sur les menaces et des règles personnalisées afin de générer des alertes classées par niveau de gravité et d’aider les équipes DevOps et de sécurité de nos clients à analyser ce qui se passe au sein de leurs systèmes.
- Toutes les données relatives aux événements, aux règles et aux alertes doivent être accessibles non seulement via notre application web, mais aussi via nos API Threat Stack.
- Nos clients peuvent récupérer ces données et les exporter vers leur propre système de stockage externe afin de réaliser leurs propres analyses.
- Threat Stack Application Security Monitoring, un composant de Threat Stack Cloud Security Platform, fonctionne comme un micro-agent qui surveille les charges utiles des applications, envoie des informations à la plateforme Threat Stack et avertit les développeurs s’il détecte des erreurs de codage sécurisé. Il surveille également les charges utiles des applications afin de détecter des comportements malveillants, tels que les attaques par scripts intersites (XSS).
Comme vous pouvez le constater, notre logiciel couvre un vaste champ d’action et doit le faire rapidement, de manière sécurisée et précise, et à grande échelle. Dans cette optique, examinons quelques-uns des outils de test que nous utilisons.
Outils de test que nous utilisons chez Threat Stack
Les ingénieurs logiciels spécialisés dans les tests, intégrés à leurs propres équipes fonctionnelles, sont non seulement chargés de tester les nouvelles fonctionnalités et fonctions développées en permanence, mais aussi d’ajouter des processus automatisés afin de s’assurer que le reste du produit continue de fonctionner comme prévu.
Pour témoigner de l’importance que notre organisation accorde à ces personnes, chaque ingénieur de test est également chargé de recommander les méthodes, outils et langages d’automatisation qu’il juge appropriés. Vous trouverez ci-dessous une liste de certains des outils que nous utilisons dans le cadre de nos efforts d’automatisation des tests. Notez que nous utilisons globalement un éventail d’outils plus large ; notre objectif ici est de présenter une sélection d’outils et de vous rappeler de choisir ceux qui conviennent le mieux aux projets spécifiques sur lesquels vous travaillez.
Avertissement : Les ressources mentionnées dans cet article ne sont pas classées en fonction de leur valeur supposée. Nos commentaires ne constituent pas non plus une quelconque recommandation. Notre objectif est simplement de vous fournir des informations qui, selon nous, pourraient vous être utiles pour approfondir vos connaissances sur les outils de test.
1. Capybara
Site web : https://teamcapybara.github.io/capybara/
Type : gratuit, Open source
Assistance : Groupe Google Ruby-Capybara
Dernière version : 3.29.0 (2 septembre 2019)
Capybara est la gem Ruby que nous utilisons avec Selenium pour interagir avec nos tests automatisés d’interface utilisateur exécutés dans un navigateur lors de tests de bout en bout. Capybara contient des méthodes intégrées qui reproduisent la manière dont un utilisateur peut visiter une page, remplir une zone de texte, cliquer sur un bouton, ou sélectionner une option dans une liste déroulante.
Le cauchemar de tout testeur logiciel, c’est lorsque les éléments web mettent un temps démesuré à se charger sur une page, entraînant des échecs de test inexpliqués. Chaque méthode fournie par Capybara intègre automatiquement des délais d’attente.
Capybara détecte les problèmes liés à l’expérience utilisateur en utilisant notre produit comme le feraient nos clients : connexion à notre application, navigation sur le site, consultation des événements déclenchés par nos systèmes de test, création de règles définissant les événements qui doivent déclencher des alertes, examen détaillé des informations relatives aux alertes affichées dans notre tableau de bord et modification de divers paramètres.
2. Gauge par ThoughtWorks
Site web : http://gauge.org
Type : gratuit, Open source
Assistance : groupe Google GetGauge, chat Gitter
Dernière version : 1.0.7 (29 août 2019)
Gauge est un framework d’automatisation des tests créé par ThoughtWorks Studio India, que nous utilisons pour mettre en place nos tests d’acceptation de l’interface utilisateur et des API. Bien que nous utilisions Gauge avec Ruby, il est également compatible avec Java, C#, JavaScript et Python. Gauge ressemble beaucoup à Cucumber, le framework BDD, à quelques différences près :
- Les plans de test se trouvent dans des fichiers de spécification rédigés en Markdown plutôt que dans les fichiers de fonctionnalités de Cucumber, ce qui facilite la rédaction et la maintenance des tests.
- Au lieu d’utiliser le format Étant donné / Alors / Quand de Cucumber, les étapes de test sont présentées sous forme de liste à puces.
En tant qu’outil de développement piloté par le comportement (BDD), Cucumber peut devenir quelque peu verbeux à mesure que le test se complexifie. Avec Gauge, chaque étape se présente sous la forme d’une puce claire, concise et facile à lire. De plus, Gauge intègre une fonctionnalité de génération de rapports dans plusieurs formats (XML, JSON, HTML). Il peut être utilisé aussi bien en ligne de commande que dans un environnement de développement intégré (IDE) tel que Visual Studio Code. Enfin, une documentation complète couvre de nombreux sujets, notamment l’installation, la rédaction de spécifications, des tutoriels avec des exemples, et bien plus encore.
3. Tests de charge avec Gatling
Site web : https://gatling.io/
Type : versions Enterprise et Open Source versions
Assistance : Groupe Google Gatling
Dernière version : 3.2.1 (27 août 2019)
Chez Threat Stack, Gatling permet d’effectuer des tests de charge en continu. Écrit en Scala, il peut être utilisé comme outil autonome ou intégré à votre produit en tant que dépendance avec Maven.
Pour démontrer sa rapidité et sa puissance, nous avons pu générer trois millions de requêtes en dix minutes dans notre environnement de test et constater que toutes avaient obtenu une réponse en moins de 800 millisecondes.
Comme l’indique BlazeMeter dans son article de blog, Huit raisons d’utiliser Gatling pour vos tests de charge, « Gatling génère un tableau de bord détaillé des métriques, consultable après l’exécution des tests sans avoir à ajouter de plug-in supplémentaire. Le rapport est enregistré sous forme de fichier HTML, qui peut facilement être conservé en vue d’analyses ultérieures et de comparaisons de métriques. De plus, le rapport est interactif, ce qui vous permet d’effectuer des analyses plus approfondies et de vous concentrer sur des requêtes spécifiques, en complément de la vue d’ensemble. »
4. Test Kitchen par Chef.io
Site web : https://kitchen.ci/
Type : Open source
Assistance : Communauté Chef.io
Dernière version : 2.2.0 (26 avril 2019)
Test Kitchen est le produit de Chef.io que nous utilisons pour automatiser la création et la suppression des différents environnements Amazon Web Services employés dans le cadre de nos tests. Test Kitchen est un outil d’infrastructure de test qui vous permet d’exécuter votre code configuré de manière isolée sur une ou plusieurs plateformes. Kitchen prend en charge nativement de nombreux frameworks de test, notamment Chef InSpec. Kitchen est utilisé par tous les cookbooks communautaires gérés par Chef et constitue l’outil de référence pour les tests d’intégration des cookbooks.
Learn.Chef.io propose une série bien conçue de modules de formation et de démonstrations, dont un excellent module intitulé Bien démarrer avec Test Kitchen.
5. ScalaTest
Site web : http://www.scalatest.org
Type : gratuit, Open source
Assistance : Groupe Google ScalaTest
Dernière version : 3.0.8 (10 juin 2019)
Les ingénieurs de test de Threat Stack ont commencé à collaborer avec nos développeurs logiciels afin d’écrire des tests de services pour leur code Scala à l’aide de ScalaTest.
Nos tests d’intégration utilisent le trait de style ScalaTest FeatureSpec, qui décrit les tests unitaires suivant une approche de développement piloté par les tests (TDD) dans un format Étant donné / Quand / Alors. Comme l’indique la documentation de ScalaTest FeatureSpec est une « suite de tests dans laquelle chaque test représente un scénario d’une fonctionnalité. FeatureSpec est destiné à l’écriture de tests de plus haut niveau que les tests unitaires, par exemple des tests d’intégration, des tests fonctionnels et des tests d’acceptation. »
ScalaTest propose de nombreuses ressources de documentation utiles sur son site, notamment un guide de démarrage rapide détaillé, des procédures d’installation et un guide de l’utilisateur.
6. Chef InSpec
Site web : https://kitchen.ci/docs/verifiers/inspec/
Type : gratuit, Open source
Assistance : Communauté Chef.io
Dernière version : (11 août 2019)
Chez Threat Stack, nous utilisons Chef InSpec pour créer des tests basés sur Ruby afin de vérifier que tout fonctionne comme prévu une fois qu’un environnement de test a été créé à la volée. Les tests InSpec sont conçus pour être lisibles par tous. Si vous connaissez des frameworks de test tels que RSpec, le code InSpec devrait vous être familier. InSpec détecte les écarts et consigne les différences dans un rapport. Nous pouvons ensuite apporter les modifications nécessaires dans Chef afin d’amener le système à l’état souhaité.
Pour vous aider à démarrer, le Learn Chef Rally propose une section utile qui vous guide dans la configuration d’un environnement Docker et Docker Compose, le téléchargement de l’environnement d’exemple et son exploration à l’aide d’InSpec.
7. Mocha
Site web : https://mochajs.org/
Type : gratuit, Open source
Assistance : Groupe Gitter de Mocha, Groupe Google de Mocha
Dernière version : 3.2.1 (27 août 2019)
Mocha est un framework de test JavaScript qui s’exécute sur Node.js et dans un navigateur, ce qui nous permet d’effectuer des tests asynchrones. Comme les tests Mocha s’exécutent de manière séquentielle, nous bénéficions de rapports plus flexibles et plus précis, ainsi que de la possibilité d’associer les exceptions non interceptées aux cas de test correspondants.
Lorsque vous utilisez Mocha dans un environnement Node.js, vous pouvez vous servir du module assert intégré comme bibliothèque d’assertions. Chez Threat Stack, nous associons Mocha à Chai pour créer le framework de test de la fonctionnalité Threat Stack Application Security Monitoring .
Le site de Mocha propose un large éventail de documents couvrant aussi bien une présentation détaillée des fonctionnalités, l’installation et la prise en main que des informations sur des fonctionnalités et des tâches spécifiques.
8. Cypress.io
Site web : https://www.cypress.io/
Type :
- Outil d’exécution de tests gratuit et open source test runner
- Service de tableau de bord commercial, gratuit jusqu’à trois utilisateurs
Assistance : chat Gitter ; assistance par e-mail pour les utilisateurs payants
Dernière version : 3.4.1 (29 juillet 2019)
Cypress.io est conçu pour les développeurs front-end JavaScript qui ont uniquement besoin de tester leur travail dans Chrome. Cypress s’exécute dans la même boucle d’exécution que notre application, ce qui signifie que notre code de test peut lui aussi accéder à l’ensemble des fonctions, fenêtres, éléments web, minuteurs et services auxquels l’application Threat Stack a accès. Nous pouvons également lire et modifier le trafic réseau à la volée, ce qui nous permet d’ajouter des scénarios de test négatifs intéressants, par exemple pour vérifier ce qui se passe lorsqu’un serveur back-end est inaccessible.
Cypress.io propose une documentation bien structurée qui fournit une présentation complète, des informations pour bien démarrer et des concepts fondamentaux, notamment sur la rédaction et l’organisation des tests. Vous souhaitez découvrir ce que Cypress peut faire ? TestAutomationU vient de publier une nouvelle formation, Introduction à Cypress.
9. Jest
Site web : https://jestjs.io
Type : gratuit, Open source
Assistance : chat Discord de React, groupe Google de JestJs
Dernière version : 24.9 (août 2019)
Nos développeurs full stack ont remplacé Mocha / Chai par Jest pour tester l’interface frontend basée sur ReactJS de la plateforme Threat Stack Cloud Security, car Jest offre une meilleure prise en charge native des tests des composants ReactJS que nous utilisons. Grâce à ce framework de test JavaScript, nous pouvons créer de meilleurs tests unitaires et d’intégration. Ces deux outils, ReactJS et Jest, sont proposés par Facebook.
Comme pour la plupart des autres outils présentés dans cet article, le site web de Jest propose une documentation riche en exemples qui explique comment démarrer et configurer l’outil, et couvre un large éventail de cas d’utilisation.
10. Apache JMeter
Site web : https://jmeter.apache.org/
Type : gratuit, Open source
Assistance : Groupe Google JMeter
Dernière version : 5.1.1 (13 mars 2019)
Apache JMeter est un logiciel open source conçu pour effectuer des tests de charge sur le comportement fonctionnel et mesurer les performances. Selon son site, JMeter « peut être utilisé pour tester les performances de ressources statiques et dynamiques, ainsi que d’applications Web dynamiques. Il permet de simuler une charge importante sur un serveur, un groupe de serveurs, un réseau ou un objet afin d’en tester la robustesse ou d’analyser les performances globales sous différents types de charge. »
Nous utilisons JMeter pour analyser et mesurer les performances de notre application et de nos services. Cela nous permet de tester notre application sous de fortes charges, avec de nombreux utilisateurs simultanés, afin de déterminer comment améliorer notre capacité à monter en charge.
JMeter met à disposition un ensemble de documents utiles (notamment les guides « Bien démarrer », « Manuel de l’utilisateur » et « Bonnes pratiques »), ainsi que plusieurs tutoriels détaillés étape par étape.
Bons tests…
Aussi compétents que soient nos ingénieurs de test chez Threat Stack, ils n’iraient pas bien loin sans des processus systématiques reposant sur des outils puissants. À mesure que notre plateforme évolue, notre équipe continue d’affiner son expertise, d’enrichir constamment ses compétences et ses connaissances, d’adopter et d’intégrer de nouveaux outils, ainsi que de développer de nouvelles méthodes afin de continuer à apporter de la valeur au cycle de développement logiciel (SDLC) de Threat Stack. Nous espérons que cet article vous aura permis de mieux comprendre comment notre équipe de test utilise toute une gamme d’outils de test automatisé pour couvrir les multiples fonctionnalités de notre plateforme de sécurité cloud.
Threat Stack s’appelle désormais F5 Distributed Cloud App Infrastructure Protection (AIP). Commencez à utiliser Distributed Cloud AIP avec votre équipe dès aujourd’hui.
À propos de l’auteur
Articles de blog associés

F5 NGINXaaS pour Google Cloud : des applications résilientes et évolutives
Découvrez comment NGINXaaS s’intègre à Google Cloud pour renforcer les performances et la sécurité, et préparer vos applications critiques à un avenir propulsé par l’IA.
L’intégration de F5 Web Application Firewall (WAF) à AWS est disponible dès aujourd’hui
En faisant appel à un partenaire de déploiement AWS WAF tel que F5, vous pouvez renforcer la sécurité de vos applications web grâce à des règles personnalisées qui bloquent les schémas d’attaque courants, comme les injections SQL ou les attaques par scripts intersites (XSS).
Appliquer le principe de Peter Parker à l’inspection TLS
« Un grand pouvoir implique de grandes responsabilités. » Si l’on en trouve des échos chez Voltaire et Churchill, cette citation est surtout connue grâce aux bandes dessinées Spider-Man, où elle est attribuée à l’oncle Ben. Bien entendu, si cette phrase est si répandue dans la culture populaire, c’est notamment parce qu’elle peut s’appliquer à une multitude de situations et de sujets, y compris à l’inspection TLS.
Le NetOps a besoin de défenseurs, pas d’adversaires
Il est important de reconnaître que les équipes NetOps ne sont pas toujours celles qui font obstacle au déploiement de la dernière nouveauté, application ou service. Les freins à la rapidité sont souvent dus au fait que les organisations n’adoptent pas tous les principes du DevOps lorsqu’elles cherchent à transformer leurs opérations informatiques.
Mise à jour des services applicatifs : sécurité, rapidité et visiteurs suspects
Il est de nouveau temps de nous pencher sur les services applicatifs que les entreprises utilisent réellement pour rendre leurs applications plus rapides et plus sûres. On constate notamment une hausse du recours aux services de protection contre les bots, ainsi que la progression lente mais régulière de HTTP/2. Bien qu’il ne s’agisse pas d’une application…
Les templates prennent le contrôle du cloud
Les modèles s’imposent dans le cloud. Lisez le blog de F5 pour découvrir comment l’infrastructure en tant que code et les API déclaratives automatisent la mise à disposition des applications.