Software-Qualität 2 3 1 in mach2(int x,int y)

Werbung
Prof. Dr. Stephan Kleuker
Hochschule Osnabrück
Fakultät Ing.-Wissenschaften und Informatik
- Software-Entwicklung -
Software-Qualität
Sommersemester 2011
7. Aufgabenblatt
Aufgabe 8 (1 Punkt)
Gegeben sei die folgende Methode. Informieren Sie sich über die
Überdeckungsvariante MC/DC (Multiple Condition/ecision Coverage) und
erklären Sie sie anhand von Überdeckungen der Methode.
public boolean und(boolean a, boolean b, boolean c){
if (a & (b | c)) /* keine Kurzschlussauswertung ! */
return true;
return false;
}
Aufgabe 9 (3 Punkte)
Markieren sie den Graphen auf der rechten Seite mit def(.), c-use(.), p-use(.).
Ergänzen sie die Markierungen für dcu(.,.) und dpu(.,.). Geben sie dann eine
möglichst kleine Menge von Testfällen an, die zusammen das
a) all defs-Kriterium
b) all p-uses-Kriterium
c) all c-uses-Kriterium
d) all uses-Kriterium
erfüllen. Es reicht die Angabe von Knotenfolgen, z. B. (in, 1, 2, 3, 4, 5, 6).
in mach2(int x,int y){
1
int erg=0;
2
if (x<0)
3 erg=-x;
4
if (y<0)
5 erg-=y;
6 return erg+1;
Aufgabe 10 (4 Punkte)
Gegeben sei folgende Klasse Gegner (auch auf der Web-Seite), deren Methode knoten getestet
werden soll. Es liegen keine weiteren Implementierungen anderer Klassen vor, so dass Sie gezwungen
sind, Mocks zu schreiben.
public class Gegner {
private String typ;
private boolean hatFK;
private int feuerweite;
public Gegner(String typ, boolean hatFK, int feuerweite) {
this.typ = typ;
this.hatFK = hatFK;
this.feuerweite = feuerweite;
}
public int knoten(Alarm alert, Eigenschiff e, int abstand){
int ergebnis=42;
if (alert==Alarm.ROT & abstand<feuerweite)
ergebnis=e.getMaxKnoten();
if(alert==Alarm.ORANGE & e.wichtigerAuftrag())
ergebnis= e.sicherheit(e.hatAbwehr(hatFK),abstand);
return ergebnis;
}
}
Geben Sie möglichst einfache, aber dennoch sinnvoll nutzbare Mock-Klassen an, so dass Sie die
folgenden Aufgaben lösen können (Methodenergebnise können ignoriert werden). Prüfen Sie alle
Ergebnisse mit CodeCover.
i. Geben Sie eine Menge von Testfällen zur C0-Überdeckung von knoten an.
ii. Geben Sie eine Menge von Testfällen zur C1-Überdeckung von knoten an, die keine C2Überdeckung ist. Begründen Sie, warum keine C2-Überdeckung vorliegt.
iii. Geben Sie eine Menge von Testfällen zur C2-Überdeckung von knoten an, die keine C1Überdeckung ist. Begründen Sie, warum keine C1-Überdeckung vorliegt.
iv. Geben Sie eine Menge von Testfällen zur „Strict Condition“-Coverage nach der Defintion
von CodeCover von knoten an.
Seite 1 von 1
Herunterladen