Empfohlenes Webinar: MISRA C++ 2023: Alles, was Sie wissen müssen | Zum Video

Moderne Analytik für moderne Softwaretests

Kopfbild von Jeehong Min, DTP Product Director bei Parasoft
21. März 2023
6 min lesen

Der Einblick in wichtige Kennzahlen hilft Entwickler- und Testteams, fundierte Entscheidungen zu treffen, um qualitativ hochwertige Software pünktlich und im Rahmen des Budgets zu veröffentlichen. Lesen Sie weiter, um zu erfahren, welche Metriken wichtig zu verfolgen sind.

Autofahren ohne klare Sicht ist nicht nur gefährlich, sondern auch rücksichtslos. Es setzt Sie und alle um Sie herum dem Risiko von Kollisionen, Verletzungen und sogar Todesfällen aus. Ohne die Straße vor sich sehen zu können, können Sie potenzielle Gefahren oder Hindernisse nicht vorhersehen, was es unmöglich macht, fundierte Entscheidungen zu treffen und angemessene Maßnahmen zu ergreifen.

Ebenso ist die Entwicklung von Software, ohne den Prozess transparenter zu machen, wie Blindfahrt. Softwaremetriken sorgen für die nötige Transparenz Identifizieren Sie potenzielle Qualitäts- und Sicherheitsprobleme die sofortige Aufmerksamkeit erfordern, damit Sie entscheiden können, wann Sie weiter Vollgas geben und wann Sie langsamer fahren sollten.

Wenn Sie noch einen Schritt weiter gehen, helfen Ihnen Analysen und intelligente Software dabei:

  • Verstehe die Metriken.
  • Risiko einschätzen.
  • Qualität messen.
  • Ergebnisse vorhersagen.
  • Arbeiten Sie effektiv mit Ihrem Team zusammen.

All dies hilft Teams dabei:

  • Fristen einhalten.
  • Liefern Sie qualitativ hochwertige Produkte.
  • Kunden zufrieden stellen.

Wie man moderne Software plant

Moderne Softwareprojekte werden in der Regel so geplant, dass die Kosten der zu verpflichtenden User Stories gegen die Kapazität des Teams abgewogen werden. Normalerweise werden diese Geschichten in Tools wie Jira, GitHub oder Azure DevOps erfasst.

Produktmanager verhandeln mit Entwicklungsmanagern, um festzustellen, was im aktuellen Release-Zyklus realistischerweise getan werden kann. Als Nächstes können Entwicklungsmanager auf der Grundlage von Folgendem planen:

  • Neue Anforderungen.
  • Bestehende Probleme zu beheben.
  • Mögliche technische Schulden, die angegangen werden müssen.

Grafik einer Skala, die das erforderliche Gleichgewicht für die Kapazität eines Teams und die zugesagten Story Points (Kosten) darstellt.

Planänderungen sind natürlich vorbehalten. Die meisten Softwareprojekte stoßen auf Probleme oder Hindernisse, die das Ergebnis des Plans verändern können. Insbesondere Sicherheitslücken können ein großer Rückschlag sein. Störungen sind unvermeidlich, aber ohne die Auswirkungen messen zu können, wird es schwierig, das Projekt einzudämmen.

Sichtbarkeit mit Schnellzugriff

Sichtbarkeit ist für die Entwicklung von Software unerlässlich. Überwachungstools und Analysen liefern Erkenntnisse, um sichere und effektive Entscheidungen zu treffen.

Der schnelle Zugriff auf Softwareentwicklungsmetriken in einem benutzerfreundlichen Dashboard ist wichtig für Softwareentwicklung verstehen Status und Fortschritt. Der schnelle Zugriff über visuelle Tools wie Dashboards ermöglicht agilen Entwicklungsteams Folgendes:

  • Identifizieren Sie Trends, Muster und Probleme, die möglicherweise Aufmerksamkeit erfordern, über eine einzige, konsolidierte Ansicht der wichtigsten Kennzahlen.
  • Treffen Sie zeitnah fundierte Entscheidungen anhand von Echtzeit-Updates zu Softwareentwicklungsmetriken.
  • Verstehen Sie komplexe Daten auf intuitivere und visuell ansprechendere Weise.

Welche Metriken sind wichtig zu verfolgen?

Metriken werden in der Regel an Stellen erfasst, an denen Tools zur Automatisierung von Softwaretests den Code „berühren“. Typischerweise erfolgt das Sammeln während der statischen Analyse und Testausführung. Gesammelte Details können beispielsweise mit Querverweisen auf Dateien, bestimmte Tests, bekannte Sicherheitslücken oder Softwareschwächen und Anforderungen verknüpft werden.

Statische Analyseergebnisse

Als ich als Entwickler anfing, war ich skeptisch gegenüber den Vorteilen der statischen Analyse. Ich tat es nur, weil es eine Unternehmensrichtlinie war. Im Laufe der Jahre habe ich seine Vorteile zu schätzen gelernt. Die statische Analyse erkennt konsequent bestimmte Probleme, die andernfalls nicht erfasst worden wären und sich als Fehler für Kunden manifestiert hätten. Die Vorteile überwiegen die Unannehmlichkeiten, die unvermeidlichen Fehlalarme der statischen Analyse unterdrücken zu müssen.

Die statische Analyse hilft dabei, Sicherheits- und Codequalitätsüberlegungen zu einem früheren Zeitpunkt im Lebenszyklus der Softwareentwicklung zu verlagern, sodass Entwickler Probleme angehen können, bevor deren Behebung teurer und zeitaufwändiger wird.

By Statische Analyse integrieren in den Entwicklungsprozess können Entwickler Sicherheitsprobleme identifizieren und beheben, bevor sie sich auf Endbenutzer auswirken. Für bestimmte sicherheitskritische Branchen ist die statische Analyse ein Muss, damit Ihre Codebasis den Anforderungen der Codierung und der Branchenrichtlinien entspricht.

Eine Grafik, die die Beachtung der Qualität auf der Y-Achse und die Stadien des SDLC auf der X-Achse zeigt. Die Datenpunkte vergleichen das Qualitätsniveau in jeder Phase für das Shift-Left-Modell, das von einem traditionellen Qualitätsmodell überlagert wird.

Die Metriken aus der statischen Analyse können wertvolle Einblicke in den Qualitäts- und Sicherheitszustand der Anwendung liefern und Organisationen dabei helfen, ihre Softwareentwicklung besser zu planen. Metriken wie die Anzahl der Fehler, ihr Schweregrad und ihre Position innerhalb der Codebasis können Teams dabei helfen, Probleme zu priorisieren und Ressourcen entsprechend zuzuweisen. Sie können den Fortschritt im Laufe der Zeit verfolgen und Verbesserungsbereiche identifizieren.

Die statische Analyse hilft auch bei der Einhaltung von Standards. Die gesammelten Metriken liefern Organisationen die Daten, die sie benötigen, um die Einhaltung von Branchen- oder Regulierungsstandards nachzuweisen.

Testergebnisse

Testergebnisse sind die wichtigsten Metriken (ja, die wichtigsten) für Softwareentwicklungsteams. Wenn Tests fehlschlagen, stimmt etwas nicht und erfordert sofortige Aufmerksamkeit. Es gibt verschiedene Arten von Tests. Teams sollten jeden Tag Metriken für jeden Typ sammeln und überprüfen.

Unit-Tests

Komponententests sind die grundlegenden Bausteine ​​Ihrer Testsuite. Die Hauptvorteile sind:

  • Stellen Sie sicher, dass die Codeeinheit ordnungsgemäß funktioniert.
  • Führen Sie jeden Build Ihres Codes aus, sobald er eingecheckt ist, und stellen Sie sicher, dass die Einheit weiterhin funktioniert.
  • Schnell ausführen bedeutet, dass sie häufig ausgeführt werden können, während neuer Code geschrieben oder vorhandener Code geändert wird.
  • Ermöglicht es Ihnen, Code mit Zuversicht umzugestalten.
  • Zwingen Sie automatisch, testbaren Code zu schreiben.
  • Ermöglichen Ihnen das einfache Messen der Codeabdeckung. Die meisten Frameworks machen dies recht einfach.

API-Integrationstests

Integrationstests stellen fest, ob unabhängig voneinander entwickelte Softwareeinheiten korrekt funktionieren, wenn sie miteinander verbunden sind. API-Tests sind eine Art Integrationstest.

In der Softwareentwicklung ist ein Satz beliebt: Integriere früh, integriere oft.

Integrationstests sind ein Muss, um den vollen Nutzen aus dieser Praxis zu ziehen. Sie sind schwieriger zu schreiben als Komponententests. Die Nutzung eines guten Testwerkzeugs oder Frameworks hilft jedoch definitiv. Und es erfordert mehr Arbeit, die Codeabdeckung zu messen, während Integrations- oder API-Tests ausgeführt werden.

UI-Tests

UI-Tests sind ein weiterer Testtyp, der die Anwendung durch die Benutzeroberfläche führt. Diese sind wertvoll. Wenn Sie UI-Tests automatisieren können, ersparen Sie Ihrem Team, immer wieder manuelle Tests durchführen zu müssen.

Diese Tests sind am schwierigsten zu schreiben und können kostspielig in der Wartung sein. Ihre Ausführung erfordert auch eine Investition in eine Testinfrastruktur, in der Sie sie mit bestimmten Browsern oder im Headless-Modus ausführen können. Auch die Messung der Codeabdeckung erfordert Investitionen.

Beachten Sie, dass Parasoft bietet Tools und Frameworks an für jeden dieser Testtypen, was es Ihnen erleichtert, diese Tests zu schreiben und zu verwalten sowie die Codeabdeckung während der Ausführung zu messen.

Manuelle Tests

Schließlich erfordern manuelle Tests, dass Ihr Qualitätssicherungsteam (QA) die Funktionalität der Software aus Sicht des Endbenutzers manuell validiert. Die Ergebnisse manueller Tests können Einblicke in die Benutzerfreundlichkeit und Benutzererfahrung der Software geben und Bereiche hervorheben, in denen möglicherweise Verbesserungen erforderlich sind.

Testpyramide beginnend von unten nach oben: Einheitentests, API-Integrationstests, automatisierte UI-Tests, Person, die oben auf Handbuch hinweist.

Code-Abdeckung

Die Codeabdeckung ist eine Metrik, die Hand in Hand mit Ihren Testergebnissen geht. Sie können die Tests zu 100 % bestehen, aber wenn nur 5 % Ihrer Codebasis getestet werden, fahren Sie immer noch blind.

Vor einer Autofahrt würden Sie sich sicherer fühlen, wenn Ihr Auto eine 150-Punkte-Autoinspektion bestanden hätte, anstatt nur eine 10-Punkte-Autoinspektion. Auf die gleiche Weise ist die Codeabdeckung eine nützliche Metrik, die mit der Tiefe und Qualität Ihrer Testsuite korreliert.

Was ist eine gute Abdeckung? Es hängt davon ab, ob.

Wenn Sie ein neues Projekt starten, ist es sinnvoll, von Anfang an eine Codeabdeckung von 80 % oder mehr anzustreben. Das bedeutet, dass 80 % Ihrer Codebasis getestet werden. Wenn Ihre Codebasis eine Mischung aus neuem Code und etwas Legacy-Code ist, kann es schwierig sein, eine Codeabdeckung von 80 % durchzusetzen. In diesem Fall können Sie zwei weitere Metriken verfolgen:

  1. Codeabdeckungstrend
  2. Modifizierte Codeabdeckung

Abdeckungstrend und modifizierte Codeabdeckung

Wenn Ihre gesamte Codeabdeckung zu Beginn niedrig ist, sagen wir 10 %, dann ist es möglicherweise unvernünftig, eine Codeabdeckung von 80 % zu erreichen. Es ist jedoch sinnvoll sicherzustellen, dass sich Ihre Codeabdeckung im Laufe der Zeit immer verbessert.

Sie verbessern die Codeabdeckung im Laufe der Zeit, indem Sie den Trend verfolgen. Darüber hinaus empfiehlt Parasoft die Messung der modifizierten Codeabdeckung. Dies ist eine Teilmenge Ihrer gesamten Codeabdeckung – nur die Codeabdeckung des Codes, der sich geändert hat, seit Sie mit der Messung der Codeabdeckung begonnen haben.

Parasoft empfiehlt, ein Ziel von 80 % modifizierter Codeabdeckung festzulegen. Indem Sie diese Vorgehensweise anwenden, können Sie sicherstellen, dass sich Ihre gesamte Codeabdeckung weiter in Richtung dieses Ziels von 80 % verbessert, selbst wenn Sie mit einer insgesamt niedrigen Codeabdeckung beginnen.

Verschiedene Deckungsarten

Für viele Organisationen kann es ausreichend sein, die Leitungsabdeckung zu messen. Für bestimmte sicherheitskritische Branchen reicht die Messung der Leitungsabdeckung jedoch nicht aus. Sicherheitsstandards wie ISO 26262, IEC 62304 und DO-178C erfordern den Nachweis ausreichender Codeabdeckungsmetriken wie Anweisung, Verzweigung, MC/DC und andere. Tools, die vom TÜV SÜD für diese Standards zertifiziert sind, wie Parasoft C/C++test, können erweiterte Metriken zur Codeabdeckung messen.

Putting It All Together

Nachdem Sie nun wissen, welche Metriken wichtig sind, möchten Sie diese Metriken einfach und schnell sichtbar machen. Parasoft DTP ist ein Dashboard- und Berichtstool, das Ihnen Einblick in all diese Metriken gibt, damit Sie nicht blind fahren müssen.

Screenshot, der ein Parasoft DTP-Dashboard mit statischen Analyse- und Testergebnismetriken für alle Projekte in einem agilen Workflow zeigt.

Entwicklungsteams können solche Dashboards bei täglichen Standup-Meetings verwenden und den Qualitätsstatus des Projekts den Stakeholdern bei Sprint-Reviews zeigen.

Qualitäts- und Compliance-Teams können Dashboards verwenden, um ihre Bemühungen zur Einhaltung bestimmter Branchenstandards kontinuierlich zu überwachen. Machen Sie eine kurze Tour durch DTP um zu sehen, wie Entwicklungsteams volle Transparenz erhalten.

Bessere Qualität steigert den Wert

Wenn Sie Einblick in wichtige Qualitätsmetriken haben, müssen Sie nicht blind fahren. Stattdessen können Sie bei jedem Schritt fundierte Entscheidungen treffen, die Ergebnisse zeigen.

  • Release pünktlich und im Rahmen des Budgets.
  • Weniger Supportprobleme.
  • Verbessern Sie die Kundenzufriedenheit.
  • Steigern Sie den Ruf der Marke.

Warum blind fahren, wenn man Sicht haben kann?

Möchten Sie aus erster Hand sehen, wie Ihre Entwicklungs- und Testteams anhand wichtiger Kennzahlen fundierte Entscheidungen treffen können?