Testverfahren bei der Softwareentwicklung: Unterschied zwischen den Versionen
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[Kategorie:Projekte]] | |||
==Einleitung== | ==Einleitung== | ||
Statische Code-Analyse oder kurz statische Analyse ist ein statisches Software-Testverfahren. Der Quelltext wird hierbei einer Reihe formaler Prüfungen unterzogen, bei denen bestimmte Sorten von Fehlern entdeckt werden können, noch bevor die entsprechende Software (z. B. im Modultest) ausgeführt wird. Die Methodik gehört zu den falsifizierenden Verfahren, d. h. es wird die Anwesenheit von Fehlern bestimmt. | Statische Code-Analyse oder kurz statische Analyse ist ein statisches Software-Testverfahren. Der Quelltext wird hierbei einer Reihe formaler Prüfungen unterzogen, bei denen bestimmte Sorten von Fehlern entdeckt werden können, noch bevor die entsprechende Software (z. B. im Modultest) ausgeführt wird. Die Methodik gehört zu den falsifizierenden Verfahren, d. h. es wird die Anwesenheit von Fehlern bestimmt. | ||
Zeile 29: | Zeile 30: | ||
*Stellen Sie die in der Literatur gängigen Verfahren vor. | *Stellen Sie die in der Literatur gängigen Verfahren vor. | ||
*Ordnen Sie vor diesem Hintergrund QA-C, QA-C++ und Cantata++ ein. | *Ordnen Sie vor diesem Hintergrund QA-C, QA-C++ und Cantata++ ein. | ||
* Einführung in die Software | * Einführung in die Software mit praktischen Beispielen. | ||
*Beschreiben Sie den Funktionsumfang der Software anhand praktischer Beispiele. | *Beschreiben Sie den Funktionsumfang der Software anhand praktischer Beispiele. | ||
Aktuelle Version vom 3. Januar 2015, 16:09 Uhr
Einleitung
Statische Code-Analyse oder kurz statische Analyse ist ein statisches Software-Testverfahren. Der Quelltext wird hierbei einer Reihe formaler Prüfungen unterzogen, bei denen bestimmte Sorten von Fehlern entdeckt werden können, noch bevor die entsprechende Software (z. B. im Modultest) ausgeführt wird. Die Methodik gehört zu den falsifizierenden Verfahren, d. h. es wird die Anwesenheit von Fehlern bestimmt.
In Anlehnung an das klassische Programm Lint wird der Vorgang auch als linten (englisch linting) bezeichnet.
Neben dem gewissenhaften Studium von Quelltext durch Entwickler ist es möglich, viele inhaltliche Fehler werkzeuggestützt oder automatisch zu erkennen. Die Bandbreite reicht von der Sicherstellung von einfachen Coding-Standards (z. B. ein return-Statement pro Funktion) über die Prüfung von Typumwandlungen und Bereichsgrenzen über die Suche nach bestimmten Arten von Speicherlecks bis hin zur technischen Verifikation von Quelltext.
Einfache Analysen sind häufig bereits im Compiler (Übersetzer) einer Programmiersprache integriert, z. B. die Prüfung auf Initialisierung einer Variablen. Darüber hinaus gibt es Methoden, die den Programmierstil auf Ästhetik und Pragmatik prüfen, nämlich die stilistischen Methoden. Allerdings werden häufig nur Warnmeldungen angezeigt, die ignoriert werden können. Bei sogenannten Profilern wird zusätzlicher Objektcode generiert, welcher Aussagen über Codeabdeckung und Codefrequentierung generiert. Echte statische Analysierer gibt es nur wenige.
Automatisierte Codereview-Software vereinfacht die Aufgabe der Durchsicht großer Programmteile durch systematische Überprüfungen auf angreifbare Stellen wie:
- Race Conditions
- Formatstring-Angriffe
- Pufferüberläufe
- Speicherlecks
Aufgrund einer nach wie vor nicht unerheblichen Anzahl an falsch erkannten, nur vermeintlichen Schwächen im Quellcode ist eine vollautomatische Korrektur durch die Werkzeuge zur statischen Code-Analyse bis zum heutigen Tag nicht Usus.
Dynamische Software-Testverfahren sind bestimmte Prüfmethoden um beim Softwaretest Fehler in Software aufzudecken.
Während bei statischen Verfahren die zu testende Software nicht ausgeführt wird, setzen dynamische Verfahren die Ausführbarkeit der Software voraus. Grundprinzip der dynamischen Verfahren ist die Ausführung der zu testenden Software mit systematisch festgelegten Eingabedaten (Testfälle). Für jeden Testfall werden zu den Eingabedaten auch die erwarteten Ausgabedaten angegeben. Die vom Testlauf erzeugten Ausgabedaten werden mit den jeweils erwarteten Daten verglichen. Bei Abweichungen liegt ein Fehler vor.
Wesentliche Aufgabe der einzelnen Verfahren ist die Bestimmung geeigneter Testfälle für den Test der Software.
Ihre Aufgaben
- Motivieren Sie das Gebiet der statischen Codeanalyse.
- Einführung in die Qualitätssicherung durch Dynamische Software-Testverfahren.
- Stellen Sie die in der Literatur gängigen Verfahren vor.
- Ordnen Sie vor diesem Hintergrund QA-C, QA-C++ und Cantata++ ein.
- Einführung in die Software mit praktischen Beispielen.
- Beschreiben Sie den Funktionsumfang der Software anhand praktischer Beispiele.
Kür-Aufgabe
Machen Sie doch eine Umfrage unter Ihren Kommilitonen (Semester 1-7) welche Firmen welche Systeme einsetzen und warum. Das wäre aber schon das ++ hinter der 1.
Verwendete Tools
- QA-C
- QA-C++
- QA-Systems Cantata++
Mögliche Fragen
- Wozu braucht man eine statische Codeanalyse?
- Wie funktioniert eine statische Codeanalyse?
- Was bedeutet MISRA?
- Gibt es kein kostenloses Tool, was dasselbe kann?
Weiterführende Links
- Ch. Bommer, M. Spindler, V. Barr: Softwarewartung – Grundlagen, Management und Wartungstechniken. dpunkt.verlag, Heidelberg 2008, ISBN 3-89864-482-0.
- P. Liggesmeyer: Software-Qualität: Testen, Analysieren und Verifizieren von Software. 2 Auflage. Spektrum, Akad. Verl., Heidelberg 2009, ISBN 978-3827420565, S. 270.
- A. Spillner und T. Linz: Basiswissen Softwaretest. 4 Auflage. dpunkt.verlag, Heidelberg 2010, ISBN 978-3898646420, S. 98.
- Harry Sneed, Richard Seidl, Manfred Baumgartner: Software in Zahlen - Die Vermessung von Applikationen. 1. Auflage. Carl Hanser Verlag, 2010, ISBN 978-3-446-42175-2.
- http://www.qa-systems.de/produkte/qa-c.html
- Motor Industry Software Reliability Association (MISRA)
- QA-Systems Cantata
- Peter Liggesmeyer, Software-Qualität, Heidelberg: Spektrum-Verlag 2002
- Global Association for Software Quality
- Arbeitskreis Software-Qualität und Fortbildung
- International Software Quality Institute
- Software-Engineering und Software-Qualität in Open-Source Projekten (Creative Commons Lizenz)
- iqnite - Die Konferenz für Software-Qualitätsmanagement und -Testen
→ zurück zum Hauptartikel: Seminar SDE WS 14/15