Avatar billede data2k.dk Nybegynder
06. december 2004 - 12:09 Der er 19 kommentarer og
1 løsning

test cases

Lad dig ikke skræmme af teksten herunder.... det meget lidt der skal bruges af det... mit spørgsmål er bare til hvad der skal svares på.. eller hvordan det skal besvares rettere!


I denne opgave skal der opstilles et sæt testcases for unittest af en klasse: BrugerKonto (se nedenfor).

Generel beskrivelse af hensigten med klassen (som ikke er eller bliver implementeret i denne opgave):
Skal bruges som grundlag for registrering af brugernumre og tilhørende passwords på et flerbrugersystem. Når en ny bruger oprettes, vil der blive skabt et nyt objekt af klassen. Til dette kræves et brugerId og et password. Man kan efterfølgende ændre passwordet.

Specifikationen af BrugerKonto:

//attributter
brugerId: int
password : String

//konstruktør
public BrugerKonto(int bi, String p)

pre:     0 < bi  && bi <10000 &&  6 <=  antal tegn i p
post:     brugerId = bi && password = p
post(!pre):    brugerId=-1 && password = ”ugyldig”

//metode
public boolean skiftPassword(String p, String newP1, String newP2)

pre:    p == password  &&  6 <=  antal tegn i newP1  && newP1 ==newP2
post:    password = newP1  && retur = true
post(!pre):     password = password.old && retur = false


public int getBrugerId()
   
public String getPassword()

a)
Konstruér et sæt testcases, der i et relevant omfang tester de de 2 første metoder. Benyt som udgangspunkt principperne for opstilling af testcases ud fra pre- og postconditioner og principperne om test på grænser af gyldige områder for input  (ækvivalensklasser!).

De 2 get-metoder antages så simple, at test af dem er overflødig.

Besvarelse:     Skematisk opsat dokumentation af testcases (viser : Tilstand før, Event, Tilstand efter)
    Dine egne korte (3-6 linier) kommentarer til valgene/evt. fravalg af testcases.






en enkelt testcase eksempel vil være fint! så klare jeg resten.
Avatar billede soreno Praktikant
10. december 2004 - 20:36 #1
Er det stadig relevant at hjælpe dig ?

(Det lyder som en skoleopgave og da det er ~4 dage siden du postede kunne du jo have løst den i mellemtiden.)
Avatar billede data2k.dk Nybegynder
10. december 2004 - 20:55 #2
jeg har faktisk fundet ud af denne... men skulle du have styr på et andet spørgsmål?
teste klasser ved hjælp af junit? hvis du kender det. Man kan afprøve metoderne i en arraylist fx og se om de gør som man forventer.. var bare  ikke tilstede da det blev gennemgået:/
Avatar billede soreno Praktikant
10. december 2004 - 20:59 #3
Jeg kender godt junit.
Avatar billede data2k.dk Nybegynder
10. december 2004 - 21:05 #4
hvordan bruger man det? hvis nu jeg har det indstalleret? lad og sige vi vil teste ArrayList's Add() metode og se om den fungere som den skal.. hvad skal man så sætte op eller gøre? går ud fra man bliver nød til at skrive noget kode af en eller anden art?
Avatar billede soreno Praktikant
10. december 2004 - 21:14 #5
Jeg tror du skal antage at som udgangspunkt er API kode korrekt.

Men hvis du vil test så kan du jo f.eks. teste med noget lign.
ArrayList list = new ArrayList();
assertEquals(0, list.size());

String foo = "foo";
list.add(foo);
assertEquals(1, list.size());
assertEquals(foo, list.get(0));

Osv.

Jeg skriver lige et eksempel..
Avatar billede simonvalter Praktikant
10. december 2004 - 21:21 #6
at teste på en collection er ikke anderledes end så meget andet når du bare kender de forskellige test metoder som assertTrue/assertEquals osv. læs på dem i javadoc og prøv dem.

tag også og kig på faq .. der er svar på mange ting som f.eks at teste på om en exception bliver smidt.
http://junit.sourceforge.net/doc/faq/faq.htm
Avatar billede data2k.dk Nybegynder
10. december 2004 - 21:25 #7
simonvalter:

Det mere jeg slet ikke har nogen ide om hvordan man tester men håber soreno's eksempel vil gøre det klart for mig.

eller kan godt teste... men ikke med junit som skolen gerne vil have vi anvender
Avatar billede soreno Praktikant
10. december 2004 - 21:26 #8
import java.util.ArrayList;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

public class TestArrayList extends TestCase
{
    private ArrayList list;
    public TestArrayList(String name)
    {
    super(name);
    }
   
    public static Test suite()
    {
    return new TestSuite(TestArrayList.class);
    }

    protected void setUp()
    {
    list = new ArrayList();
    }

    public void testNewObject()
    {
    assertEquals(0, list.size());
    }

    public void testInsert()
    {
    String foo = "foo";
    list.add(foo);
    assertEquals(1, list.size());
    assertEquals(foo, (String)list.get(0));
    }

}

Compile (på Windows):
javac -classpath junit38.jar;. TestArrayList.java

Test:
java -classpath junit38.jar;. junit.textui.TestRunner TestArrayList

Forudsat at du har junit38.jar eller lign. version i samme dir som TestArrayList.java
Avatar billede soreno Praktikant
10. december 2004 - 21:28 #9
alle metoder som starter med "test" er de testcases som junit tester.

Derfor er output af ovenstående:
$ java -classpath junit38.jar:. junit.textui.TestRunner TestArrayList
..
Time: 0

OK (2 tests)

testNewObject og testInsert er de metoder som testes.

setUp bliver kaldt før hver kalde til testMetoderne (dermed er listen i ovenstående kode, nyinitialiseret ved begge tests).
Avatar billede simonvalter Praktikant
10. december 2004 - 21:29 #10
ok hvis du slet ikke har brugt junit før burde du læse denne start guide.. efter den burde du have en god ide om hvad det drejer sig om .. mere end hvad et par eksempler kan give.

http://junit.sourceforge.net/doc/testinfected/testing.htm
Avatar billede kalp Novice
10. december 2004 - 21:38 #11
jeg får kigget på det snarest og vender tilbage igen! tak for svarene i hvertfald
Avatar billede data2k.dk Nybegynder
10. december 2004 - 21:42 #12
simonvalter og soreno:

I må gerne lægge svar begge...!

og kalp.. kan du ikke holde dig fra mine spørgsmål? synes altid du skriver mærkelige kommentare hos mig!
Avatar billede kalp Novice
10. december 2004 - 21:46 #13
Du har aldrig sagt jeg skulle holde mig.... før nu! Skal jeg gøre med glæde.. uinteressante spørgsmål du stiller alligevel!
Avatar billede soreno Praktikant
10. december 2004 - 21:47 #14
Et svar.
Avatar billede simonvalter Praktikant
10. december 2004 - 21:48 #15
springer point over det var soreno der lavede arbejdet ;)
Avatar billede data2k.dk Nybegynder
10. december 2004 - 21:50 #16
Det var helt okay: ) Takker dog for et godt link!
Avatar billede eagleeye Praktikant
11. december 2004 - 23:05 #17
kalp og data2k.dk det er kun tilladt at havde en bruger profil på eksperten.

Så klap og data2k.dk i bedes komme med en meget god forklaring på hvordan i kender hinanden og hvorfor klap udgiver sig for at være data2k.dk i kommentaren 10/12-2004 21:38:13 ?

eagleeye / CoAdmin
Avatar billede data2k.dk Nybegynder
12. december 2004 - 01:24 #18
Jeg er hverken http://www.eksperten.dk/bruger.phtml?navn=kalp eller http://www.eksperten.dk/bruger.phtml?navn=kalb og synes det er ret irriterende at  det er anden gang jeg bliver beskyldt for at være en anden... første gang som kalb.. anden gang som kalp..
Avatar billede eagleeye Praktikant
12. december 2004 - 10:50 #19
data2k.dk det skulle kun være kalp. Her udgiver kalp sig for at være dig derfor må der stilles tvivl om det er en eller to brugeres. Samt ifølge vores coadmin system har de to brugere være logget ind fra samme PC. Så hvordan kender du kalp?

eagleeye / CoAdmin
Avatar billede data2k.dk Nybegynder
12. december 2004 - 23:10 #20
jeg kender kalp fra mit uddannelsessted.
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