Avatar billede ole8 Nybegynder
24. september 2007 - 21:42 Der er 15 kommentarer

Hvad er en TestDriver?

Hvad er en TestDriver der tester mine klasser?
Avatar billede arne_v Ekspert
24. september 2007 - 21:52 #1
Det kunne vaere et simpelt console program som tester din klasse.
Avatar billede ole8 Nybegynder
24. september 2007 - 22:01 #2
hvordan ser det ud i bluej?
Avatar billede enya Nybegynder
24. september 2007 - 22:06 #3
>ole8: Hvad med at afslutte de åbne spørgsmål vedr. samme emne, inden du opretter nye..?

http://www.eksperten.dk/list.phtml?spm_creator=ole8&status_1=on&status_2=on&status_3=on&status_4=on

NB! Bare et godt råd, hvis du fremover gerne vil have, at nogen på E. hjælper dig :)
Avatar billede arne_v Ekspert
24. september 2007 - 22:36 #4
Ingen anelse om BlueJ.
Avatar billede jakoba Nybegynder
25. september 2007 - 10:34 #5
En testdriver er et lille program man laver for at kunne teste et andet program.

Eksempel:
    Du har programmetret et program der skal styre affyringen af atommissiler og ønsker at teste det. Den nemmeste måde at gøre det ville være at forbinde programmet med raketbasen, men det ville jo så resultere i at der blev affyret et missil og det har du ikke fået lov til. Så istedet laver du en testdriver der kan give de samme reaktioner som raketbasen ville give, men uden at starte WW3. Testdriveren logger de kommandoer den får så vi kan se om dit program gjorde som det skulle.

mvh JakobA
Avatar billede nielle Nybegynder
25. september 2007 - 18:07 #6
Ikke helt korrekt, selv om man også vil se ordet "driver" brugt i dette tilfælde: En driver er et lille program man laver for at teste en klasse.

Normalt vil et program være sammensat af mange klasser (altså af objekter af disse). Man ønsker selvfølgelig at teste programmet som et samlet hele – som en færdig applikation, men ved en blot nogenlunde stor applikation (>= 2 klasser) er dette bare ikke nok; man har også brug for at kunne teste hver klasse isoleret hver for sig selv.

Meget ofte skyldes fejl nemlig at en eller flere klasser populært sagt har misforstået, hvordan de skal "tale" med hinanden – fejlen ligger i integrationen mellem de to klasser.

Det er her at driveren kommer ind. Driveren kalder klassen, som skal testes, med forskellige input, og så sammenligner den det resultererende output med det der forventes – med facitlisten. En driver består altså stort set blot af et antal kald af klassen-under-test (KUT). Disse kald fyre dels:

1) lovlige værdier af imod KUT for at se om den giver det rigtige output, dels
2) dels ulovlige værdier af imod KUT for at se om den håndtere fejlsituationer korrekt, dels
3) grænseværdier for at se om KUT håndtere dem korrekt.

Hvis det lovlige input til en given metode er 0-100 så er både 0 og 100 grænseværdier som bør afprøves. Desuden bør man afprøve med f.eks. -1 og 101 for at se om metoden afviser disse. Og man bør afprøve med f.eks. 50 for at verificere om KUT faktisk gør det den forventes at gøre.

driver
| kalder
v
KUT

Der findes et andet beslægtet begreb som kaldes en "stub". Vores KUT vil formentlig forsøge at kalde andre klasser. For at eliminere at en eventuel fejl skyldes en fejle i en af disse andre klasser sætter man en erstatning ind for disse. Dette er en stub:

driver
| kalder
v
KUT
| kalder
v
stub 1, 2, 3 ...
Avatar billede ole8 Nybegynder
25. september 2007 - 18:27 #7
Hvordan ville strukuren af denne testdriver se ud?
Avatar billede nielle Nybegynder
25. september 2007 - 18:48 #8
Som regel ville man lave den som en klasse. Lad os tage udgangspunkt i KUT'en beskrevet ovenfor:

public class KUT {
    public int gangeTo(int input) {
        if (input < 0 || 100 < input) {
            throw new IllegalArgumentException(
                    "Input skal ligge mellem 0 og 100 inklusiv.");
        }

        return input * 2;
    }
}

Så kunne (noget af) driver-klassen se nogenlunde sådan her ud:

public class DriverClassKUT {
    public static void main(String[] args) {
        Test1();
        Test2();
        Test3();
    }

    // Test af lovlig værdi.
    private static void Test1() {
        KUT kut = new KUT();
        int output = kut.gangeTo(50);
        if (output == 100) {
            System.out.println("Test1 - ok");
        } else {
            System.out.println("Test1 - ikke ok");
        }
    }

    // Test af nedre ulovlig værdi.
    private static void Test2() {
        KUT kut = new KUT();

        try {
            int output = kut.gangeTo( -1);
            System.out.println("Test2 - ikke ok");
        } catch (IllegalArgumentException ex) {
            System.out.println("Test2 - ok");
        }
    }

    // Test af nedre grænseværdi.
    private static void Test3() {
        KUT kut = new KUT();
        int output = kut.gangeTo(0);
        if (output == 0) {
            System.out.println("Test3 - ok");
        } else {
            System.out.println("Test3 - ikke ok");
        }
    }
}
Avatar billede arne_v Ekspert
26. september 2007 - 02:26 #9
Hvis man er så systematisk, så kan man vist lige så godt skifte til JUnit.
Avatar billede nielle Nybegynder
26. september 2007 - 06:45 #10
Enig ... men det er jo bare farven, som har en anden lyd. ;^)
Avatar billede nielle Nybegynder
03. oktober 2007 - 17:51 #11
Hvad med noget respons?
Avatar billede enya Nybegynder
16. december 2007 - 16:01 #12
Lukketid...???
Avatar billede enya Nybegynder
05. januar 2008 - 17:43 #13
Lukketid...!!!
Avatar billede nielle Nybegynder
05. januar 2008 - 17:51 #14
Svar
Avatar billede enya Nybegynder
29. januar 2008 - 00:24 #15
Lukketid...!!!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester