BLOG

10 automatisierte Testtools, die Threat Stack verwendet – und warum

F5 Miniaturansicht
F5
Aktualisiert am 10. August 2020

Threat Stack heißt jetzt F5 Distributed Cloud App Infrastructure Protection (AIP). Beginnen Sie noch heute damit, Distributed Cloud AIP mit Ihrem Team zu verwenden.

Alle Softwareentwicklungsprojekte, ob groß oder klein, können von gut geplanten und gut durchgeführten Tests profitieren. Auf diese Weise stellen Sie sicher, dass die von Ihnen entwickelte Software die erwartete Leistung erbringt und dem Kunden einen Mehrwert bietet. Angesichts der aktuellen Cyberlandschaft ist es jedoch noch wichtiger, dass Sie durch sorgfältig ausgeführte Tests sicherstellen, dass Ihre Software nicht mit Fehlern oder Schwachstellen ausgeliefert wird, die ihre Integrität gefährden könnten. Kurz gesagt: Durch gute Tests können Sie den Leistungswert an Ihre Kunden weitergeben und ihnen gleichzeitig die erforderliche Sicherheit bieten.

Bei Threat Stack verfügen wir über eine komplexe Full-Stack-Entwicklungsumgebung, die viel Planung und Entscheidungsfindung innerhalb des Test Engineering-Teams erfordert, um sicherzustellen, dass alle Funktionsbereiche unserer Plattform effektiv und effizient getestet werden. Hierzu gehören Entscheidungen über die zu verwendenden Testwerkzeuge, da uns die richtigen Werkzeuge eine Automatisierung sowie Geschwindigkeit, Wiederholbarkeit, Konsistenz und Genauigkeit der Ergebnisse ermöglichen.

In diesem Beitrag besprechen wir zehn der von uns verwendeten automatisierten Testtools – mit dem Ziel, einige Erkenntnisse weiterzugeben, die Ihnen hoffentlich bei Ihren Testaktivitäten hilfreich sein werden.

Bevor wir uns die Tools ansehen, wollen wir jedoch etwas Kontext schaffen, indem wir die wichtigsten Bereiche untersuchen, die unsere Testingenieure berücksichtigen, wenn sie unsere Plattform und ihre Infrastruktur testen. 

  • Threat Stack-Agenten werden in die virtuellen Maschinen der Amazon Web Services-Flotten der Kunden eingebettet, um diese zu verfolgen und zu überwachen, unabhängig davon, ob sie Linux-Distributionen wie Ubuntu, Amazon Linux, Red Hat Enterprise Linux, CentOS, CoreOS oder Windows-Distributionen wie Windows Server 2012 R2, 2016 oder 2019 verwenden. 
  • Unsere Kunden verwenden möglicherweise Container oder Kubernetes, die auf Anzeichen von Sicherheitsvorfällen überwacht werden müssen. 
  • Jeder Agent sendet sicher Daten an die Threat Stack Cloud Security Platform®, die dann über einen unserer zahlreichen Microservices analysiert und verarbeitet werden. 
  • Ereignisdaten werden von Host, Datei, CloudTrail, Threat Intelligence und benutzerdefinierten Regeln verarbeitet, um nach Schweregrad aufgeschlüsselte Warnungen auszugeben und so den DevOps- und Sicherheitsteams unserer Kunden bei der Analyse der Vorgänge in ihren Systemen zu helfen. 
  • Auf alle Ereignis-, Regel- und Warndaten muss nicht nur über unsere browserbasierte Application, sondern auch über unsere Threat Stack-APIs zugegriffen werden können.
  • Unsere Kunden haben die Möglichkeit, diese Daten zu übernehmen und in ihren eigenen externen Speicher zu exportieren, um ihre eigenen Analysen durchzuführen. 
  • Threat Stack Application Security Monitoring, eine Komponente der Threat Stack Cloud Security Platform, wird als Mikroagent ausgeführt, überwacht die Application , sendet Informationen an die Threat Stack-Plattform und warnt Entwickler, wenn Fehler bei der sicheren Codierung gefunden werden. Darüber hinaus überwacht es die Application auf bösartiges Verhalten wie Cross-Site-Scripting-Angriffe. 

Wie Sie sehen, deckt unsere Software ein breites Spektrum ab und muss dies schnell, sicher, präzise und im großen Maßstab tun. Vor diesem Hintergrund wollen wir einen Blick auf einige der von uns verwendeten Testtools werfen.

Testtools, die wir bei Threat Stack verwenden

Softwareentwickler im Testbereich sind in ihren eigenen Feature-Teams nicht nur für das Testen der ständig entwickelten neuen Features und Funktionen verantwortlich, sondern auch für die Automatisierung, um sicherzustellen, dass der Rest des Produkts weiterhin wie erwartet funktioniert. 

Als Beweis für die Wertschätzung, die unsere Organisation diesen Menschen entgegenbringt, wird jedem Testingenieur auch die Verantwortung übertragen, Automatisierungsmethoden, -tools und -sprachen zu empfehlen, die er für geeignet hält. Nachfolgend finden Sie eine Liste einiger Tools, die wir zur Unterstützung unserer automatisierten Testbemühungen verwenden. Bitte beachten Sie, dass wir insgesamt ein umfangreicheres Toolset verwenden. Unser Ziel besteht hier darin, eine Auswahl an Tools zu besprechen und Sie daran zu erinnern, die Tools auszuwählen, die für die spezifischen Projekte, an denen Sie arbeiten, am besten geeignet sind. 

Haftungsausschluss: Die in diesem Beitrag erwähnten Ressourcen sind nicht nach ihrem wahrgenommenen Wert eingestuft. Unsere Kommentare stellen auch keine Billigung irgendeiner Art dar. Unsere Absicht besteht lediglich darin, Ihnen Informationen bereitzustellen, die unserer Meinung nach beim Erweitern Ihres Wissens über Testtools hilfreich sein könnten.

1. Wasserschwein

Website: https://teamcapybara.github.io/capybara/

Typ: Kostenlos, Open Source

Unterstützung: Ruby-Capybara Google-Gruppe

Neuste Version: 3.29.0 (2. September 2019)

Capybara ist das Ruby-Gem, das wir mit Selenium verwenden, um bei der Durchführung von End-to-End-Benutzeroberflächentests mit unseren browserbasierten UI-Automatisierungstests zu interagieren. Capybara enthält integrierte Methoden, die emulieren, wie ein Benutzer eine Seite besuchen , ein Textfeld ausfüllen , auf eine Schaltfläche klicken oder ein Dropdown-Menü auswählen kann. 

Der Fluch eines Softwaretesters besteht darin, dass das Laden von Web-Elementen auf einer Seite absurd lange dauert und es dadurch zu unerklärlichen Testfehlern kommt. In jede von Capybara bereitgestellte Methode sind automatisch Wartezeiten eingebaut. 

Capybara testet auf Probleme mit der Benutzererfahrung, indem wir unser Produkt so bedienen, wie es unsere Kunden tun würden, indem wir uns bei unserer Application anmelden, durch die Site navigieren, indem wir Ereignisse anzeigen, die von unseren Testsystemen ausgelöst werden, indem wir neue Regeln erstellen, die bestimmen, welche Ereignisse Warnungen auslösen sollen, indem wir uns eingehend mit den Warnungsinformationen auf unserem Dashboard befassen und indem wir verschiedene Einstellungen aktualisieren.

2. Gauge von ThoughtWorks

Website: http://gauge.org

Typ: Kostenlos, Open Source

Unterstützung: GetGauge Google Group , Gitter-Chat

Neueste Version: 1.0.7 (29. August 2019)

Gauge ist ein von ThoughtWorks Studio India erstelltes Testautomatisierungs-Framework, das wir zum Einrichten unserer UI- und API-Abnahmetests verwenden. Obwohl wir Gauge mit Ruby koppeln, ist es auch mit Java, C#, JavaScript und Python kompatibel. Gauge ähnelt stark Cucumber, dem BDD-Framework, mit geringfügigen Unterschieden: 

  • Testpläne befinden sich in Spezifikationsdateien, die in Markdown geschrieben sind, statt in den Feature-Dateien von Cucumber. Dies erleichtert das Schreiben und Verwalten von Tests.
  • Anstelle des Given/Then/When-Formats von Cucumber werden die Testschritte als Aufzählungspunkte aufgeführt.

Als Behavior Driven Development (BDD)-Tool kann Cucumber etwas wortreich werden, je komplexer der Test ist. Mit Gauge ist jeder Schritt ein klarer, prägnanter und leicht lesbarer Aufzählungspunkt. Darüber hinaus verfügt Gauge über integrierte Berichterstellung in mehreren Formaten (XML, JSON, HTML). Es kann sowohl auf der Befehlszeile als auch innerhalb einer IDE wie Visual Studio Code verwendet werden. Abschließend wird ausführliche Dokumentation zu zahlreichen Themen bereitgestellt, darunter Installation, Verfassen von Spezifikationen, Beispiel-Tutorials und mehr.

3. Gatling-Lasttest

Website: https://gatling.io/

Typ: Sowohl Enterprise- als auch Open Source -Versionen

Unterstützung: Gatling Google Group

Neueste Version: 3.2.1 (27. August 2019)

Gatling bietet hier bei Threat Stack kontinuierliche Belastungstests an. Es wurde in Scala geschrieben und funktioniert entweder als eigenständiges Tool oder kann mit Maven als Abhängigkeit zu Ihrem Produkt verwendet werden. 

Zur Demonstration der Geschwindigkeit und Leistungsfähigkeit konnten wir in unserer Testumgebung innerhalb von zehn Minuten drei Millionen Anfragen generieren und feststellen, dass alle Anfragen innerhalb von weniger als 800 Millisekunden Ergebnisse zurücklieferten.

Wie BlazeMeter in seinem Blog „ Acht Gründe, warum Sie Gatling für Ihre Belastungstests verwenden sollten“ erklärt: „Gatling hat ein detailliertes Metrik-Dashboard erstellt, das Sie nach der Testausführung sehen können, ohne zusätzliche Plug-Ins hinzufügen zu müssen. Der Bericht wird als HTML-Datei gespeichert, die für zukünftige Analysen und Metrikvergleiche problemlos gespeichert werden kann. Darüber hinaus ist der Report interaktiv, was es ermöglicht, neben dem Gesamtbild auch detailliertere Analysen durchzuführen und spezielle Anfragen zu konzentrieren.“

4. Testküche von Chef.io 

Website: https://kitchen.ci/

Typ: Open Source

Unterstützung: Chef.io-Community

Neueste Version: 2.2.0 (26. April 2019)

Test Kitchen ist das Chef.io -Produkt, das wir zum automatischen Hoch- und Herunterfahren der verschiedenen Amazon Web Services-Umgebungen verwenden, die wir während unserer Testbemühungen nutzen. Test Kitchen ist ein Test-Harness-Tool, mit dem Sie Ihren konfigurierten Code isoliert auf einer oder mehreren Plattformen ausführen können. Viele Test-Frameworks werden von Kitchen standardmäßig unterstützt, darunter auch Chef InSpec . Kitchen wird von allen von Chef verwalteten Community-Kochbüchern verwendet und ist das Integrationstesttool der Wahl für Kochbücher.

Learn.Chef.io verfügt über eine gut durchdachte Reihe von Schulungsmodulen und Demos, darunter ein hervorragendes Modul mit dem Titel „Erste Schritte mit Test Kitchen“

5. ScalaTest

Website: http://www.scalatest.org

Typ: Kostenlos, Open Source

Unterstützung: ScalaTest Google-Gruppe

Neueste Version: 3.0.8 (10. Juni 2019)

Testingenieure bei Threat Stack haben begonnen, mit unseren Softwareentwicklern zusammenzuarbeiten, um mit ScalaTest Servicetests für ihren Scala-Code zu schreiben. 

Unsere Integrationstests verwenden das ScalaTest-Stilmerkmal FeatureSpec, das die Unit-Tests im Stil der testgetriebenen Entwicklung (TDD) in einem Given/When/Then-Format beschreibt. Wie im ScalaTest-Dokument erwähnt, ist FeatureSpec eine „Testfolge, in der jeder Test ein Szenario einer Funktion darstellt. FeatureSpec ist für das Schreiben von Tests gedacht, die auf „höherem Niveau“ sind als Unit-Tests – beispielsweise Integrationstests, Funktionstests und Abnahmetests.“

ScalaTest bietet auf seiner Site zahlreiche hilfreiche Dokumentationen , darunter eine ausführliche Schnellstartanleitung, Installationsverfahren und ein Benutzerhandbuch.

6. Chef InSpec 

Website: https://kitchen.ci/docs/verifiers/inspec/

Typ: Kostenlos, Open Source

Unterstützung: Chef.io-Community

Neueste Version: (11. August 2019)

Bei Threat Stack verwenden wir Chef InSpec, um Ruby-basierte Tests zu erstellen und zu überprüfen, ob alles wie erwartet funktioniert, nachdem eine Testumgebung spontan erstellt wurde. InSpec-Tests sollen für Menschen lesbar sein. Wenn Sie mit Test-Frameworks wie RSpec vertraut sind, sollte Ihnen der InSpec-Code bekannt vorkommen. InSpec erkennt Unstimmigkeiten und dokumentiert die Unterschiede in Form eines Berichts. Wir können dann einsteigen und die Chef-Änderungen vornehmen, die erforderlich sind, um ein System in den gewünschten Zustand zu versetzen.

Um Ihnen den Einstieg zu erleichtern, enthält das Learn Chef Rally einen nützlichen Abschnitt, der Sie durch die Einrichtung einer Docker- und Docker Compose-Umgebung, das Herunterladen der Beispielumgebung und das Erkunden der Umgebung mit InSpec führt. 

7. Mokka 

Website: https://mochajs.org/

Typ: Kostenlos, Open Source

Unterstützung: Mocha Gitter-Gruppe , Mocha Google-Gruppe

Neueste Version: 3.2.1 (27. August 2019)

Mocha ist ein JavaScript-Testframework, das auf Node.js und in einem Browser ausgeführt wird und uns asynchrone Tests ermöglicht. Da Mocha-Tests seriell ausgeführt werden, ermöglicht es uns flexibleres und genaueres Reporting sowie die Möglichkeit, nicht erfasste Ausnahmen den richtigen Testfällen zuzuordnen.

Wenn Sie Mocha in einer Node.js-Umgebung verwenden, können Sie das integrierte Assert-Modul als Ihre Assertionsbibliothek verwenden. Bei Threat Stack kombinieren wir Mocha mit Chai , um das Testframework für die Threat Stack Application Security Monitoring -Funktionalität zu erstellen. 

Die Mocha-Site stellt eine breite Palette an Dokumentationen zu allen Themen zur Verfügung, von einer detaillierten Funktionsübersicht über die Installation und Erste Schritte bis hin zu Informationen zu bestimmten Funktionen und Aufgaben. 

8. Cypress.io

Website: https://www.cypress.io/

Typ: 

  • Kommerzieller Dashboard-Dienst, kostenlos für bis zu drei Benutzer

Unterstützung: Gitter-Chat ; E-Mail-Support für zahlende Benutzer

Neueste Version: 3.4.1 (29. Juli 2019)

Cypress.io wurde für JavaScript-Frontend-Entwickler entwickelt, die ihre Arbeit nur in Chrome testen müssen. Cypress wird in derselben Ausführungsschleife wie unsere Application ausgeführt. Dies bedeutet, dass unser Testcode auf alle Funktionen, Fenster, Webelemente, Timer und Dienste zugreifen kann, auf die die Threat Stack Application zugreifen kann. Wir können den Netzwerkverkehr auch im laufenden Betrieb lesen und ändern, was uns die Möglichkeit gibt, einige interessante negative Testfälle hinzuzufügen, etwa zu testen, was passiert, wenn auf einen Backend-Server nicht zugegriffen werden kann. 

Cypress.io bietet eine gut strukturierte Dokumentation mit einem soliden Überblick, Informationen zum Einstieg und Kernkonzepten, darunter Informationen zum Schreiben und Organisieren von Tests. Möchten Sie sehen, was Cypress kann? TestAutomationU hat gerade einen neuen Kurs veröffentlicht: Einführung in Cypress .

9. Scherz

Website: https://jestjs.io

Typ: Kostenlos, Open Source

Unterstützung: React Discord-Chat , JestJs Google-Gruppe

Neueste Version: 24,9 (August 2019)

Unsere Full-Stack-Softwareentwickler haben beim Testen des auf ReactJS basierenden Frontends der Threat Stack Cloud Security Platform von Mocha/Chai auf Jest umgestellt, das eine bessere integrierte Unterstützung zum Testen der von uns verwendeten ReactJS-Komponenten bietet. Mit diesem JavaScript-Testframework können wir bessere Unit- und Integrationstests erstellen. Beide Toolsets, ReactJs und Jest, werden Ihnen von Facebook zur Verfügung gestellt. 

Wie bei den meisten anderen Tools in diesem Beitrag finden Sie auf der Jest-Website eine Dokumentation mit vielen Beispielen, in der die ersten Schritte, die Konfiguration und eine umfassende Palette von Anwendungsszenarien beschrieben werden.

10. Apache JMeter 

Website: https://jmeter.apache.org/

Typ: Kostenlos, Open Source

Unterstützung: JMeter Google Group

Neueste Version: 5.1.1 (13. März 2019)

Apache JMeter ist eine Open-Source-Software, die zum Testen des Funktionsverhaltens unter Belastung und zur Messung der Leistung entwickelt wurde. Laut ihrer Site kann JMeter „zum Testen der Leistung sowohl statischer als auch dynamischer Ressourcen und dynamischer Applications verwendet werden.“ Damit lässt sich eine hohe Belastung eines Servers, einer Servergruppe, eines Netzwerks oder Objekts simulieren, um dessen Stärke zu testen oder die Gesamtleistung unter verschiedenen Belastungsarten zu analysieren.“

Wir verwenden JMeter, um die Leistung unserer Application und Dienste zu analysieren und zu messen. Dadurch können wir unsere Application bei hoher Belastung und mit mehreren gleichzeitigen Benutzerdaten testen, um zu sehen, wie wir unsere Skalierbarkeit verbessern können.

JMeter stellt eine nützliche Palette an Dokumentationen (einschließlich „Erste Schritte“, „Benutzerhandbuch“ und „Best Practices“) sowie eine Reihe schrittweiser Anleitungen zur Verfügung.

Viel Spaß beim Testen. . .

So gut unsere Testingenieure bei Threat Stack auch sind, ohne systematische Prozesse, die durch leistungsstarke Tools unterstützt werden, würden sie nicht weit kommen. Während sich unsere Plattform weiterentwickelt, verfeinert unser Team weiterhin sein Fachwissen, verbessert kontinuierlich seine Fähigkeiten und Kenntnisse, übernimmt und integriert neue Tools und entwickelt neue Methoden, um sicherzustellen, dass sie weiterhin einen Mehrwert für den Threat Stack SDLC darstellen. Hoffentlich hat Ihnen dieser Beitrag einige Einblicke in die Art und Weise gegeben, wie unser Testteam eine Reihe automatisierter Testtools verwendet, um die verschiedenen Funktionen unserer Cloud Security Platform zu berücksichtigen.  

 

 

Threat Stack heißt jetzt F5 Distributed Cloud App Infrastructure Protection (AIP). Beginnen Sie noch heute damit, Distributed Cloud AIP mit Ihrem Team zu verwenden.