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.
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.
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.
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.
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 :
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.
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.
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 .
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.
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.
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.
Site Web : https://www.cypress.io/
Taper:
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 .
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.
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.
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 .