Wie das Testen nach links verschiebt die Softwareentwicklungsrisiken reduziert
Von Jason Schadewald
10. Juli 2013
5 min lesen
Alle Unternehmen möchten (oder sollten) die mit der Softwareentwicklung verbundenen Risiken reduzieren. Für Unternehmen, die der sicherheitskritischen und der Finanzbranche dienen, muss das Risiko jedoch nach Möglichkeit beseitigt und in allen anderen Fällen minimiert werden.
Shift-Left-Test Erzielt eine Risikominderung in den folgenden Schlüsselbereichen, die ich im Folgenden näher erläutern werde:
- Sicherheit
- Transparenz
- Einhaltung von Vorschriften und OEMs
- Zuverlässigkeit
- Anwendungsänderungen
- Ausgelagerte Entwicklung
Was ist "Shift-Left"?
Bei der Verlagerung nach links geht es darum, kritische Testpraktiken zu einem früheren Zeitpunkt im Entwicklungslebenszyklus zu verschieben. Dieser Begriff wird insbesondere in Agile-, Continuous- und DevOps-Initiativen verwendet. Warum müssen Sie frühzeitig Softwaretests durchführen?
Viele Testaktivitäten finden spät im Zyklus statt, wobei es länger dauert, um herauszufinden, was schief gelaufen ist, und die Reparatur mehr kostet. Beim Verschieben nach links geht es darum, die Identifizierung und Verhinderung von Fehlern auf früher zu verschieben. Wenn Sie dies nicht tun und darauf warten, später im Entwicklungszyklus Testpraktiken durchzuführen, sind insbesondere Ihre nicht funktionierenden Geschäftsanforderungen (dh Sicherheits- und Leistungstests) so grundlegend in Ihrem Code verankert, dass Sie sie nur noch patchen können anstatt sie richtig zu reparieren. Wie hilft das Verschieben von Tests „nach links“ den Schlüsselbereichen der Software?
Sicherheit
Eine beeinträchtigte Anwendungssicherheit führt zu Informationsverlust, Ausfallzeiten, Defacement und Malware-Installation. Diese Konsequenzen machen laut der Web Hacking Incident Database 61.6% der sicherheitsrelevanten Ergebnisse aus.
Der traditionelle Sicherheitsansatz besteht darin, direkte Angriffe durch eine Kombination aus Rätselraten und Erfahrung zu simulieren. Der traditionelle Ansatz ist ineffektiv und veraltet, da er zu sehr auf Glück angewiesen ist. Mit Linksverschiebungstests können diese Sicherheitsrisiken zur Entwicklungszeit verhindert werden.
Transparenz
Eines der größten Risiken für ein Unternehmen ist der Mangel an Informationen, über die Entscheidungen getroffen werden können. Schreitet die Entwicklung mit einer Geschwindigkeit voran, die die Frist einhält? Ist das Produkt auf dem richtigen Weg, um die Anforderungen zu erfüllen? Muss jetzt etwas unternommen werden, um eine Gelegenheit zu nutzen oder die Auswirkungen eines bevorstehenden Kundenproblems abzuschwächen?
Die Shift-Left-Testplattform von Parasoft bietet Unternehmen eine beispiellose, unerreichte und vollständige Übersicht über den gesamten Entwicklungsprozess, indem sie die Daten aus jedem Teil der Softwareentwicklungsinfrastruktur zusammenführt und kontextbezogene Informationen gegen definierte Unternehmensrichtlinien anwendet, um sowohl einen automatisierten Prozess zur Vorbeugung als auch zu steuern Bereitstellung der erforderlichen Business Intelligence auf höchster Managementebene.
Einhaltung von Vorschriften und OEMs
Die Nichteinhaltung sicherheitskritischer, behördlicher oder OEM-Vorschriften kann zu Rückrufen führen, einen Vertrag ungültig machen, Strafen verhängen oder rechtliche Schritte einleiten. Während die Summen je nach Branche und Projekt sehr unterschiedlich sind, sind sie oft beträchtlich. Durch eine Kombination aus statischer Analyse, Abdeckungsanalyse, Prozessdefinition und Routinemessung systematisiert ein Testansatz nach links die Einhaltung in einen automatisierten, luftdichten Prozess, der die Risikobegrenzung sicherstellt.
Zuverlässigkeit
Die Zuverlässigkeit der Software ist nach wie vor eines der sichtbarsten Probleme, die mit Linksverschiebungstests leicht behoben werden können. Symptome wie Abstürze, Ausfallzeiten und verpasste SLAs können die Position eines Unternehmens auf dem Markt erheblich beeinträchtigen. Durch die Kombination von Prävention, Erkennung und Verifizierung in einem Prozess der kontinuierlichen Verbesserung wird durch Linksverschiebungstests die Reduzierung oder Eliminierung von Zuverlässigkeitsrisiken sichergestellt.
Anwendungsänderungen
Unter den Entwicklern gibt es einen alten Witz: "Wenn beim Debuggen Fehler behoben werden, muss bei der Entwicklung der Fehler behoben werden." In geschäftlicher Hinsicht ist jede Codeänderung ein Risiko.
Durch Linksverschiebungstests wird das Risiko der Einführung neuer Fehler beseitigt, indem Codierungsrichtlinien durchgesetzt werden, die strukturelle und gestalterische Probleme bei der Arbeit von Entwicklern verhindern. Darüber hinaus wird durch eine Teststrategie nach links verschoben das Risiko einer Beeinträchtigung der vorhandenen Funktionalität beseitigt, indem neben einer detaillierten Abdeckungsanalyse die automatisierte Generierung, Ausführung und Verwaltung von Regressionstests ermöglicht wird. Die automatisierte Peer-Review-Zuweisung bietet eine letzte Ebene der Risikominderung, die sicherstellt, dass 100% des Codes von einem geeigneten Teamexperten überprüft werden.
Ausgelagerte Entwicklung
Outsourcing verliert an Popularität, da Unternehmen schmerzhafte Lektionen über die Risiken billiger, unerfahrener Arbeitskräfte in einem High-Tech-Bereich lernen. Dennoch haben viele Unternehmen aktive Offshore-Entwicklungs- und Testteams und werden diesen Weg fortsetzen. Während die Strategien variieren, richten erfolgreiche Outsourcer sowohl vor Ort als auch außerhalb mehrere Risikominderungstore ein, um sich vor Risikoinjektionen zu schützen. Shift-Left-Tests sind eine natürliche Möglichkeit, Richtlinien für Codierungsstandards, Unit-Test-Abdeckung und Peer-Review an jedem Risikominderungstor festzulegen und durchzusetzen.
Wie verschiebt man sich nach links?
Der Kürze halber gliedert sich der Testansatz für die Verlagerung nach links in zwei Hauptaktivitäten:
Wenden Sie Best Practices für Entwicklungstests an
Beides in früheren Entwicklungsphasen wie statische Code-Analyse und Unit-Tests hilft beiden identifizieren und verhindern Mängel früher im Prozess.
Es ist wichtig, sich daran zu erinnern, dass das Ziel nicht darin besteht finden Bugs, aber zu Veteran die Anzahl der Fehler (insbesondere diejenigen, die es in die Veröffentlichung schaffen). Letztendlich ist es weitaus wertvoller, weniger Fehler zu erstellen, als mehr Fehler zu finden - und es ist viel billiger. Aus diesem Grund werden sicherheitskritische Codierungsstandards für einen proaktiven, vorbeugenden Ansatz festgelegt, indem Code gekennzeichnet wird, der möglicherweise „funktioniert“, aber dennoch nicht sicher ist.
Codierungsstandards sind das Software-Äquivalent zu technischen Standards und sie sind der Schlüssel zur Reduzierung des Fehlervolumens (zusätzlich zum früheren Auffinden von Fehlern), um Ihre Initiative zur Verlagerung nach links zu unterstützen und den größtmöglichen Nutzen daraus zu ziehen. Codierungsstandards sind die Verkörperung von Software-Engineering-Kenntnissen, mit denen Sie schlechten / gefährlichen / unsicheren Code vermeiden können. Um sie zu verwenden, wenden Sie eine statische Code-Analyse an.
Für die Software-Sicherheit ist dies besonders wichtig, um Ihre Software erfolgreich zu härten. Sie möchten Sicherheit in Ihren Code einbauen, nicht ihn testen. Mit Codierungsstandards können Sie von Anfang an eine sicherere Anwendung erstellen (dh von Natur aus sicher), was sowohl eine gute Idee als auch eine Anforderung ist wenn Sie Vorschriften wie der DSGVO unterliegen.
Nutzen Sie die Service-Virtualisierung, um kontinuierliche Tests zu ermöglichen
Als Nächstes müssen Sie die Tests durchführen, die in allen Phasen, einschließlich der späteren Phasen des Entwicklungsprozesses, erstellt wurden, und sie kontinuierlich ausführen. Dies ist wichtig für Teams, die agile Entwicklungspraktiken anwenden, um während des gesamten Entwicklungsprozesses ein kontinuierliches Feedback zu geben. Komponententests können problemlos kontinuierlich ausgeführt werden. Eine Verschiebung der Ausführung von Funktionstests in späteren Phasen nach links ist jedoch aufgrund externer Systemabhängigkeiten häufig schwierig. Hier können Sie die Servicevirtualisierung nutzen, um kontinuierliche Tests zu ermöglichen.
Service-Virtualisierung ermöglicht es Ihnen, abhängige Systeme zu simulieren, die möglicherweise eine begrenzte Verfügbarkeit haben, wie z. B. Mainframes, Zugangsgebühren, Dienste von Drittanbietern oder vielleicht Systeme, die einfach noch nicht bereit sind. Indem Sie sie simulieren, können Sie Funktionstests durchführen, ohne das gesamte System verfügbar zu haben, und Sie können die Testausführung nach links bis zum Entwicklungsdesktop verschieben.
In Bezug auf Leistungstests können Sie mit der Servicevirtualisierung testen, bevor alles fertig ist, und ohne ein vollständiges Labor für alles im System zu haben. Sie können sogar alle Arten von Was-wäre-wenn-Szenarien ausführen, z. B. was, wenn der App-Server schnell und die Datenbank langsam ist (etwas, das in der realen Welt schwierig zu realisieren ist). Oder was ist, wenn mein Server lustige Fehler wie einen 500-Fehler auslöst - wie wirkt sich das auf die Systemleistung aus?
Sie können das System so stark wie Sie möchten und darüber hinaus so früh wie möglich ausführen. (Erfahren Sie mehr darüber, wie es geht Verschieben Sie Ihre Leistungstests nach links.)
Ebenso können Sie Ihre Sicherheitstests früher durchführen. Durch die Entkopplung von physischen Systemen können Sie etwas noch Interessanteres tun, nämlich die simulierten Systeme auf böse Weise verhalten zu lassen. Jetzt können Sie WIRKLICH mit Sicherheitstests beginnen ... Anstatt Ihr System nur nach verschmutzten Daten und DDoS zu durchsuchen, können Sie sich von einem System mit Paketen überfluten lassen oder fehlerhafte Daten oder einen der vielen anderen Exploits senden, die häufig von Angreifern verwendet werden. Sie können also nicht nur früher testen (links), sondern auch viel tiefer testen, als dies mit einem Testlabor oder Produktionssystem möglich ist.