BLOG

10 outils de test automatisés utilisés par Threat Stack — et pourquoi

Miniature F5
F5
Mise à jour le 10 août 2020

Threat Stack est 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 de logiciels, qu’ils soient grands ou petits, peuvent bénéficier de tests bien planifiés et bien exécutés. C’est votre façon de garantir que le logiciel que vous développez fonctionne comme prévu et offre de la valeur au client. Plus important encore, compte tenu de la nature de notre paysage cybernétique actuel, des tests bien exécutés sont votre moyen de garantir que votre logiciel ne contient pas d’erreurs ou de vulnérabilités susceptibles de compromettre son intégrité. En un mot, de bons tests vous permettent de transmettre la valeur des performances aux clients, tout en leur fournissant une sécurité sous-jacente.

Chez Threat Stack, nous disposons d'un environnement de développement complet et complexe qui nécessite beaucoup de planification et de prise de décision au sein de l'équipe d'ingénierie de test pour garantir que tous les domaines fonctionnels de notre plateforme sont testés de manière efficace et efficiente. Cela inclut des décisions sur les outils de test à utiliser, car les bons nous permettent d’introduire l’automatisation ainsi que la vitesse, la répétabilité, la cohérence et la précision des résultats.

Dans cet article, nous allons discuter de dix des outils de tests automatisés que nous utilisons, dans le but de partager quelques idées qui, nous l’espérons, vous aideront dans vos activités de test.

Avant d’examiner les outils, créons toutefois un certain contexte en examinant les domaines clés 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 flottes de machines virtuelles Amazon Web Services des clients afin de les suivre et de les surveiller, qu'elles disposent de distributions Linux (telles que Ubuntu, Amazon Linux, Red Hat Enterprise Linux, CentOS, CoreOS) ou qu'elles soient de type Windows, telles que Windows Server 2012 R2, 2016 ou 2019. 
  • Nos clients peuvent utiliser des conteneurs ou Kubernetes qui doivent être surveillés pour détecter des signes d'incidents de sécurité. 
  • Chaque agent envoie en toute sécurité des données à la Threat Stack Cloud Security Platform®, qui sont ensuite analysées et traitées via l'un de nos nombreux microservices. 
  • Les données d'événement sont traitées par l'hôte, le fichier, CloudTrail, Threat Intelligence et des règles personnalisées pour générer des alertes, classées par gravité, afin d'aider les équipes DevOps et de sécurité de nos clients à analyser ce qui se passe dans leurs systèmes. 
  • Toutes les données d'événement, de règle et d'alerte doivent être accessibles non seulement via notre application basée sur un navigateur, mais également via nos API Threat Stack .
  • Nos clients ont la possibilité de prendre ces données et de les exporter vers leur propre stockage externe pour effectuer leur propre analyse. 
  • Threat Stack Application Security Monitoring, un composant de la plateforme de sécurité cloud Threat Stack, fonctionne comme un microagent, surveillant les charges utiles des application , envoyant des informations à la plateforme Threat Stack, avertissant les développeurs s'il détecte des erreurs de codage sécurisé. Il surveille également les charges utiles des application pour détecter tout comportement malveillant tel que les attaques de script intersite. 

Comme vous pouvez le constater, notre logiciel couvre un vaste territoire et doit le faire rapidement, en toute sécurité, avec précision et à grande échelle. Dans cet esprit, examinons certains des outils de test que nous utilisons.

Outils de test que nous utilisons chez Threat Stack

Les ingénieurs logiciels en test, intégrés à leurs propres équipes de fonctionnalités, sont non seulement responsables de tester de nouvelles fonctionnalités et fonctions qui sont constamment développées, mais également d'ajouter de l'automatisation pour garantir que le reste du produit fonctionne toujours comme prévu. 

En témoignage de la valeur que notre organisation accorde à ces personnes, chaque ingénieur de test est également chargé de recommander les méthodes d'automatisation, les outils et les langages qu'il juge appropriés. Vous trouverez ci-dessous une liste de certains des outils que nous utilisons pour nous aider dans nos efforts de tests automatisés. Veuillez noter que nous utilisons globalement un ensemble d'outils plus complet ; notre objectif ici est de discuter d'une sélection d'outils et de vous rappeler de choisir les outils qui fonctionnent le mieux pour les projets spécifiques sur lesquels vous travaillez. 

Clause de non-responsabilité: Les ressources mentionnées dans cet article ne sont pas classées en fonction de leur valeur perçue. Nos commentaires n’impliquent pas non plus une quelconque approbation. 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/

Taper: Gratuit, Open source

Soutien: Groupe Google Ruby-Capybara

Dernière version: 3.29.0 (2 septembre 2019)

Capybara est le joyau Ruby que nous utilisons avec Selenium afin d'interagir avec nos tests d'automatisation d'interface utilisateur basés sur un navigateur lors de l'exécution de tests d'interface utilisateur de bout en bout. Capybara contient des méthodes intégrées qui émulent la manière dont un utilisateur peut visiter une page, remplir une zone de texte, cliquer sur un bouton ou sélectionner un menu déroulant

Le fléau de l’existence d’un testeur de logiciels est lorsqu’il faut un temps absurde pour que les éléments Web se chargent sur une page, ce qui provoque des échecs de test inexpliqués. Chaque méthode fournie par Capybara intègre automatiquement des attentes. 

Capybara teste les problèmes d'expérience utilisateur, en utilisant notre produit comme le feraient nos clients, en se connectant à notre application, en naviguant sur le site, en visualisant les événements déclenchés par nos systèmes de test, en créant de nouvelles règles qui régissent les événements qui doivent déclencher des alertes, en explorant les informations d'alerte trouvées sur notre tableau de bord et en mettant à jour divers paramètres.

2. Jauge par ThoughtWorks

Site Web : http://gauge.org

Taper: Gratuit, Open source

Soutien: Groupe Google GetGauge , chat Gitter

Dernière version: 1.0.7 (29 août 2019)

Gauge est un framework d'automatisation de tests créé par ThoughtWorks Studio India, que nous utilisons pour configurer nos tests d'acceptation d'interface utilisateur et d'API. Bien que nous associions Gauge à Ruby, il est également compatible avec Java, C#, JavaScript et Python. Gauge ressemble beaucoup à Cucumber, le framework BDD, avec des différences mineures : 

  • Les plans de test se trouvent dans des fichiers de spécifications écrits en Markdown au lieu des fichiers de fonctionnalités de Cucumber, ce qui facilite l'écriture et la maintenance des tests.
  • Au lieu du format Given / Then / When de Cucumber, les étapes de test sont répertoriées sous forme de puces.

En tant qu'outil de développement piloté par le comportement (BDD), Cucumber peut devenir un peu verbeux, plus le test est complexe. Avec Gauge, chaque étape est une puce claire, concise et facile à lire. De plus, Gauge dispose de rapports intégrés disponibles dans plusieurs formats (XML, JSON, HTML). Il peut être utilisé à la fois sur la ligne de commande et dans un IDE tel que Visual Studio Code . Enfin, une documentation abondante est fournie pour couvrir une gamme de sujets, notamment l'installation, la rédaction de spécifications, des exemples de didacticiels, etc.

3. Essai de charge Gatling

Site Web : https://gatling.io/

Taper: Versions Entreprise et Open Source

Soutien: Groupe Google Gatling

Dernière version: 3.2.1 (27 août 2019)

Gatling fournit des tests de charge continus ici chez Threat Stack. Écrit en Scala, il fonctionne soit comme un outil autonome, soit peut être utilisé comme dépendance de votre produit avec Maven

Pour démontrer sa rapidité et sa puissance, en dix minutes, nous avons pu générer trois millions de requêtes dans notre environnement de test et avons pu déterminer que toutes les requêtes renvoyaient des résultats en moins de 800 millisecondes.

Comme l'indique BlazeMeter dans son blog, Huit raisons pour lesquelles vous devriez utiliser Gatling pour vos tests de charge , « Gatling a créé un tableau de bord de métriques détaillé que vous pouvez voir après l'exécution des tests sans avoir à ajouter de plugins supplémentaires. Le rapport est stocké sous forme de fichier HTML, qui peut être facilement enregistré pour des analyses et comparaisons de mesures ultérieures. De plus, le rapport est interactif, ce qui permet d’effectuer des analyses plus détaillées et de concentrer des demandes spécifiques en plus de la vue d’ensemble.

4. Cuisine d'essai par Chef.io 

Site Web : https://kitchen.ci/

Taper: Open source

Soutien: Communauté Chef.io

Dernière version: 2.2.0 (26 avril 2019)

Test Kitchen est le produit Chef.io que nous utilisons pour automatiser le démarrage et le démontage des différents environnements Amazon Web Services que nous utilisons lors de nos efforts de test. Test Kitchen est un outil de test que vous pouvez utiliser pour exécuter votre code configuré sur une ou plusieurs plates-formes de manière isolée. De nombreux frameworks de test sont pris en charge par Kitchen dès leur sortie, notamment Chef InSpec . Kitchen est utilisé par tous les livres de cuisine communautaires gérés par Chef et constitue l'outil de test d'intégration de choix pour les livres de cuisine.

Learn.Chef.io propose une série bien pensée de modules de formation et de démos, dont un excellent module appelé Getting Started with Test Kitchen

5. ScalaTest

Site Web : http://www.scalatest.org

Taper: Gratuit, Open source

Soutien: Groupe Google ScalaTest

Dernière version: 3.0.8 (10 juin 2019)

Les ingénieurs de test de Threat Stack ont commencé à s'associer à nos développeurs de logiciels afin d'écrire des tests de service pour leur code Scala à l'aide de ScalaTest. 

Nos tests d'intégration utilisent le trait de style ScalaTest, FeatureSpec, décrivant les tests unitaires de style de développement piloté par les tests (TDD) dans un format Given / When / Then. Comme le mentionne la documentation 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 « niveau supérieur » par rapport aux tests unitaires, par exemple les tests d'intégration, les tests fonctionnels et les tests d'acceptation.

ScalaTest fournit de nombreuses documentations utiles sur son site, notamment un démarrage rapide détaillé, des procédures d'installation et un guide d'utilisation.

6. Chef InSpec 

Site Web : https://kitchen.ci/docs/verifiers/inspec/

Taper: Gratuit, Open source

Soutien: 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 censés être lisibles par l’homme. Si vous êtes familier avec les frameworks de test tels que RSpec , le code InSpec devrait vous être familier. InSpec détecte les divergences et documente les différences sous forme de rapport. Nous pouvons ensuite intervenir et apporter les modifications nécessaires au Chef pour amener un système à l’état souhaité.

Pour vous aider à démarrer, Learn Chef Rally propose un segment utile qui vous guide dans la configuration d'un environnement Docker et Docker Compose, le téléchargement de l'exemple d'environnement et l'exploration de l'environnement à l'aide d'InSpec. 

7. Moka 

Site Web : https://mochajs.org/

Taper: Gratuit, Open source

Soutien: Groupe Gitter Mocha , groupe Google 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, nous permettant d'effectuer des tests asynchrones. Étant donné que les tests Mocha s'exécutent en série, cela nous permet de générer des rapports plus flexibles et plus précis, ainsi que de mapper les exceptions non détectées aux cas de test appropriés.

En utilisant Mocha dans un environnement Node.js, vous pouvez utiliser le module assert intégré comme bibliothèque d'assertions. Chez Threat Stack, nous associons Mocha à Chai pour créer le cadre de test pour la fonctionnalité de surveillance de la sécurité des application Threat Stack

Le site Mocha met à disposition une gamme de documentation sur des sujets couvrant tout, depuis un aperçu détaillé des fonctionnalités, l'installation et la prise en main, jusqu'aux informations sur des fonctionnalités et des tâches spécifiques. 

8. Cypress.io

Site Web : https://www.cypress.io/

Taper: 

  • Service de tableau de bord commercial, gratuit pour un maximum de trois utilisateurs

Soutien: 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 est exécuté dans la même boucle d'exécution que notre application, ce qui signifie que toutes les fonctions, fenêtres, éléments Web, minuteries et services auxquels l' application Threat Stack peut accéder, notre code de test peut également y accéder. Nous pouvons également lire et modifier le trafic réseau à la volée, ce qui nous permet d'ajouter des cas de test négatifs intéressants, tels que tester ce qui se passe lorsqu'un serveur backend est inaccessible. 

Cypress.io propose une documentation bien organisée qui fournit un aperçu solide, des informations de démarrage et des concepts de base qui incluent des informations sur la rédaction et l'organisation des tests. Vous cherchez à voir ce que Cypress peut faire ? TestAutomationU vient de publier un nouveau cours, Introduction à Cypress .

9. Plaisanter

Site Web : https://jestjs.io

Taper: Gratuit, Open source

Soutien: Discussion Discord React , groupe Google JestJs

Dernière version: 24.9 (août 2019)

Nos développeurs de logiciels full stack ont basculé les tests du frontend basé sur ReactJS de Threat Stack Cloud Security Platform de Mocha / Chai vers Jest, qui offre un meilleur support intégré pour tester les composants ReactJS que nous utilisons. Avec ce framework de test JavaScript, nous sommes en mesure de créer de meilleurs tests unitaires et d'intégration. Les deux ensembles d'outils, ReactJs et Jest, vous sont proposés par Facebook. 

Comme pour la plupart des autres outils de cet article, le site Web Jest fournit une documentation riche en exemples couvrant la mise en route, la configuration et une gamme complète de scénarios d'utilisation.

10. Apache JMeter 

Site Web : https://jmeter.apache.org/

Taper: Gratuit, Open source

Soutien: Groupe Google JMeter

Dernière version: 5.1.1 (13 mars 2019)

Apache JMeter est un logiciel libre conçu pour tester la charge, le comportement fonctionnel et mesurer les performances. Selon leur site, JMeter « peut être utilisé pour tester les performances des ressources statiques et dynamiques, des applications Web dynamiques. Il peut être utilisé pour simuler une charge importante sur un serveur, un groupe de serveurs, un réseau ou un objet afin de tester sa résistance 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 contre des charges lourdes, avec un trafic utilisateur multiple et simultané pour voir comment nous pouvons améliorer notre capacité d'évolution.

JMeter met à disposition une gamme utile de documentation (notamment un guide de démarrage, un manuel d'utilisation et des bonnes pratiques) ainsi qu'un certain nombre de didacticiels étape par étape.

Bon test . . .

Aussi bons que soient nos ingénieurs de test chez Threat Stack, ils n’iraient pas bien loin sans des processus systématiques soutenus par des outils puissants. À mesure que notre plateforme évolue, notre équipe continue de perfectionner son expertise, d'améliorer continuellement ses compétences et ses connaissances, d'adopter et d'intégrer de nouveaux outils et de développer de nouvelles méthodes pour garantir qu'elles continuent d'ajouter de la valeur au cycle de vie du développement logiciel Threat Stack. Nous espérons que cet article vous a donné un aperçu de la manière dont notre équipe de test utilise une gamme d'outils de test automatisés pour répondre aux multiples fonctions de notre plateforme de sécurité cloud.  

 

 

Threat Stack est désormais F5 Distributed Cloud App Infrastructure Protection (AIP). Commencez à utiliser Distributed Cloud AIP avec votre équipe dès aujourd'hui .