Software Testing und Qualitätssicherung

  • View
    1.532

  • Download
    0

Embed Size (px)

Text of Software Testing und Qualitätssicherung

  • Software Technik

    Christian Baranowski

    HTWG Konstanz

    Software Testing

  • Requirement Analysis

    Testing

    System Design

    Coding

    Delivery

    Wasserfallmodell

  • WiederholungGrundlagenSoftware

    Qualittssicherung

  • Was ist Software Qualitt ?Funktionalitt

    Benutzbarkeit

    Zuverlssigkeit

    Portabilitt

    Wartbarkeit

    Effizienz

  • Was soll sichergestellt werden?

    Fehlerwirkung (Failure)Nach auen sichtbare Fehlverhalten

    Fehlerzustand (Bug)Zustand in der Anwendung der zu einer Fehlerwirkung fhren kann.

    Fehlhandlung (Error, Misstake)Irrtum bei der Software-Entwicklung.

    FehlermaskierungWirkung eines Fehlers (Fehlerzustand) ist nach auen nicht sichtbar, weil er durch einen weiteren Fehler verborgen (berlagert / maskiert) wird.

  • Wege zu guter Software

    analytische Qualittssicherung

    konstruktive Qualittssicherung

    Methoden die dazu dienen eine Anwendung strukturiert (analytisch) nach Fehlerwirkungen, Fehlerzustnden und Fehlermaskierung zu untersuchen. Die Qualitt wird gemessen. Anzahl der Fehlerwirkungen, Fehlerzustnden und Fehlermaskierung bestimmt.

    Methoden die dazu dienen die Wahrscheinlichkeit fr Fehlhandlungen zu minimieren. D.h. die Methoden fhren dazu dass es zu einer geringeren Fehlerwahrscheinlichkeit im Projekt kommt.

  • Software Tests

  • Fragestellung beim Testen

    ValidationIst es die richtige Software?

    VerifikationDie Software ist richtig!

    TestIst die Software richtig?

    DebuggingWarum ist die Software nicht richtig?

  • dynamische Testverfahren

    statische Testverfahren

    Testmethoden

  • Black-Box Testen

    Gray-Box Testen

    White-Box Testen

    Testmethoden

  • Testmethoden

    Client tier Presentation tier Business logic tier

    GU

    I

    Clie

    nt lo

    gic

    Mar

    shal

    ling

    De-

    Mar

    shal

    ling

    Pre

    sent

    atio

    n

    Ser

    ializ

    atio

    n

    De-

    Ser

    ializ

    atio

    n

    Bus

    ines

    s lo

    gic

    O/R

    map

    ping

    Database tier

    Modul / Komponententest

    Integrationstest

    Systemtest

    SUT (System Under Test)

  • Systemtest

    Komponententest

    Integrationstest

    Testmethoden

  • Kosten zur Fehlerbehebung

    Anforderungsanalyse Systementwurf Umsetzung Integrationstest Systemtest Betrieb

    Kosten ()

    Fehler frhzeitig in einem Projekt (Entwicklungsprozess) zu finden spart Geld !!!

  • Komponententests (Modultests) und Testabdeckung

  • Komponententest Charakter Was wird getestet ? (Testobjekt)

    -Klasse / Komponente (mehre Klassen mit definierter Schnittstelle)

    Wer testet? (Tester)

    -Entwickler (White-Box / Gray-Box) / Tester (Black-Box)

    Welche Qualittseigenschaft (ISO9126) wird geprft?

    -Funktionalitt, Robustheit, Effizienz

    Mit welchen Werkzeugen wird getestet?

    -xUnit Frameworks und Coverage Messung z.B. Cobertura, Emma

  • Test Design Pattern vier Phasen Test

    Setup SUT in einen definierten Zustand bringen.

    ExerciseSUT aufrufen mit Test Parametern (Daten).

    Verify Prfen ob das SUT im erwarteten Zustand ist.

    Teardown SUT und Testumgebung aufrumen.

  • JUnitpublic class QuicksortTest {

    ! Quicksort quicksortSUT;

    ! @Before! public void setUp() {! ! quicksortSUT = new Quicksort(new IntComperator());! }

    ! @Test! public void testSort() throws Exception {! ! quicksortSUT.sort(new Integer[] { 5, 8, 2, 4, 7 });! ! assertArrayEquals(new Integer[] { 2, 4, 5, 7, 8 }, values);! }

    ! @After! public void tearDown() {! ! quicksortSUT = null;! }

    }

    Phase 1: Setup

    Phase 2: Exercise

    Phase 3: Verify

    Phase 4: tearDown

  • White-Box Testen

    Test Coverage / Testabdeckung

  • Testabdeckung

    Als Testabdeckung bezeichnet man das Verhltnis an tatschlich getroffenen Aussagen eines Tests gegenber den theoretisch mglich treffbaren Aussagen bzw. der Menge der gewnschten treffbaren Aussagen. - Wikipedia

  • Testabdeckung (100 %)public boolean aAndbOrC(boolean A, boolean B, boolean C) {! return (A && B) || C;}

    Erwartet A B Cfalse false false falsetrue false false truefalse false true falsetrue false true truefalse true false falsetrue true false truetrue true true falsetrue true true true

  • vollstndige Testabdeckung

    Eine vollstndige Testabdeckung stellt eine Ausnahme dar, weil die Anzahl mglicher Testflle sehr schnell ungeheuer gro wird (durch kombinatorische Explosion). Ein vollstndiger Funktionstest fr eine einfache Funktion, die zwei 16-Bit-Werte als Argument erhlt, wrde schon 2^(16+16), also ca. 4 Milliarden Testflle bedeuten, um die Spezifikation vollstndig zu testen. - Wikipedia

  • Testabdeckung beim White-Box Testen

  • Statement Coverage (Anweisungsberdeckung)

    public static boolean aAndBOrC(boolean A, boolean B, boolean C) { if(A && B){ return true; } else if(C) { return true; } else { return false; } }

  • Statement Coverage (Anweisungsberdeckung)

    A && B true

    C true

    false

  • Statement Coverage (Anweisungsberdeckung)

    A && B true

    C true

    false

    Erwartet A B C

    true true true false

    1.

    1.

  • Statement Coverage (Anweisungsberdeckung)

    A && B true

    C true

    false

    Erwartet A B C

    true true true false

    true false false true

    1.

    2. 1.

    2.

  • Statement Coverage (Anweisungsberdeckung)100 %

    A && B true

    C true

    false

    Erwartet A B C

    true true true false

    true false false true

    false false false false

    1.

    2.3.

    1.

    2.

    3.

  • Statement Coverage (Anweisungsberdeckung)

    public static boolean aAndBOrC(boolean A, boolean B, boolean C) { if(A && B || C){ return true; } else { return false; } }

  • Statement Coverage (Anweisungsberdeckung)100%

    A && B || C true

    false

    Erwartet A B C

    true false false true

    false false false false

    1.

    2.

    1.

    2.

  • Statement Coverage (Anweisungsberdeckung)

    public static int sum(int values[], int offset){ int result = 0; for (int value : values) { if(offset > 0){ if(offset < value) result += offset; } result += value; } return result; }

  • Statement Coverage (Anweisungsberdeckung)100%

    result = 0

    for (value : values)

    offset > 0 offset < value

    result += value

    return result

    result += offset

    Erwartet values offset

    3 [2] 1

  • Statement Coverage (Anweisungsberdeckung)100 %

    result = 0

    for (value : values)

    offset > 0 offset < value

    result += value

    return result

    result += offset

    Erwartet values offset

    3 [2] 1

  • Branch Coverage 100 % (Zweigabdeckung)

    result = 0

    for (value : values)

    offset > 0 offset < value

    result += value

    return result

    result += offset Erwartet values offset

    3 [2] 1

    2 [2] 0

    2 [2] 2

  • 100% Pfadabdeckung

    100 % Pfadabdeckung wird in der Regel nicht erreicht (halting problem)

  • Testabdeckung automatisiert bestimmen

  • bung 1I

    Erstellen Sie einen Unit Test fr die Demo Quicksort Implementierung

    Messen Sie die Code Abdeckung in Eclipse

  • Black-Box Testen

  • quivalenzklassenbildung

    Ziel der quivalenzklassenbildung ist es, quivalenzklassen zu bilden und so eine hohe Fehlerentdeckungsrate mit einer mglichst geringen Anzahl von Testfllen zu erreichen. - Wikipedia

  • quivalenzklassenbildung Beispiel Artikel verkaufen

  • quivalenzklassenbildungParameter quivalenzklasse Reprsentant

    Basar Nummer gK1_01: [0,...,MAX_LONG] 100Basar Nummer

    uK1_02: [-MAX_LONG,..., 0[uK1_03: NaN

    -1abc

    Preis gK2_01: [0,...,MAX_LONG]gK2_02: X,50 | X = [0,..., MAX_LONG]gK2_03: X,5 | X = [0,..., MAX_LONG]gK2_04: X,00 | X = [0,..., MAX_LONG]

    100,500,511,00

    Preis

    uK2_05: [-MAX_LONG,...,0]uK2_06: X,Y | X = [-MAX_LONG,..., 0[ Y = [-MAX_LONG,..., MAX_LONG]uK2_07: X,Y | X = [0,..., MAX_LONG] Y = ]0,..., 5[uK2_08: X,Y | X = [0,..., MAX_LONG] Y = ]5,..., 50[uK2_09: X,Y | X = [0,..., MAX_LONG] Y = ]50,..., MAX_LONG[uK2_10: X,Y | X = [0,..., MAX_LONG] Y = NaNuK2_11: NaNuK2_12: X,Y | X = NaN Y = [0,..., MAX_LONG]

    -1-1,100

    100,2

    100,40

    100,510

    100,abc

    abc

    abc,50

    Beschreibung gK3_01: [NULL...TEXT] abc

  • quivalenzklassenbildungabgeleitete TestflleTestfall Basar Nummer Preis Beschreibung Summe (hinzugefgt)

    1 100 10 abc 10 Euro

    2 100 0,50 abc 0,50 Euro

    3 100 0,5 abc 0,50 Euro

    4 100 11,00 abc 11,00 Euro

    5 -1 10 abc 0,00 Euro

    6 abc 10 abc 0,00 Euro

    7 100 -1 abc 0,00 Euro

    8 100 -1,100 abc 0,00 Euro

    9 100 100,2 abc 0,00 Euro

    10 100 100,40 abc 0,00 Euro

    11 100 100,510 abc 0,00 Euro

    12 100 100,abc abc 0,00 Euro

    13 100 abc abc 0,00 Euro

    14 100 abc,50 abc 0,00 Euro

    Tipp: gute Tester nutzen Sonderzeichen z.B. &$% nicht abc!!!

  • Statische TestverfahrenCode Reviews

  • Walkthrough

    Autor stellt seinen Code Dokument vor.

    Autor ist der Moderator

    Vorteile:

    Wenig Vorbereitungsaufwand

    Prfung