22

Softwarekonstruktion (Fach) / Softwarekonstruktion Wichtig (Lektion)

Weitere wichtige Themen

Diese Lektion wurde von blumenkohl erstellt.

Lektion lernen

Diese Lektion ist leider nicht zum lernen freigegeben.

Anzeige
  • Was ist ein Entscheidungs-Entscheidungsweg? Wegstück, dass bei einem Entscheidungsknoten oder dem Anfangsknoten beginnt und alle folgenden Knoten und Kanten bis zum nächsten Entscheidungsknoten oder dem Endknoten (einschl.) enthält.
  • Was ist ein Segment? Weg von Anfangsknoten, Entscheidungsknoten oder Vereinigungsknoten (mehrere Inputs) zum Endknoten, Entscheidungsknoten oder Vereinigungsknoten. Alle anderen Knoten haben nur jeweils eine Eingangs- und eine Ausgangskante.
  • Anweisungsüberdeckung C0-Test (Kurz: Alle Anweisungen durchgehen) Eine Testdatenmenge T erfüllt die C0-Überdeckung für ProgrammP genau dann, wenn es für jede Anweisung A des Programms Pein Testdatum t aus T gibt, das die Anweisung A ausführt. Eine Anweisung A wird unter T ausgeführt/überdeckt, genau dannwenn der zur Anweisung A gehörende Knoten k in einem Weg vonWege(T) vorkommt. Als Testwirksamkeitsmaß TWM0 wird derAnweisungsüberdeckungsgrad definiert (Verhältnis der besuchtenKnoten zur Gesamtzahl von Knoten):TWM0 = (Zahl der unter T überdeckten Anweisungen)/(Zahl aller Anweisungen)
  • Zweigüberdeckung C1-Test (Kurz: Jede Kante einmal durchlaufen) Eine Testdatenmenge T erfüllt die C1-Überdeckung für Programm P, genau dann wenn es für jede Kante k im Kontrollflussgraphen von P einen Weg in Wege(T,P) gibt, zu dem k gehört Als Testwirksamkeitsmaß CZweig wird der Zweigüberdeckungsgrad definiert (Verhältnis der besuchten Zweige zur Gesamtzahl von Zweigen):CZweig = (Anzahl der besuchten Zweige)/(Gesamtanzahl der Zweige)
  • Entscheidungsüberdeckung (Kurz: An jedem Entscheidungsknoten einmal True und einmal False erreichen) Entscheidungsüberdeckung betrachtet in erster Linie die Entscheidungen; diese sind mindestens einmal zu beiden (allen) Möglichkeiten auszuwerten. Jeder Testfall wird also anhand einer Entscheidung ausgewählt.
  • Einfache Bedingungsüberdeckung C2-Test Eine Testdatenmenge T erfüllt die C2-Überdeckung genau dann, wennes für jede Verzweigung im Programm mit zwei Ausgängen und fürjeden Prädikatterm p des zur Verzweigung gehörenden BooleschenAusdrucks zu jedem Wahrheitswert von p ein Testdatum t aus T gibt,bei dessen Ausführung p diesen Wahrheitswert annimmt.
  • Zweig-/Bedingungsüberdeckung Eine Testdatenmenge erfüllt die Zweig-/Bedingungsüberdeckung genau dann, wenn sie die C2-Überdeckung (atomare Bedingungsüberdeckung) und die C1-Überdeckung (Zweigüberdeckung) erfüllt
  • Mehrfach Bedingungsüberdeckung C3-Überdeckung Eine Testdatenmenge erfüllt die Mehrfachbedingungsüberdeckung genau dann wenn für jede Verzweigung im Programm mit zwei Ausgängen und für den zur Verzweigung gehörenden Booleschen Ausdruck jede mögliche Kombination der Wahrheitswerte der atomaren Prädikatterme ausgeführt wird Enthält Zweigüberdeckung.
  • Minimale Mehrfachbedingungsüberdeckung Eine Testdatenmenge erfüllt die minimale Mehrfach-bedingungsüberdeckung genau dann wenn für jede Verzweigung im Programm mit zwei Ausgängen und für den zur Verzweigung gehörenden Booleschen Ausdruck folgende Kombinationen der Wahrheitswerte der atomaren Prädikatterme, die mit ein- und mehrstelligen logischen Operatoren verknüpft sind, ausgeführt werden:Jede mögliche Kombination von Wahrheitswerten, bei denen die Änderung des Wahrheitswertes eines Terms den Wahrheitswert der logischen Verknüpfung ändern kann.Die Anzahl der Testfälle ist im Normalfall geringer als bei derMehrfachbedingungsüberdeckung.
  • Grenze-Inneres-Überdeckung Dynamisches, kontrollflussbasiertesTestentwurfsverfahren (gi) fordert, dass jede Schleife in mindestenseinem Testfall:● gar nicht (nur bei abweisenden Schleifen, while, for nur wennAbbruchbedingung bei erstmaliger Auswertung wahr),● genau einmal und● mehr als einmal ausgeführt wird. Grenze-Inneres-Überdeckungsgrad = (Anzahl (gi)getestete Schleifen)/(Gesamtzahl Schleifen)
  • Anzeige
  • Pfadüberdeckung Dynamisches, kontrollflussbasiertes Testentwurfsverfahren, fordert,dass jeder Pfad im Kontrollflussgraphen mindestens einmal ausgeführtwird. Auch als C∞-Maß bezeichnet. Pfadüberdeckungsgrad = (Anzahl durchlaufene Pfade)/(Gesamtzahl Pfade)
  • Kriterium: Alle Definitionen (all-defs) Jede Definition mindestens einmal (ohne dazwischenliegendes erneutes def) in einem c-use oder p-use verwenden. Eine Testdatenmenge T erfüllt das Kriterium „alle Definitionen“    g.d.w. es● für jede Variable x und jede Definition von x mindestens einen Weg in Wege(T) gibt, auf dem die Definition eine Referenz von x erreicht.
  • Kriterium „alle DR-Interaktionen“ Jedes Paar def/ref (ohne dazwischenliegendes erneutes def) auf irgendeinem Weg ausführen. Eine Testdatenmenge T erfüllt das Kriterium „alle DR-Interaktionen“ g.d.w. es    ● für jede Variable x, jede Definition von x und jede Referenz von x, die davon erreicht wird, mindestens einen Weg in Wege(T) gibt, auf dem die Definition die Referenz von x erreicht.
  • Kriterium "Alle Referenzen" Alle ausgehenden Kanten eines EntscheidungsknotensberücksichtigenEine Testdatenmenge T erfüllt das Kriterium „alle Referenzen“ g.d.w. es● für jede Variable x, jede Definition von x in einem Knoten k, jede Referenz von x in einem Knoten l, die von der Definition in k erreicht wird, und für jeden Nachfolgerknoten m von l die Wegemenge Wege(T) mindestens ein Wegstück u*m enthält, wobei die Definition von x in k die Referenz von x in l über den Weg u erreicht.● Hierbei: u*m Knotenfolge mit u={k,..,l} gefolgt von Knoten m, d.h. u*m={k,..,l,m}
  • Weitere Datenflussbezogene Überdeckungkriterien - „Alle B-Referenzen“ (all-c-uses)- „Alle E-Referenzen“ (all-p-uses)- 3-DR-Interaktionen: (1, m, 4, r, 6):m wird in 1 definiert, in 4referenziert,r wird in 4 definiert mit m und in 6referenziertdamit hängt 6 von 1 ab! => Testen von Wegstück das Knoten 1, 4 und 6 enthält! - Kontextüberdeckung In 7 wird r definiert durch diereferenzierten Variablen m und n.Der „Definitionskontext“ dafür sinddie Knoten, in denen diese Werte vonm und n vorher definiert worden sind,also gibt es hier zwei Fälle:DK1= {(1,m),(1,n)}DK2={(5,m),(6,n)}=> teste die Wegstücke (1,2,7) und (5,6,7) Alle Entscheidungs-/einige Berechnungs-Referenzen− Schwächere Überdeckung des Datenflusses, trotzdemZweigüberdeckung und Testen „aller Definitionen“ Alle Berechnungs-/einige Entscheidungs-Referenzen− Keine Zweigüberdeckung, aber Testen „aller Definitionen“und „aller Referenzen“ in Berechnungsknoten Alle DR-Wege− Stärkere Überdeckung unter Kontrollflussaspekten durchAnnäherung an Pfadtesten, allerdings ohneSchleifeniterationen  
  • V-Modell 1) Anforderungsdefinition 2) Funktionaler Systementwurf 3) Technischer Systementwurf 4) Komponenten-Spezifikation 5) Programmierung 4) Komponententest 3) Integrationstest 2) Systemtest 1) Abnahmetest
  • CMMI Reifestufen Reifestufe 1: Keine Anforderungen Reifestufe 2: REQM, MA, PMC, PP, PPQA, SAM, CM mindestens auf 2. Reifestufe 3: Alles auf 3 außer: OPP, QPM, OID, CAR Reifestufe 4: Alles auf 3 außer: OID, CAR Reifestufe 5: Alles auf 3.
  • OCL Collection Ein Set:Jedes Element kommt nur einmal vorEinfaches Navigieren einer Assoziation liefert ein Set zurueck. Ein Bag:Gleiche Elemente dürfen mehrmals vorkommen Ein OrderedSet:Ein Satz von geordneten Elementen Eine Sequence:Ein Bag in dem die Elemente geordnet sind
  • OCL Iteratieren über Collection exists(iterators|body):boolean True wenn body für mindestens ein Element der Collection True ist. Erlaubt mehrere Iteratoren forAll(iterators|body):boolean True wenn body für alle Elemente der Collection True ist. Erlaubt mehere Iteratoren one(iterator|body):boolean True wenn genau ein Element in Collection existiert für das body True ist isUnique(iterator|body):boolean True wenn body für keine zwei Elemente das gleiche Resultat zurückliefert any(iterator|body):T Liefert irgendein Element, für das body True collect(iterator|body):Collection(T2) Wendet body auf alle Elemente der Collection an und gibt neue Collection zurück select(iterator|body):Collection(T) Bildet aus allen Elementen für die body True ist eine neue Collection reject(iterator|body):Collection(T) Bildet aus allen Elementen für die body False ist eine neue Collection
  • OCL Operationen auf Sequence = Intuitiv union Vereinigung von zwei Sequences flatten Wie concat append(object:T) Hängt object hinten an Sequence prepend(object:T) Fügt object vor die Sequence insertAt(index:Integer, object:T) Fügt object an Stelle index in Sequence subSequence(lower:Integer,upper:Integer) Subsequence von lower nach upper at(i:Integer) i-tes Element der Sequence indexOf(object:T) Index von object in Sequence first() Erstes Element der Sequence last() Letztes Element der Sequence including(object:T) Sequence plus object als letztes Element excluding(object:T) Sequence ohne alle vorkommen von object asBag asSet asOrderedSet
  • OCL Operationen in OclAny = Intuitiv <> Ungleich oclIsTypeOf(t:OclType) True wenn self vom Typ t oclIsKindOf(t:OclType) True wenn self Typ oder Untertyp von t oclIsInState(s:OclState) True wenn self im Zustand s oclIsUndefined() True wenn self gleich null oder invalid ist oclIsInvalid() True wenn self gleich invalid allInstances():Set(T) Gibt alle Instanzen als Set wieder
  • Zyklomatische Komplexität cc(G) = e - v + p + 1