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

Statische Analyse und dynamische Analyse

Statische Analyse und dynamische Analyse Lesezeit: 3 Minuten

Von Boguslaw Czwartkowski, Parasoft Professional Services Manager

Statische Codeanalyse ist ein weit gefasster Begriff, der verschiedene Arten von Analysen beschreibt:

  • Statische Code-Analyse (auch bekannt als musterbasiert statische Analyse): Diese Art der statischen Analyse sucht nach Codemustern, die gegen definierte Codierungsregeln verstoßen. Neben der Sicherstellung, dass der Code einheitliche Erwartungen hinsichtlich der Einhaltung gesetzlicher Vorschriften oder interner Initiativen erfüllt, können Teams auch Fehler wie Ressourcenlecks, Leistungs- und Sicherheitsprobleme, logische Fehler und API-Missbrauch vermeiden.
  • Durchflussbasierte statische Analyse: Diese Art von statische Analyse beinhaltet das Finden und Analysieren der verschiedenen Pfade, die durch den Code genommen werden können, sowohl durch "Steuerung" (dh die Reihenfolge, in der Zeilen ausgeführt werden können) als auch durch Daten (dh die Sequenzen, in denen eine Variable oder eine ähnliche Entität erstellt werden kann). geändert, benutzt und zerstört). Dies kann Probleme aufdecken, die zu kritischen Fehlern führen, wie z. B. Speicherbeschädigungen (Pufferüberschreibungen), Speicherzugriffsverletzungen, Nullzeiger-Dereferenzen, Race-Bedingungen oder Deadlocks. Es kann auch Sicherheitsprobleme erkennen, indem Pfade aufgezeigt werden, die sicherheitskritischen Code umgehen (z. B. Code, der die Authentifizierung oder Verschlüsselung durchführt).
  • Metrikanalyse: Dies beinhaltet das Messen und Visualisieren verschiedener Aspekte des Codes. Es kann helfen, vorhandene Fehler zu erkennen, warnt jedoch häufiger vor potenziellen Schwierigkeiten bei der Verhinderung und Erkennung zukünftiger Fehler, wenn der Code beibehalten wird. Dies geschieht durch Auffinden von Komplexität und Unhandlichkeit wie zu großen Komponenten, übermäßiger Verschachtelung von Schleifen, zu langen Reihen von Entscheidungen und verschlungenen Abhängigkeiten zwischen Komponenten.

Warum statische Code-Analyse so wertvoll ist

Das Ding all diese Arten von statische Analyse Gemeinsam ist, dass sie das Scannen (dh das Untersuchen eines Programms) des Quellcodes beinhalten. Dies ist eine sehr schnelle und einfache Möglichkeit, kritische Fehler aufzudecken. Es erreicht eine 100% ige Abdeckung und seine Ergebnisse sind zu 100% objektiv. Es ist fast unmöglich, dagegen zu argumentieren.

Jenseits des Bereichs der statischen Analyse

Die statische Codeanalyse liefert Informationen, um vorherzusagen, was passieren kann, wenn Code integriert und ausgeführt wird. Es erkennt Fehler basierend auf dem, was das Tool als Fehler betrachtet (normalerweise kann dies an Ihre Vorlieben und Prioritäten angepasst werden). Es kann Ihnen jedoch nicht sagen, wann das System im Test oder in der Produktion NICHT das tut, was es tun soll – oder etwas tut, was niemand erwartet hätte.

Die Herausforderung besteht darin, das unerwartete Verhalten zu beobachten. Beispielsweise scheint eine Transaktion für einen Benutzer (oder einen Tester oder ein Testausführungstool) korrekt zu sein, während eine Komponente tatsächlich eine nicht behandelte Ausnahme ausgelöst hat und diese nicht korrekt verarbeitet hat. Ein Steuerungssystem reagiert möglicherweise 3 Tage lang schnell und korrekt auf den Test, verliert jedoch Speicher und steht am 4. Produktionstag vor einem Absturz. Behebung aller mit a statisches Code-Analyse-Tool gibt keine Garantie gegen andere Mängel, die zu solchen Fehlern führen.

Aus diesem Grund ist es wichtig, die Definition von Fehler auch nach der Integration auf internes und externes Verhalten anzuwenden. Der interne Fehler muss erkannt werden, bevor er sich extern manifestiert.

Dynamische Analyse - Laufzeitfehlererkennung

Bei Parasoft bezeichnen wir diese Aktivität als Laufzeitfehlererkennung, eine Form der dynamischen Analyse. Hier verschwimmen die Unterscheidungen zwischen den Testtypen. Dynamische Anwendungssicherheitstests ist eine analytische Prüfung, da beabsichtigt ist, den Prüfling zu untersuchen, anstatt ihn auszuüben. Es ist ein White-Box-Test, bei dem wir eher internes als externes Verhalten untersuchen. Der zu testende Code muss jedoch ausgeführt werden. Dazu werden dieselben Black-Box-Tests ausgeführt, die für dynamische Tests verwendet wurden.

Laufzeitfehlererkennung Erkennt und meldet einen internen Fehler zum Zeitpunkt seines Auftretens, sodass der Tester ihn leicht und genau mit Testaktionen für die Meldung von Vorfällen korrelieren kann. Wie gut statische AnalyseEs enthält vollständige technische Details, damit der Entwickler den zugrunde liegenden Fehler isolieren und beheben kann. Die Laufzeitfehlererkennung erweitert die Möglichkeiten für empirische Tests auf allen Ebenen, von der Einheit bis zur Akzeptanz, indem sie es ermöglicht, einen internen Fehler zu erkennen, der darauf hinweist, dass ein ansonsten nicht beobachtbarer externer Fehler aufgetreten ist oder auftreten wird, nachdem der Test gestoppt wurde.

***

Photo Credit: Dexxus

Geschrieben von

Parasoft

Die branchenführenden automatisierten Softwaretest-Tools von Parasoft unterstützen den gesamten Softwareentwicklungsprozess, vom Schreiben der ersten Codezeile über Unit- und Funktionstests bis hin zu Leistungs- und Sicherheitstests, wobei simulierte Testumgebungen genutzt werden.

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