Softwarequalitätsmanagement: Unterschied zwischen den Versionen

Aus CCWiki
Zur Navigation springen Zur Suche springen
Zeile 27: Zeile 27:
}
}
}}
}}
Das Programm verfügt über eine {{AL|Methoden|Methode}}, welche '''8''' verschieden verzweigungen hat.
Das Programm verfügt über eine {{AL|Methoden|Methode}}, welche '''8''' verschieden verzweigungen hat.<br>
Ein Beispiel für eine '''Testabdeckung von 50%:'''
'''Testabdeckung von 50%:'''
{{JML|code=
{{JML|code=
@Test
@Test
Zeile 34: Zeile 34:
   DateUtils utils = new DateUtils();
   DateUtils utils = new DateUtils();
   assertEquals("Montag", utils.getDayOfWeekName(1));
   assertEquals("Montag", utils.getDayOfWeekName(1));
   assertEquals("Dienstag", utils.getDayOfWeekName(1));
   assertEquals("Dienstag", utils.getDayOfWeekName(2));
   assertEquals("Mittwoch", utils.getDayOfWeekName(1));
   assertEquals("Mittwoch", utils.getDayOfWeekName(3));
   assertEquals("Donnerstag", utils.getDayOfWeekName(1));
   assertEquals("Donnerstag", utils.getDayOfWeekName(4));
}
}
}}
}}
Ein Beispiel für eine '''Testabdeckung von 100%:'''
'''Testabdeckung von 100%:'''
{{JML|code=
{{JML|code=
@Test
@Test
Zeile 52: Zeile 52:
   assertEquals("Sonntag", utils.getDayOfWeekName(7));
   assertEquals("Sonntag", utils.getDayOfWeekName(7));
   assertEquals("Unbekannt", utils.getDayOfWeekName(8));
   assertEquals("Unbekannt", utils.getDayOfWeekName(8));
}
}}
'''Testabdeckung von 0%:'''
{{JML|code=
@Test
public void testDayOfWeekName() {
  DateUtils utils = new DateUtils();
}
}
}}
}}

Version vom 2. Februar 2021, 16:55 Uhr

Testing

Softwaretesting beschreibt den Prozess des verifizierens einer Anwendung, oder Teile davon, gegenüber einer gewissen Spezifikation, oder gegen ein erwartetes Verhalten. Durch Testing kann ein hohes Maß an Softwarequalität gewährleistet werden, natürlich nur wenn Tests gut spezifiert und auch ausgeführt werden. Gerade im Bereich des automatisierten Testens kann durch eine hohe Testabdeckung des Quellcodes, regression, verhindert werden.

Eine hohe Testabdeckung, beschreibt, wieviel Code durch Testfälle auch wirklich erreicht wird. Werden alle Verzweigungen in Methoden erreicht? Werden überhaubt alle Methoden getestet?
Unter Regression wird eine Verschlechterung des Quellcodes verstanden. Im Laufe des Entwicklungsprozesses, funktioniert Code, der zuvor funktionert hat, nicht mehr.

Anhand von folgendem Beispiel soll die Testabdeckung veranschaulicht werden:

public class DateUtils {
  public String getDayOfWeekName(int month) {
    if(month == 1) {
      return "Montag";
    } else if(month == 2) {
      return "Dienstag";
    } else if(month == 3) {
      return "Mittwoch";
    } else if(month == 4) {
      return "Donnerstag";
    } else if(month == 5) {
      return "Freitag";
    } else if(month == 6) {
      return "Samstag";
    } else if(month == 7) {
      return "Sonntag";
    }
    return "Unbekannt";
  }
}

Das Programm verfügt über eine Methode, welche 8 verschieden verzweigungen hat.
Testabdeckung von 50%:

@Test
public void testDayOfWeekName() {
  DateUtils utils = new DateUtils();
  assertEquals("Montag", utils.getDayOfWeekName(1));
  assertEquals("Dienstag", utils.getDayOfWeekName(2));
  assertEquals("Mittwoch", utils.getDayOfWeekName(3));
  assertEquals("Donnerstag", utils.getDayOfWeekName(4));
}

Testabdeckung von 100%:

@Test
public void testDayOfWeekName() {
  DateUtils utils = new DateUtils();
  assertEquals("Montag", utils.getDayOfWeekName(1));
  assertEquals("Dienstag", utils.getDayOfWeekName(2));
  assertEquals("Mittwoch", utils.getDayOfWeekName(3));
  assertEquals("Donnerstag", utils.getDayOfWeekName(4));
  assertEquals("Freitag", utils.getDayOfWeekName(5));
  assertEquals("Samstag", utils.getDayOfWeekName(6));
  assertEquals("Sonntag", utils.getDayOfWeekName(7));
  assertEquals("Unbekannt", utils.getDayOfWeekName(8));
}

Testabdeckung von 0%:

@Test
public void testDayOfWeekName() {
  DateUtils utils = new DateUtils();
}

Testarten

Testing kann in verschiedene Arten unterteilt werden, die im folgenden Angeführt werden.

Continous Integration

Continous Delivery

Versionskontrolle

Pull/Merge Requests