Holen Sie sich die neuesten wichtigen Update-Informationen für die Log4j-Sicherheitslücke. Sehen Sie sich an, wie Sie das Problem mithilfe der Parasoft-Anleitung beheben können. Erfahren Sie mehr >>

X
BLOG

Nichtfunktionale Tests und Leistungstests konnten nicht mehr nach links verschoben werden

Nichtfunktionale Tests und Leistungstests konnten nicht mehr nach links verschoben werden Lesezeit: 4 Minuten

Ein Intellyx BrainBlog für Parasoft von Jason English

Haben Sie jemals einen Freund gehabt, der wegen des Weiß seiner Zähne Zwangsstörungen hatte? Sie gehen zu einem kosmetischen Zahnarzt für eine Laseraufhellung und beschweren sich dann, dass es nicht weiß genug ist? Schließlich erreichen sie einen asymptotischen Punkt, an dem die Oberfläche des Zahns 99.9% des Lichts nicht reflektieren kann. Eine Behandlung mit 99.999% weißen Zähnen wäre daher zu kostspielig - und unmöglich.

Testingenieure, Leistungstester und SREs sind davon besessen, auf der letzten Meile der Softwarebereitstellung ein Zuverlässigkeitsniveau von fünf Neun (oder manchmal sogar noch höher) zu erreichen, das die Kunden am meisten beeinträchtigt.

Wenn auch Sie eine OCD über die Zuverlässigkeit von Anwendungen haben, haben Sie bereits die Mathematik ausgearbeitet und festgestellt, dass 5 9 insgesamt etwa 5.26 Minuten Ausfallzeit pro Jahr entsprechen. Und Sie erkennen auch, dass die Kosten und der Aufwand für die Testtechnik, 99.9% zu überschreiten, um eine Verfügbarkeit von 99.999% zu gewährleisten, enorm sind.

Wenn die Produktion von 3 9 auf 5 9 erhöht wird, wird in den meisten Fällen viel mehr IT-Budget verbraucht als bei 3 9!

Es scheint, dass alle Leistungstests vor der Produktion in der Welt niemals alle unbekannten Bedingungen klären werden, die 0.001% der Ausfallzeiten verursachen könnten. Egal wie viel wir ausgeben. Raus, verdammter Ort!

Ah ... aber machen wir uns keine Sorgen um die eine Sache, die Sie nicht verbessern können, ganz auf der rechten Seite der Softwarebereitstellung. Nein, nein, nein ... Die Lösung von Problemen kostet hier ohnehin viel mehr, wenn die Anwendung vollständig gebacken ist. Ich kann nicht davon besessen sein.

Nur ein winziges Aufflackern. Niemand ist vollkommen. Entspannen.

Holen Sie sich mit frühen DevTest-Teams eine neue Perspektive

Lassen Sie die Produktion für eine Weile in Ruhe und treffen Sie sich stattdessen zu Beginn des Software-Lebenszyklus mit den DevTest-Teams.

Hier auf der linken Seite der Softwarebereitstellung zeichnen sie Karten, schreiben Code und wählen Komponenten aus. Keine Sorge auf der Welt. Keine Angst vor was unbekannte Unbekannte kann bei der Bereitstellung auftreten.

Sie führen eine agile Test-First-Entwicklung durch und führen bei jedem Build zahlreiche strukturelle Codeprüfungen durch, wobei automatisierte Einheiten- und Regressionstestsuiten ausgeführt werden. Bei solchen Tests haben sie sich nach links verschoben.

Sie sind auch nicht sonderlich besorgt über die Auswirkungen der Entscheidungen, die sie treffen. Wenn verschiedene Dienste, Software und Infrastrukturkomponenten hinter einer funktionierenden Anwendung integriert sind, können sie bei der Interaktion unter Last unendlich viele nicht funktionierende Probleme verursachen.

Eine frühzeitige Auswahl von Design und Entwicklung kann später zu schlechten Nachrichten führen, aber nicht funktionale Tests (NFT) und Leistungstests finden traditionell näher an der Produktion statt.

Warten Sie, was wäre, wenn Sie NFT für Design und Entwicklung einsetzen könnten? Könnte dies eine ausreichende Frühwarnung bieten, um die kostspieligsten Fehler zu vermeiden?

NFT und PerfTest nach links verschieben

Nicht funktionierende Probleme sind in der Software schwer zu erkennen, da reale Bedingungen von Natur aus im Labor schwer zu reproduzieren sind.

Sie können Selenium-Funktionstestsuiten auf einer App-Oberfläche oder einem Benutzerautorisierungsprozess ausführen oder eine Reihe von API-Servicetestaufrufen und -datensätzen ausführen, um die Antworten zu überprüfen, oder eine Reihe von JUnit- oder NUnit-Tests für Code ausführen. Alle diese Methoden können jedoch nur auf die Probleme testen, die Sie in diesem frühen Stadium erwarten.

Um den Bedingungen der realen Welt näher zu kommen, stehen dem Team drei Optionen zur Verfügung.

1. Fügen Sie Funktionstests für das Benchmarking ein. Wenn Sie Selenium-Funktionstests in die CI / CD-Software-Pipeline einfügen und diese mit einem Begleittool wie automatisieren Parasoft Selenic Um die Ausführungszeiten bei jedem Build zu überwachen, können Sie einen ziemlich guten Benchmark für jede Anwendung, Komponente oder jeden Dienst erfassen.

Wenn die Antwortzeit aus irgendeinem Grund abweicht, kann der Build die Build-Plattform oder den Entwickler darüber informieren, dass eine Ausnahme (wahrscheinlich nicht funktionsfähig) zu einer Verlangsamung einer bestimmten Komponente geführt hat.

2. Tests wiederverwenden und unter Last wiederholen. Warum bis zum Ende warten und Tools wie LoadRunner verwenden, für deren Aufruf nahezu fertige Benutzeroberflächen erforderlich sind, spezielle Testfähigkeiten und hohe Kosten pro Sitzplatz?

Was wäre, wenn Sie stattdessen die Selenium-Tests und einige Sicherheitsüberprüfungen sowie Service- und Integrationstests mit einem Tool wie durchführen würden? Parasoft SOAtest, dann mit dem Radfahren begonnen und sie erneut ausgeführt, möglicherweise mit einer gewissen Variabilität der Daten oder des Timings, bei höheren Frequenzen? Sie würden einen frühen Leistungstest von erhalten Test nach links verschieben.

Von dort aus können Sie verschiedene Kombinationen von Webstil-, UI-Aufrufen, Nicht-UI-Aufrufen an APIs oder Ereigniswarteschlangen für einen hybriden Leistungstest kombinieren, der mehrere Ebenen des Ziel-Ökosystems der Anwendung ausführen kann, ohne auf eine fertige App zu warten.

3. Isolieren Sie sich gegen Umweltabhängigkeiten. Die letzte Hürde, um NFT nach links zu verschieben, ist die Umgebung, in der Anwendungen tatsächlich leben. Eine moderne Anwendung funktioniert in einer Welt voller Daten- und Dienstabhängigkeiten.

Hier ist wo umweltbasierte Tests Mit einer Service-Virtualisierungslösung ist es sinnvoll, alle Upstream- und Downstream-Abhängigkeiten rund um die Live-App zu instrumentieren. Auf diese Weise können Sie beispielsweise das System eines Bankpartners oder ein nationales Wetter- oder Flugverkehrssystem simulieren, das niemals unter Ihrer Kontrolle steht oder für den Import in Ihr eigenes DevTest-Labor verfügbar ist.

Abhängigkeiten können abgehört und als virtuelle Dienste erfasst werden - Komponenten, die beim Testen von Software „besser als die Realität“ reagieren können.

Eine kanadische Bank verwendete eine Kombination aller drei Techniken. Sie automatisierten Funktionstests, um einen Benchmark für eine Kreditantragskomponente zu erfassen, und führten die Tests dann mit einigen anderen Tests für Datenabfragen und API-Aufrufe zu einem virtuellen Dienst „Mock“ eines Kreditdienstes eines Drittanbieters erneut aus.

Sie waren besorgt. Wenn der virtuelle API-Dienst zu langsam reagiert - was würde mit der zu testenden Komponente geschehen? Es reagierte wie erwartet, aber dann beschleunigte das Testteam den virtuellen Dienst dieser Antwort eines Drittanbieters auf die kürzestmögliche Zeit. Es trat eine „Race-Bedingung“ auf, die dazu führte, dass die Komponententransaktion fehlschlug, wenn eine zu schnelle Antwort erhalten wurde!

Die Intellyx nehmen

In der Software gibt es nur eine Definition von Perfektion, aber das Scheitern ist unendlich.

Egal wie viel wir putzen, wir werden niemals 100% weiße Zähne haben. Egal wie viel wir testen, wir werden niemals 100% frei von Fehlern sein, die es bis zur Produktion schaffen, wo Fehler schwer zu isolieren und kostspielig zu beheben sind.

Mit der richtigen Test-Links-Hygiene, die nicht funktionierende Tests und Leistungstests umfasst, können wir jedoch ein Frühwarnsystem erhalten, das viele dieser aufkommenden Probleme beseitigt, bevor sie im Leistungslabor auftauchen oder vor Kunden versagen.

© 2020 Intellyx, GMBH. Intellyx behält die redaktionelle Kontrolle über den Inhalt dieses Dokuments. Zum Zeitpunkt des Schreibens Parasoft ist ein Intellyx-Kunde. Keiner der anderen hier genannten Anbieter ist Intellyx-Client. Bildquellen: Steve Snodgrass, Kristopher Volkmann, Johannes Königin, Gauthier DELECROIX - 郭 天, flickr Open Source.

Geschrieben von

Jason Englisch

Jason English ist Principal Analyst und CMO bei Intellyx, wo er führende Anbieter von Technologielösungen und Software-Startups bei der Steuerung der digitalen Transformation berät. Sein Hintergrund umfasst Kundenerfahrung und interaktives Design, Entwicklungs- / Testlebenszyklus von Unternehmenssoftware, Virtualisierung, Cloud und Blockchain.

Erhalten Sie die neuesten Nachrichten und Ressourcen zum Testen von Software sofort.