Erfahren Sie, was es Neues in MISRA C:2012 AMD3 gibt und wie Sie mit C/C++test 2022.2 die UMFANGREICHSTE Abdeckung erhalten! Auf Abruf ansehen >>

Kontinuierliches Testen: 4 Strategien für Unternehmen

Von Grigori Trofimov

5. Januar 2023

7  min lesen

Um positive, nahtlose Erfahrungen für Kunden zu gewährleisten, ist es für Unternehmen von entscheidender Bedeutung, auf Jahreszeiten mit hohem Volumen und extremer Auslastung vorbereitet zu sein. Hier sind 4 kontinuierliche Teststrategien und Best Practices für DevOps, die Unternehmen helfen, Kernschmelzen zu vermeiden.

4 kontinuierliche Teststrategien, mit denen Ihr Unternehmen jetzt beginnen sollte, um eine Kernschmelze zu vermeiden

Die Ferienzeit ist eine geschäftige und hektische Zeit für Reise- und Gastgewerbedienste. Sie erleben einen Nachfrageschub und stehen oft vor Herausforderungen wie schlechtem Wetter und technischen Problemen. Um eine reibungslose und erfolgreiche Weihnachtszeit zu gewährleisten, ist es wichtig, dass Entwicklungsteams auf das Unerwartete vorbereitet sind und über Systeme verfügen, um sich schnell von Unterbrechungen zu erholen.

Wenn Schnee passiert: Kontinuierliche Integration und kontinuierliche Bereitstellung

Die Urlaubssaison 2022 war ereignisreich, da Unwetter viele Reisepläne und den Flugbetrieb beeinträchtigten. Egal, ob Sie im Schnee, am Flughafen oder mit Ihrer Familie feststeckten, wir hoffen, Sie sind sicher nach Hause gekommen. Dieses Chaos hat uns daran erinnert, wie wichtig es ist, in kontinuierliche Qualitätspraktiken sowie in die Betriebsmodernisierung für Unternehmen zu investieren, die grundlegende Funktionen in unserer Gesellschaft erfüllen.

Im Dezember 2022 ein Major US-Fluggesellschaft verlor während der geschäftigsten Reisezeit des Jahres einen großen Teil seiner Geschäftstätigkeit. Schlechtes Wetter, die Pandemie und verschiedene andere Faktoren spielten eine wichtige Rolle. Aber selbst nachdem sich die Wetterlage beruhigt hatte, stornierte die Fluggesellschaft mehrere Tage lang jeden Tag 50 % oder mehr ihrer Flüge aufgrund von Softwareproblemen.

Schuld daran war ein automatisiertes Crew-Planungssystem, das unter dem Druck der Urlaubsstimmung zusammenbrach und die Fluggesellschaft dazu veranlasste, auf manuelle Crew-Planung umzusteigen. Crew-Management und Routing ist ein sehr komplexes Thema, das in den letzten 50 Jahren über verschiedene Lösungen iteriert wurde. Jedes Jahr entwickelt sich das Problem weiter, ebenso wie die Lösungen. Hier ist das allgemeine Wesentliche.

  • Crews und Flugzeuge werden für ein paar Tage gepaart und kehren zu ihren ursprünglichen Standorten zurück. Darüber hinaus sind Besatzungs- und Flugpaarungen weltweit stark reguliert.
  • Angesichts verschiedener Routen, lokaler Vorschriften, zeitlicher Einschränkungen und einer Vielzahl unbekannter Bedingungen ist die Zuweisung von Besatzungen zu Flügen kein einfacher Prozess. Dies führt im Wesentlichen zu einem großen und komplexen Berechnungsproblem, das aus Effizienzgründen automatisiert werden muss.
  • Die Industrie hat einen langen Weg zurückgelegt, um dies anzugehen. Enterprise-Crew-Management-Lösungen wie Sabre, Jeppesen, AIMS und andere bieten Cloud-basierte SaaS-Lösungen, die skaliert werden können, um den Anforderungen weltweiter Reisen gerecht zu werden.

Die kontinuierliche Modernisierung der Infrastruktur kostet Geld und kann sogar riskant sein. Aber das Zurückbleiben ist auch mit Kosten verbunden. Insgesamt wurden innerhalb einer Woche über 15 Flüge gestrichen. Um dies ins rechte Licht zu rücken: Als diese Fluggesellschaft im Jahr 2,500 rund 2021 Flüge stornierte, wurde dies geschätzt kostete das Unternehmen etwa 75 Millionen US-Dollar.

Was können Entwicklungsteams tun, um sich auf extreme Lasten vorzubereiten?

Nur eine Fluggesellschaft war stark betroffen, aber das Ergebnis ist ein aufschlussreicher Moment für alle Unternehmen. Auch außerhalb der Reisebranche ist der Jahresanfang ein guter Zeitpunkt, um Geschäfts- und Softwarequalitätsstrategien zu überprüfen, mit dem Ziel, sich auf Lastspitzen und Ausfälle vorzubereiten.

Die große Frage ist, wie bereitet man sich wirklich darauf vor, dass etwas schief geht?

Wir haben eine Liste mit vier Strategien zum Testen von Software zusammengestellt, mit denen Ihr Unternehmen jetzt beginnen kann, um einen totalen Zusammenbruch zu vermeiden.

  1. Implementieren Sie kontinuierliche Lasttests in Ihrer Testautomatisierung.
  2. Verwenden Sie die Servicevirtualisierung, um das Testdatenproblem zu lösen.
  3. Implementieren Sie Chaos Engineering in Ihren DevOps.
  4. Investieren Sie in Skalierbarkeit, Modernisierung und Qualität.

1. Implementieren Sie Continuous Load Testing in Ihrer Testautomatisierung

Wenn Sie planen, Ihren Betrieb zu modernisieren, möchten Sie die Arbeit möglicherweise in inkrementelle Phasen aufteilen und kontinuierliche Testverfahren einführen, um Fehler in ihren frühesten Stadien zu erkennen.

Leistungstest In Form von Lasttests sind Skalierbarkeits- und Stresstests bereits eine Kernqualitätspraxis, aber für viele Teams sind sie weitgehend auf manuelle Ad-hoc-Tests beschränkt, die „angestoßen“ werden, wenn das System und die Umgebung zum Testen konfiguriert werden. Das Ziel ist es, so nah wie möglich an das Produktionsniveau heranzukommen, aber das alles bedeutet auch eine deutlich längere Rückkopplungsschleife.

Kontinuierliche Belastungstests ist eine Art Softwareentwicklungstest, bei dem ein Computersystem, ein Netzwerk oder eine Webanwendung einem kontinuierlichen Strom von Last oder Datenverkehr ausgesetzt wird, um festzustellen, wie es sich bei anhaltender Nutzung verhält. Der Zweck von kontinuierlichen Lasttests besteht darin, Leistungsprobleme frühzeitig zu erkennen und zu beheben, bevor sie sich ausweiten und Benutzer oder Kunden beeinträchtigen.

Surfen Sie mit Software-Lasttests durch den Black Friday

Unternehmen, die auf eine Cloud-Infrastruktur umgestiegen sind, sind weniger anfällig für Leistungsprobleme, da sie bei Bedarf zusätzliche Ressourcen bereitstellen können. Wenn jedoch in den späten Phasen des Softwareentwicklungslebenszyklus (SDLC) ein tief verwurzeltes Problem identifiziert wird, müssen schwierige und teure Entscheidungen im Hinblick auf die Behebung des Problems getroffen werden. Diese Entscheidungen gehen nicht immer den Weg der Nachbesserung.

Kontinuierliche Belastungs- und Leistungstests werden häufig zusammen verwendet, um die Leistung und Stabilität eines Systems oder einer Anwendung kontinuierlich zu überwachen und zu verbessern. Dies kann die Automatisierung des Testprozesses und seine Integration in die Entwicklungs- und Bereitstellungspipelines umfassen, sodass das System oder die Anwendung in verschiedenen Phasen ihres Lebenszyklus getestet wird.

Es kann auch erforderlich sein, dass Testautomatisierungsingenieure einen Teil der Verantwortung für die Erstellung und Wartung von Lasttestszenarien übernehmen. Es ist wichtig, Tools zu wählen, die die entstehenden Bedürfnisse unterstützen Shift-Left-Performance-Tests ohne Ihre Ressourcen zu ermüden. Durch kontinuierliches Testen und Überwachen der Leistung eines Systems oder einer Anwendung können Unternehmen sicherstellen, dass ihre Systeme die Anforderungen von Benutzern und Kunden erfüllen.

2. Verwenden Sie die Dienstvirtualisierung, um das Testdatenproblem zu lösen

Es gibt keine besseren Testdaten als frische Produktionsdaten. Beim Testen konzentrieren sich traditionelle Testdatenmanagement-Lösungen (TDM) darauf, Produktionsdaten zu klonen und zu massieren, um sie für Tests wiederzuverwenden.

Dies ist zwar ein effizienter Ansatz, um realistische Daten zu erhalten, hinterlässt jedoch einige blinde Flecken und ist mit einem Ablaufdatum versehen. Darüber hinaus müssen Sie das Volumen, den Datenschutz und die Komplexität berücksichtigen, wenn Sie Tests zu umfassenden Leistungstests skalieren und komplexe Testszenarien implementieren.

Service-Virtualisierung ist eine Technik Damit können Sie das Verhalten abhängiger Systeme oder Komponenten während des Testens simulieren. Sie können virtuelle Versionen der Assets und der relevanten Daten erstellen. Dies kann nützlich sein, um das „Testdatenproblem“ anzugehen, da Sie die Leistung Ihres Systems oder Ihrer Anwendung testen können, ohne sich auf echte Daten von externen Systemen verlassen zu müssen.

Entwickler und Tester können die Dienstvirtualisierung verwenden, um eine Kopie der abhängigen Systeme oder Komponenten zu erstellen, auf denen das System oder die Anwendung basiert. Diese virtuellen Versionen können das Verhalten und die Reaktion realer Systeme oder Komponenten nachahmen, sodass Sie Ihr System oder Ihre Anwendung in einer kontrollierten Umgebung testen können, ohne dass echte Daten erforderlich sind.

Die Dienstvirtualisierung kann dabei helfen, das Testdatenproblem auf folgende Weise anzugehen.

  1. Reduzieren Sie den Bedarf an großen Testdatenmengen. Durch die Verwendung virtueller Versionen abhängiger Systeme oder Komponenten können Sie Ihr System oder Ihre Anwendung mit einem kleineren Volumen an Testdaten testen.
  2. Datenschutz schützen. Die Servicevirtualisierung ermöglicht es Ihnen, Ihr System oder Ihre Anwendung zu testen, ohne echte Daten preiszugeben, wodurch die Privatsphäre von Benutzern und Kunden geschützt wird.
  3. Vereinfachen Sie die Datenkomplexität. Mit virtuellen Assets können Sie die Komplexität von Testdaten vereinfachen und sich auf das Testen der Leistung Ihres Systems oder Ihrer Anwendung konzentrieren.
  4. Datenpflege verbessern. Aktualisieren Sie schnell und einfach das Verhalten Ihrer virtuellen Systeme oder Komponenten, damit die Testdaten einfacher gewartet und bei Bedarf aktualisiert werden können.
  5. Reduzieren Sie die Anforderungen an die Datenspeicherung. Indem Sie die Menge an Testdaten reduzieren, die Sie speichern und verwalten, können Sie die Speicher- und Infrastrukturanforderungen minimieren.

Service-Virtualisierung ist eine flexible Lösung, die Entwicklungsteams in allen Facetten von DevOps und Testautomatisierung einsetzen können. Sehen Sie sich an, wie Ryan Papineau von Alaska Airlines einen detaillierten Einblick gibt, wie große US-Fluggesellschaften die Servicevirtualisierung mit TDM-Lösungen nutzen, um Crew-Management-Systeme zu testen.

3. Implementieren Sie Chaos Engineering in Ihren DevOps

Ein weiterer Ansatz, der Unternehmen dabei helfen kann, sich auf ungeplante Probleme vorzubereiten, ist Chaos Engineering. Chaos Engineering ist die Praxis, absichtlich Fehler oder Störungen in ein System einzuführen, um seine Belastbarkeit und Zuverlässigkeit zu testen und zu verbessern. Durch die Simulation verschiedener Ausfallszenarien können Fluggesellschaften Schwachstellen in ihren Systemen identifizieren und beheben, bevor sie während der geschäftigen Urlaubszeit zu größeren Problemen werden.

Chaos Engineering ist seitdem stetig auf dem Vormarsch Netflix hat damit Pionierarbeit geleistet. Es zielt darauf ab, auch 2023 ein Top-Trend in DevOps zu sein.

Um Chaos Engineering zu implementieren, kann ein Team eine Reihe von Hypothesen über die potenziellen Fehlermodi entwickeln, die während des Hochlastbetriebs auftreten könnten. Entwicklungsteams können dann Chaos Engineering verwenden, um ihre Systeme auf Folgendes zu testen.

  • Kapazität. Können die Systeme das erhöhte Verkehrsaufkommen während der Spitzenauslastung bewältigen?
  • Skalierbarkeit Können die Systeme je nach Bedarf vergrößert oder verkleinert werden, um sich ändernden Anforderungen gerecht zu werden?
  • Elastizität. Können sich die Systeme nach Ausfällen oder Störungen schnell erholen?

Es gibt eine Reihe von Tools wie Chaos Monkey, Gremlin und Service-Virtualisierung, die diese Fehler in kontrollierten Umgebungen wie Staging und Tests simulieren. Durch die Überwachung der Auswirkungen der simulierten Ausfälle auf das System können Teams Probleme erkennen und Anpassungen vornehmen, um die Widerstandsfähigkeit des Systems zu verbessern.

Wechseln Sie nahtlos zu einer optimierten CI/CD-Pipeline, die kontinuierliche Tests integriert.

4. Investieren Sie in Skalierbarkeit, Modernisierung und Qualität

Rückblickend ist 20/20, aber ein erhöhter Verkehr und eine erhöhte Nachfrage während der Spitzenzeiten können schwer vorherzusagen sein. Proaktiv zu sein mag wie ein Luxus erscheinen, aber es wird Ihnen helfen, technische Schulden zu vermeiden und Ihre Software und Systeme zukunftssicher zu machen. Die kontinuierliche Modernisierung und Implementierung von Qualitätspraktiken bedeutet aus technologischer Sicht eine erhebliche Investition in den Betrieb.

Skalierbarkeit bezieht sich auf die Fähigkeit eines Systems oder einer Anwendung, erhöhte Last oder Verkehr ohne Leistungseinbußen zu bewältigen. Durch Investitionen in Skalierbarkeit können Unternehmen sicherstellen, dass ihre Softwaresysteme den erhöhten Datenverkehr und die Nachfrage bewältigen können, die typischerweise mit der Weihnachtszeit einhergehen. Dies kann Dinge wie die Verbesserung der Leistung und Kapazität ihrer Systeme sowie die Implementierung von Lastausgleich und anderen Techniken zur Verteilung des Datenverkehrs auf mehrere Server oder Ressourcen umfassen.

Modernisierung bezieht sich auf den Prozess der Aktualisierung und Verbesserung der Technologie und Infrastruktur eines Unternehmens. Durch die Modernisierung ihrer Systeme und Prozesse können Unternehmen die Effizienz, Zuverlässigkeit und Skalierbarkeit ihrer kritischen Software verbessern, was ihnen helfen kann, den erhöhten Datenverkehr und die steigende Nachfrage besser zu bewältigen.

Testen ist auch wichtig, um sich auf Bedingungen mit hohem Stress vorzubereiten. Durch die Durchführung von Lasttests, Stresstests und anderen Arten von Leistungstests können Unternehmen potenzielle Probleme mit ihren Systemen erkennen und beheben, bevor sie sich auf Benutzer oder Kunden auswirken.

Insgesamt können Investitionen in diesen Bereichen Unternehmen dabei helfen, sich auf unerwartete Situationen vorzubereiten, indem sie es ihnen ermöglichen, den erhöhten Verkehr und die Nachfrage zuverlässig und effizient zu bewältigen.

Fazit

Gute Geschäfts- und Softwareentwicklungspraktiken können eine entscheidende Rolle dabei spielen, Unternehmen bei der Vorbereitung auf die Weihnachtszeit und andere Situationen mit hoher Auslastung zu unterstützen. Indem sie sich auf Skalierbarkeit, Modernisierung und Tests konzentrieren, können Entwicklungsteams sicherstellen, dass ihre Systeme und Anwendungen in der Lage sind, den erhöhten Datenverkehr und die möglicherweise auftretende Nachfrage zu bewältigen.
Die Investition und Implementierung dieser Praktiken kann Unternehmen dabei helfen, die Leistung und Zuverlässigkeit ihrer Systeme zu verbessern, das Risiko von Ausfällen oder Ausfallzeiten zu verringern und ein besseres Kundenerlebnis zu bieten. Unternehmen, die sicherstellen, dass sie gut auf das gelegentliche Chaos vorbereitet sind, bieten ihren Benutzern ein nahtloses Erlebnis.

Finden Sie heraus, warum Parasoft als führender Anbieter unter den 15 führenden Anbietern von Plattformen für kontinuierliche Automatisierungstests ausgezeichnet wurde.

Von Grigori Trofimov

Grigori Trofimov ist Solution Architect bei Parasoft und bietet potenziellen Kunden, Kunden und Partnern Beratungsdienste für die Testlösungen von Parasoft an. Er hat kürzlich auf Konferenzen zum Thema Service-Virtualisierung und Bereitstellung von Einwegumgebungen in der Cloud gesprochen.

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