7

Softwarekonstruktion (Fach) / Softwarekonstruktion 3 (Lektion)

Übungsblatt 3

Diese Lektion wurde von blumenkohl erstellt.

Lektion lernen

Diese Lektion ist leider nicht zum lernen freigegeben.

  • Worin unterscheiden sich die geforderten Fertigkeiten beim Programmieren und beim Testen? Beim Programmieren sind eher konstruktive Fähigkeiten und Abstraktion gefragt. Beim Testen hingegen geht es darum mit “kreativer Destruktion” möglichst viele Fehler zu entdecken.
  • Warum testen dennoch Programmierer ihre eigenen Programme? Beschreiben Sie die Vor- und Nachteile. Entwicklertests:Vorteil : Kein EinarbeitungsaufwandNachteil : InteressenkonfliktNachteil : andere Fertigkeiten gefordertNachteil : Blindheit gegenüeber eigenen Fehlern, insbesondere in Bezug auf konzeptionelle Fehler Unabhängige Tests:Vorteil : UnvoreingenommenheitVorteil : Test-Know-HowNachteil : Einarbeitungsaufwand
  • Erläutern Sie kurz das Ziel von Komponenten-, Integrations-, System- und Abnahmetest. Wie hängen die Tests zusammen? Welchen wesentlichen Unterschied zeichnet den Abnahmetest aus? Komponententest prüft ob jede einzelne Softwarekomponente für sich die Vorgaben ihrer Spezifikation erfüllt.Integrationstest prüft ob Gruppen von Komponenten wie im technischen Systementwurf vorgesehen zusammen funktionieren. Systemtest prüft ob das System als Ganzes die spezifizierten Anforderungen erfüllt. Dabei soll die Testumgebung der späteren Produktivumgebung möglichst nah kommen.Abnahmetest prüft ob das System aus Kundensicht die vertraglich vereinbarten Leistungsmerkmale aufweist. Die Tests bauen jeweils aufeinander auf und finden sich in den einzelnen Stadien des V-Modells wieder.Der Abnahmetest ist der einzige der Tests der nicht vom Hersteller intern durchgeführt wird. Dabei steht weniger das Finden von evtl. noch vorhandenen Fehlern im Vordergrund als vielmehr das Schaffen von Vertrauen des Kunden in das entwickelte Produkt.
  • Was ist der Unterschied zwischen einem Mangel und einem Fehler? In welchem Zusammenhang stehen die beiden zu Validierung und Verifizierung? Ein Fehler ist die Nichterfüllung einer Anforderung z.B. der Spezifikation, das heisst ein Abweichen des IST-Verhaltens vom SOLL-Verhalten. Ein Mangel liegt vor, wenn eine gestellte Anforderung oder eine berechtigte Erwartung in Bezug auf den beabsichtigten Gebrauch der Software nicht erfüllt wird. Verifizierung prüft ob das System richtig realisiert wurde, d.h. auf Abwesenheit von Fehlern. Validierung prüft ob das richtige System realisiert wurde, d.h. die Abwesenheit von Mängeln.
  • Was ist der Unterschied zwischen Testen und Debugging? Testen findet nur Fehlerzustände die zum Tragen kommen und durch Eingaben von “Außen” erzeugt werden können. Debuggen dient dem Rekonstruieren von Fehlerzuständen durch schrittweises Durchlaufen des Codes zur Laufzeit. Dabei können auch Fehlerzustände entdeckt werden die bisher nicht zum Tragen kamen beim Testen. Insbesondere kann aber Debugging dafür verwendet werden die Ursache für beim Testen gefundene Fehler zu erforschen.
  • Erläutern Sie den Unterschied zwischen statischem und dynamischem Test. Statische Test führen den Code nicht aus, sondern uberprüfen ihn allein anhand statischen Eigenschaften und Spezifikation. Hier muss der Code im ganzen vorliegen. Dynamische Tests führen den Code aus und testen ihn. Sei es durch spezifische Methodenaufrufe oder durch Ansprechen von Interfaces (GUI, API, . . . ). Der Code muss dazu nicht zwangsweise komplett vorliegen bzw. der Testende uberhaupt Wissen uber den Aufbau des Codes haben.
  • In welchem Zusammenhang stehen Reviews und statische Analyse? Das Review ist eine statische Analyse solang es nur anhand Dokumentation und dem Code selbst durchgeführt wird. Führen die Gutachter auch Code aus so wird statische und dynamisches Analyse im Review zusammengefasst. Automatisierte statische Analysen solltendeswegen auch dem Review vorgeschaltet sein um den Reviewprozess zu beschleunigen.
Anzeige