
Trucker Terminal System
- et adgangs kontrol system

Modultest
Udarbejdet af: Gruppe 7 (I2)
Medlemmer: Alex Hede 01065
Jeppe
Hasager 01048
Jesper
Johansen 02877
Søren
S Munk 02847
Vejleder: Michael E. Kristensen
Indholdsfortegnelse
Alle funktioner er testet ved hjælp af
stepfunktionerne F10 og F11 i Visual Studio. Ved at anvende denne metode, kan
vi for hver enkelt funktion følge med i, hvilke variable der bliver ændrede, og
hvad deres nye værdi bliver. Vi kan også se hvilke funktioner der eventuelt
bliver kaldt, og hvad disse funktioner gør.
Mange af funktionerne er afhængige af, at
nogle bestemte variable har en bestemt værdi. Der er blevet testet i en bestemt
rækkefølge således at funktioner der sætter disse variable er gennemtestet
først. Derfor kan vi godt teste de funktioner der anvender disse variable
bagefter.
void setType(int rammetype)
Testparametre: -3, 0 = Iramme, 1 = Sramme, 3
Forventet
resultat: 0 skal sætte rammetype
til I-ramme.
1 skal sætte
rammetype til S-ramme.
Alt andet skal
sætte rammetypen til Unknown = -1.
Resultat: -3 og 3 satte rammetypen
til -1.
0 satte rammetypen
til I-ramme.
1 satte rammetypen
til S-ramme.
Funktionen er
korrekt.
bool setInfo(char *data, int infoLength)
Testparametre: setType(Sramme), setType(Iramme),
*data
= Tekststreng på 4 bogstaver
infoLength
= -2,0,4,8
Forventet
resultat: rammetypen skal være en
I-ramme, hvis det ikke er tilfældet ændrer funktionen ikke noget.
infoLength skal være
>= 0, ellers bliver Info ikke ændret.
Hvis infoLength er
>= 0, kopieres infoLength karakterer ind i pakken fra data[], og sætte
adressen til 1
Hvis Info er sat i
forvejen slettes det gamle info og det nye kopieres ind i pakken.
Resultat: S-ramme:
Der ændres ikke
noget
I-ramme:
-2:
Info kunne ikke sættes.
0:
Det blev kopieret 0 karakterer, og sætte adressen til 1
4:
Det gamle info (0 karakterer) blev slettet og 4 karakterer blev kopieret, og
sætte adressen til 1
8: De
4 karakterer og 4 tilfældige efterfølgende karakterer blev kopieret, og sætte
adressen til 1
Funktionen
er korrekt.
char getCHK()
Testparametre: Pakke = [1]1"D01234
Forventet
resultat: Funktionen skal
returnere den udregnede xor sum for pakken fra DLE til ETX tegnet som er
udregnet vha. lommeregner til 126 = ~
Resultat: Funktionen returnerede
126 hvilket er korrekt, dette kan jo være en tilfældighed, men under videre
testning med terminalen gav det ingen problemer.
Funktionen
er korrekt.
void setId(char id)
Fremgangsmåde: Funktionen er afhængig af at
rammetype = I-ramme, og at der er oprettet en pakke vha. setInfo().
Testparametre: id = D. Derudover:
I-ramme og pakke
oprettet,
I-ramme og pakke
ikke-oprettet,
S-ramme og pakke
oprettet.
Forventet
resultat: I-ramme og pakke oprettet:
id bliver sat til D.
I-ramme og
pakke ikke-oprettet: id
bliver ikke sat.
S-ramme og pakke
oprettet: id bliver
ikke sat.
Resultat: id blev kun sat når der
blev testet med I-ramme og der var oprettet en pakke.
Funktionen er
korrekt.
void send()
Testparametre: setType(Iramme),
setInfo("0123456789",10), setId(D)
Forventet resultat: Den modtagende PC skal vise 0123456789 omgivet af headeren.
Resultat: [1]1"D0123456789
V, hvilket er korrekt.
Funktionen
er korrekt.
bool receive()
Testparametre: [1]1"DD201Indls kort
È og [1]1"DD201Indls kort
f
[1]: DLE
STX
1:
ADR
:
KON
:
LEN
D:
ID
D201Indls
kort: INFO
: ETX
È:
korrekt CHK
f: forkert CHK
Forventet resultat: Først skal den modtage korrekt, dernæst skal der være CHK fejl.
Resultat: Den
første blev modtaget korrekt og i den næste var der CHK fejl.
Funktionen
er korrekt.
char* getInfo(int *length)
Testparametre: setType(I-ramme), setInfo("INFO",4),
setInfo("",0)
Forventet resultat: info = INFO, length = 4 og
Info
= , length = 0
Resultat: funktionen
returnerede korrekt info, og length blev sat til hhv. 4 og 0.
Funktionen
er korrekt.
bool setLEN(int length)
Testparametre: setType(Iramme), setType(Sramme),
length = -5, 0, 8
Forventet
resultat: rammetypen skal være en
I-ramme for at man kan ændre længden.
Længden skal være
mindst 8 i en I-ramme, så det er kun ved 8 det skal kunne lade sig gøre at
sætte længden.
Resultat: S-ramme:
Der ændres ikke
noget, LEN bliver ikke sat.
I-ramme:
-5 og 0: Da de er
mindre end 8 stoppes funktionen med det samme.
8: Længden
bliver sat til 8.
Funktionen
er korrekt.
int getInfoLength()
Testparametre: setType(Sramme), setType(Iramme),
setInfo("INFO",4)
Forventet resultat: Funktionen returnere 4 ved I-rammen og unknown = -1 ved
S-ramme.
Resultat: InfoLength
hhv. = 4 og 0.
Funktionen
er korrekt.
char getId()
Testparametre: setType(Sramme), setType(Iramme), setInfo("INFO",4),
setId('D')
Forventet
resultat: Funktionen skal
returnere det der står i ID feltet, hvis rammetypen er sat til I-ramme ellers
returneres der unknown = -1.
Resultat: Funktionen
returnerede D ved I-ramme og -1 S-ramme.
Funktionen
er korrekt.
char getType()
Testparametre: setType(Iramme), setType(Sramme),
setType(2)
Forventet resultat: Iramme = 0, Sramme = 1, ellers returneres -1 = Unknown
Resultat: Funktionen
returnerede henholdsvis 0, 1, -1.
Funktionen
er korrekt.
void setAdr(char adresse)
Testparametre: 0, 1, 5
Forventet resultat: Funktionen skal kun acceptere adresser i intervallet 1-4.
Resultat: 0 og 5: adresse blev ikke sat.
1:
adresse blev sat til 1.
Funktionen
er korrekt.
char getAdr()
Testparametre: setType(Sramme), setAdr('2')
Forventet resultat: Funktionen returnere det der står i adressefeltet = 2.
Resultat: Funktionen
returnerede 2.
Funktionen
er korrekt.
bool setBoot(bool value)
Testparametre: I-ramme og S-ramme. Value = true eller
false.
Forventet
resultat: Funktionen skal kun
acceptere S-rammer. Value sættes til true eller false.
Resultat: I-ramme:
value blev ikke sat.
S-ramme
og true: bit 3 og 2 blev sat til 1.
S-ramme
og false: value blev sat til false.
Funktionen
er korrekt.
bool getReady()
Testparametre: ingen parametre.
Forventet
resultat: Funktionen skal
returnere true eller false, afhængigt af om bit 3 og bit 2, i S-rammens
kontrolbyte, er 0.
Resultat: Funktionen
læser og beregner bittene korrekt.
Funktionen
er korrekt.
void setNS(int value)
Testparametre: -2, 5, 10
Forventet resultat: NS består af 3 bits, og dermed skal value være i
intervallet 0-7.
Resultat: -2
og 10: NS blev ikke sat.
5: NS
blev sat.
Funktionen
er korrekt.
int getNS()
Testparametre: setNS(6)
Forventet resultat: Funktionen skal returnere 6
Resultat: NR
= 6.
Funktionen
er korrekt.
void setNR(int value)
Testparametre: -2, 5, 10
Forventet resultat: NR består af 3 bits, og dermed skal value være i
intervallet 0-7.
Resultat: -2
og 10: NR blev ikke sat.
5: NR
blev sat.
Funktionen
er korrekt.
int getNR()
Testparametre: setNR(6)
Forventet resultat: Funktionen skal returnere 6
Resultat: NR
= 6.
Funktionen
er korrekt.
void setPF(int value)
Testparametre: -1, 0, 1, 2
Forventet resultat: 1 = P, 0 = F, -1 og 2: PF skal ikke sættes.
Resultat: 0
og 1: PF blev sat korrekt.
2
og -1: PF blev ikke sat.
Funktionen
er korrekt.
bool getPF()
Testparametre: setPF(1), setPF(0)
Forventet resultat: 1 = true, 0 = false
Resultat: Funktionen
returnerede først true, dernæst false.
Funktionen
er korrekt.
bool receiveOneCharTimeout(char *value)
Testparametre: HDLC::send(s,1); og ingenting.
Forventet resultat: Når der sendes en karakter, skal den hentes, inden der sker
timeout.
Resultat: s
blev hentet, og da der ingenting blev sendt kom der Timeout.
Funktionen
er korrekt.
Af: Alex Hede, Søren S. Munk
void vent(int tid)
Testparametre: -5000, 0, 5000.
Forventet resultat: Venter det antal millisekunder der er indtastet.
Hvis tallet er
negativt eller 0, ventes der 0 millisekunder.
Resultat: Ved test af -5000 og 0 afsluttede funktionen
med det samme.
Ved
test af 5000, ventede programmet ca. 5 sekunder.
Funktionen
virker korrekt.
void taendLampe(int nr)
Testparametre: -2, 1 = rodLampe, 2 = gronLampe, 3
Forventet resultat: -2, og 3: der sker ikke noget
1 og
2 rød hhv. grøn lampe lyser.
Resultat: -2,
3: Begge lamper er slukkede, der skete ikke noget
1:
Rød lampe lyser.
2:
Grøn lampe lyser.
Funktionen
virker korrekt.
void slukLampe()
Testparametre: taendLampe(1), taendLampe(2).
Forventet resultat: rød lampe slukkes og grøn lampe slukkes.
Resultat: Begge
lamper blev slukket.
Funktionen
virker korrekt.
void udgangstilstand()
Testparametre: Ingen parametre.
Forventet resultat: Displayet nulstilles, og lamperne slukkes.
Resultat: Displayet
blev nulstillet og lamperne blev slukket.
Funktionen
virker korrekt.
void spaerrettilstand()
Testparametre: Ingen parametre.
Forventet resultat: Tænder rød lampe og venter 4 sekunder.
Resultat: Rød
lampe blev tændt, og der blev ventet i ca. 4 sekunder.
Funktionen
virker korrekt.
void setAlfadisp (char *linie2, int length)
Testparametre: Hej med dig og Hej med dig jeg hedder Kaj
Fremgangsmåde: Der er plads til 20 tegn i displayet, så alt over 20 skal
fjernes.
Forventet resultat: Hej med dig og Hej med dig jeg hedd
Resultat: [1]1DD201Hej
med dig
T
[1]1DD201Hej med dig jeg hedd
:
Funktionen
virker korrekt.
bool givAdgang()
Testparametre: Ingen parametre.
Forventet
resultat: Udskriver Godkendt på
skærmen. Tænder grøn lampe. Venter 3 sekunder. Nulstiller antallet af forkerte
forsøg.
Resultat: Informationsdisplay:
Godkendt
Grønlampe
blev tændt.
Der
blev ventet i 3 sekunder.
Antallet
af forkerte forsøg blev nulstillet.
Funktionen
virker korrekt.
void opdaterTid()
Testparametre: Ingen parametre.
Forventet resultat: Udskriver dato, tid og år.
Resultat: [1]1"▼DD101Jun 06
13:42:45 2003
^
Funktionen
virker korrekt.
void setNumdisp (char sign, char *tal)
Testparametre: (-, 999), ( 999), (-1234567), ( 1234567)
Forventet resultat: -00999, 000999, -12345, 123456
Resultat: -00999,
000999, -12345, 123456
Funktionen
virker korrekt.
bool getPinkode(int *pinkode)
Testparametre: setInfo(56) og setInfo(1234) setID(B)
Forventet resultat: 56, 1234
Resultat: 56,
1234
Funktionen
virker korrekt.
bool getKortnr(int *kortnummer)
Testparametre: setInfo(1234), setInfo(123456), setID(A)
Forventet
resultat: Funktionen giver true
hvis den modtager en pinkode inden der sker timeout og skriver pinkode hhv. 1234
og 123456 i kortnummer.
Resultat: kortnummer
er hhv. 1234 og 123456
Funktionen
virker korrekt.
bool tjekKortnr(int kortnummer)
Testparametre: -200, 1234, 8831, 8834, 123456
Forventet resultat: -200: Kortet er
ukendt rød lampe lyser og
returnerer false
1234:
Kortet er ukendt rød lampe
lyser og returnerer false
8831:
Funktionen returnerer true
8834:
Kortet er spærret rød lampe
lyser og returnerer false
123456:
Kortet er ukendt rød lampe
lyser og returnerer false
Resultat: 1234:
Kortet er ukendt rød lampe
lyser og returnerer false
8831:
True
8834:
Kortet er spærret rød lampe
lyser og returnerer false
123456:
Kortet er ukendt rød lampe
lyser og returnerer false
Funktionen
virker korrekt.
bool naegtAdgang()
Testparametre: 8831 testes 3 gange i træk
Forventet resultat: Pinkoden er forkert, prøv igen
Pinkoden
er forkert, prøv igen
Forkert pinkode,
kortet er spærret., spaerrettilstand() og blokerKort(8831) kaldes.
Resultat: Pinkoden
er forkert, Prøv igen
Pinkoden
er forkert, prøv igen
Forkert pinkode,
kortet er spærret., spaerrettilstand() og blokerKort(8831) kaldes.
Funktionen
virker korrekt.
Af: Alex Hede, Søren S. Munk
Modultesten af de enkelte funktioner i applikationen er opdelt, således at alle utility funktioner testes først, derefter alle funktioner.
For at kunne teste utility funktioner og medlemsdata erklæres disse midlertidigt public: for at kunne tilgå dem fra main.
Alle små testprogrammer skrives i main og koncentrerer sig om at teste at funktionen returnerer det forventede, samt et tjek på om de forventede operationer er foretaget i den tilknyttede database.
Til at tjekke om de rigtige værdier er blevet rettet/tilføjet/fjernet i databasen benyttes Microsoft Access.
Vi finder det ikke nødvendigt at teste om Access fungerer korrekt, men henviser til Microsofts dokumentation på området.
Der er valgt at dokumentere alle resultater med screen dumps i stedet for at skrive resultatet for at bevare en ægthed i dokumentationen. Da de screen dumps, som anvendes her, er små og let overskuelige ødelægger det ikke læsbarheden.
Alle tests af hver enkelt funktion er opstillet således, at hver test er læsbar uafhængig af de øvrige tests. Dvs. at der til hver test opridses de udgangs betingelser / parametre, som testen anvender.
De interessante data i de screen dumps der er anvendt til dokumentationen er indkredset i en cirkel for læsbarhedens skyld. Den hvide cirkel markerer returværdier fra funktioner.
Af: Jesper Johansen
Da alle funktionerne i denne klasse kaldes af andre funktioner i den færdige applikation, testes ikke om de modtagne parametre ligger inden for de rigtige rammer. Den funktion ligger i public funktionerne i DB_Screen klassen.
|
Funktionsnavn |
DB_Database::DB_Database()
- constructor |
|
Bemærkninger |
Der tilføjes kode i 1.
Funktionen DB_Database 2.
Funktionen opretForbindelse, , se test af denne 3.
main |
|
Udførelse |
Kode tilføjes: 1.
cout <<
"Constructor DB_Database kaldt\n"; 2.
cout <<
"Opret forbindelse kaldt!!\n"; 3.
DB_Database p; |
|
Forventet resultat |
Det forventes, at følgende skrives på
skærmen: Constructor DB_Database
kaldt!! Opret forbindelse
kaldt!! |
|
Resultat |
|
|
RKonklusion |
Det ses, at der er overensstemmelse mellem
forventede resultat og det resultat, der kommer på skærmen. Funktionen er hermed
godkendt. |
Funktionsnavn |
bool DB_Database::findesBruger ( const char
*brugerNavn) |
|
|
Bemærkninger |
Brugere I Databasen (Tabel_Brugerdata)
findes i Access:
Der undersøges om: 1.
Karl Børge Jensen findes, og funktionen returnerer
true. 2.
Et tilfældigt navn f. eks. Karl List findes , og
funktionen returnerer false. |
|
|
Udførelse |
Der skrives følgende kode I main (I to omgange): 1. int
svar; 2. int
svar; |
|
|
Forventet resultat |
1.
Det forventes, at der skrives 1 på skærmen for at
funktionen har returneret true at bruger findes i tabellen. 2.
Det forventes, at der skrives 0 på skærmen for
at funktionen har returneret false at bruger ikke findes i tabellen. |
|
|
Resultat |
1. |
|
|
2. |
|
|
|
RKonklusion |
Funktionen er hermed
godkendt. |
|
|
Funktionsnavn |
bool DB_Database::setNyNavn (const char
*brugerNavn) |
||
|
Betingelser |
Der undersøges om:
|
||
|
Udførelse |
Der skrives følgende kode i main: int svar; |
||
|
Forventet resultat |
1.
Det forventes, at der på skærmen skrives et 1
for at funktionen setNyNavn har returneret true og dermed arbejdet korrekt. 2.
Det forventes desuden, at det navn Karl Børge
Jensen som medgives funktionen er tilføjet i tabellen Tabel_Brugerdata. |
||
|
Resultat |
1. |
|
|
|
2. |
Før Kørsel af kode |
|
|
|
Efter kørsel af kode: |
|
||
|
RKonklusion |
1.
Det ses, at der udskrives 1 for true som
forventet. Funktionen er dermed korrekt. 2.
Det ses, at navnet Karl Børge Jensen er tilføjet
til tabellen. Funktionen er hermed
godkendt. |
||
|
Funktionsnavn |
int
DB_Database::getKundeNummer (const char *brugerNavn) |
|
|
Betingelser |
Følgende data findes i Tabel_Brugerdata:
Der undersøges om:
|
|
|
Udførelse |
Der skrives følgende kode i main (i to
imgange) 1. int
svar; 2. int
svar; |
|
|
Forventet resultat |
|
|
|
Resultat |
1. |
|
|
2. |
|
|
|
RKonklusion |
Funktionen er hermed
godkendt. |
|
|
Funktionsnavn |
bool
DB_Database::setNyKortNummer(int kortNummer) |
|
|
Betingelser |
Følgende kortnumre er i tabel_kortdata:
Der undersøges:
|
|
|
Udførelse |
Følgende kode skrives i main: bool
svar; |
|
|
Forventet resultat |
Det forventes at:
|
|
|
Resultat |
1. |
|
|
2. |
|
|
|
RKonklusion |
1. Det ses, at der er
tilføjet 1234 i en ny række i kolonnen Kortnummer i tabel_Kortdata. 2. Det ses, at der er
returneret true. Funktionen er hermed
godkendt. |
|
|
Funktionsnavn |
bool
DB_Database::setNyKundeNummer (int kundeNummer, int kortNummer) |
|
|
Betingelser |
Følgende data findes i Tabel_Kortdata:
Der undersøges:
|
|
|
Udførelse |
Der skrives følgende kode i main: int
svar; |
|
|
Forventet resultat |
Det forventes at:
|
|
|
Resultat |
1. |
|
|
2. |
|
|
|
RKonklusion |
Funktionen er hermed
godkendt. |
|
|
Funktionsnavn |
bool DB_Database::setNavn
(const char *brugerNavn, int brugerNummer) |
|
|
Betingelser |
Følgende navne findes i tabel_Brugerdata:
Der undersøges om:
|
|
|
Udførelse |
Følgende kode skrives i main (i to omgange) 1. bool
svar; 2. bool
svar; |
|
|
Forventet resultat |
|
|
|
Resultat |
1. |
|
|
2. |
|
|
|
RKonklusion |
Funktionen er hermed
godkendt. |
|
|
Funktionsnavn |
bool
DB_Database::setKortNummer (int kortNummer, int kortNrGammel) |
|
|
Betingelser |
Følgende kortnumre findes i Tabel_Kortdata:
Der undersøges om:
|
|
|
Udførelse |
Der skrives følgende kode i main: ( i to
omgange) 1. int
svar;
|
|
|
Forventet resultat |
|
|
|
Resultat |
1. |
|
|
2. |
|
|
|
RKonklusion |
Funktionen er hermed
godkendt. |
|
|
Funktionsnavn |
bool
DB_Database::setPinkode (int pinkode, int kortNummer) |
|
|
Betingelser |
Følgende data findes i Tabel_Kortdata:
Der undersøges om:
|
|
|
Udførelse |
Der skrives følgende kode i main (i to
omgange): 1. int
svar;
|
|
|
Forventet resultat |
Det forventes at:
|
|
|
Resultat |
1. |
|
|
2. |
|
|
|
RKonklusion |
Funktionen er hermed
godkendt. |
|
|
Funktionsnavn |
bool
DB_Database::setKortSpaerret (int kortNummer) |
|
|
Betingelser |
Følgende data gfindes i tabel_kortdata:
Der undersøges, om:
|
|
|
Udførelse |
Følgende kode skrives i main (i to
omgange): 1. bool
svar; 2. bool
svar; |
|
|
Forventet resultat |
Det forventes, at:
|
|
|
Resultat |
1. |
|
|
2. |
|
|
|
RKonklusion |
Funktionen er hermed
godkendt. |
|
|
Funktionsnavn |
const char * DB_Database::getNavn
(int brugerNummer) |
|
|
Betingelser |
Følgende data findes i tabel_brugerdata:
Der undersøges om:
|
|
|
Udførelse |
Der skrives følgende kode i main (i to
omgange): 1.
const char *svar; 2.
const char *svar; |
|
|
Forventet resultat |
Der forventes, at:
|
|
|
Resultat |
1. |
|
|
2. |
|
|
|
RKonklusion |
Det ses, at funktionen returnerer navnet
Jens Hansen. Det ses, at Funktionen returnerer tegnet
0. Funktionen er hermed
godkendt. |
|
|
Funktionsnavn |
int
DB_Database::getTerminalStatus () |
|
Betingelser |
Følgende værdier er i tabel_terminaldata:
Der undersøges om: Funktionen returnerer værdien i feltet
status hvor terminalnummer = 1. |
|
Udførelse |
Der skrives følgende kode i main: int svar; |
|
Forventet resultat |
Det forventes, at funktionen returnerer
tallet 11. |
|
Resultat |
|
|
RKonklusion |
Det ses, at funktionen returnerer tallet
11, som udskrives på skærmen. Funktionen er hermed
godkendt. |
|
Funktionsnavn |
bool
DB_Database::findesKortNummer(int kortNummer) |
|
|
Betingelser |
Følgende værdier er i tabel_kortdata:
Der undersøges om:
|
|
|
Udførelse |
Der skrives følgende kode i main: ( i to
omgange) 1.
bool svar; 2. bool svar; |
|
|
Forventet resultat |
Der forventes at:
|
|
|
Resultat |
1. |
|
|
2. |
|
|
|
RKonklusion |
Funktionen er hermed
godkendt. |
|
|
Funktionsnavn |
bool
DB_Database::sletBruger (int brugerNummer) |
|
|
Betingelser |
Følgende data findes i tabel_brugerdata og
tabel_kortdata:
Der undersøges om:
|
|
|
Udførelse |
Følgende kode skrives i main: 1.
bool svar; 2. bool svar; |
|
|
Forventet resultat |
Der forventes at:
|
|
|
Resultat |
1. |
|
|
2. |
|
|
|
RKonklusion |
Det ses, at:
Funktionen er hermed
godkendt. |
|
|
Funktionsnavn |
bool
DB_Database::opretNyBruger (const char *brugerNavn, int kortNummer, int
pinkode) |
|
Betingelser |
Det undersøges om funktionen kan oprette en
ny bruger med: brugernavn, kundenummer, pinkode, samt nulstilling af
kort_spærret og antal_forsøg. Da funktionen kalder følgende funktioner:
som er testet separat undersøges her kun
opm funktionen returnerer true, som svar på at alle underfunktionerne har
returneret true. |
|
Udførelse |
Følgende kode skrives i main: |
|
Forventet resultat |
At funktionen returnerer true. |
|
Resultat |
|
|
RKonklusion |
Det ses, at funktionen har returneret true. Funktionen er hermed
godkendt. |
|
Funktionsnavn |
bool
DB_Database::getBrugerAll (char *searchName) |
|
|
Betingelser |
Følgende poster findes i tabel_brugerdata:
Der undersøges om Funktionen kan udskrive alle de poster, som
starter med den streng, som funktionen modtager, f.eks. J, og returnerer
true. Funktionen ikke udskriver nogle poster hvis
den modtager f.eks. Ni, og returnerer true. |
|
|
Udførelse |
Der kode i main: (i to omgange) 1.
int svar; 2. int svar; |
|
|
Forventet resultat |
|
|
|
Resultat |
1. |
|
|
2. |
|
|
|
RKonklusion |
Funktionen er hermed
godkendt. |
|
|
Funktionsnavn |
bool
DB_Database::getKortData (int brugerNummer) |
|
|
Betingelser |
Følgende poster findes i tabel_kortdata:
Der undersøges om:
|
|
|
Udførelse |
Der skrives følgende kode i main (i to
omgange): 1.
bool svar; 2. bool svar; |
|
|
Forventet resultat |
Der forventes at:
|
|
|
Resultat |
1. |
|
|
2. |
|
|
|
RKonklusion |
Funktionen er hermed
godkendt. |
|
Af: Jesper Johansen
|
Funktionsnavn |
bool
DB_Opret_forb::Opret_Forbindelse () |
|
Betingelser |
Det undersøges om funktionen kan oprette en
forbindelse til den ODBC, som er tilknyttet. Funktionen skal returnere true
hvis forbindelsen er oprettet. Da funktionen kaldes af hvert objekt der oprettes
af DB_Database klassen er funktionen blevet testet i hver funktion, som har
skrevet eller hentet data fra databasen. |
|
Udførelse |
Følgende kode skrives i main: bool
svar; DB_Opret_forb
o; svar
= o.Opret_Forbindelse(); cout
<< svar; |
|
Forventet resultat |
Der returneres true. |
|
Resultat |
|
|
RKonklusion |
Det ses, at der er returneret true. Desuden er alle funktionerne, som har
skrevet eller hentet data fra databasen godkendt. Funktionen er hermed
godkendt. |
|
Funktionsnavn |
void
DB_Opret_forb::Luk_Forbindelse () |
|
|
Funktionen DB_Opret_Forb returnerer intet,
og det er derfor ikke muligt at teste om funktionen er veludført. Funktionen kaldes FØR der er oprettet
forbindelse til ODBCen. |
|
Udførelse |
Følgende kode skrives i main: DB_Database o; o.Luk_Forbindelse(); |
|
Forventet resultat |
At der opstår en fejl. |
|
Resultat |
|
|
RKonklusion |
Der opstår en fejl, når Opret_forbindelse
ikke er kaldt, og der ikke gør når funktionen bliver kaldt efter hver test af
de øvrige funktioner. Funktionen er hermed
godkendt. |
Af: Jesper Johansen
|
Funktionsnavn |
bool
Faelles_klasse::blokerKort (int kortNummer, bool skrivLaes) |
||
|
Betingelser |
Følgende data findes tabel_kortdata:
Der
undersøges om:
|
||
|
Udførelse |
bool svar; a. Koden køres Herefter ændres
værdien false i kolonnen Kort_spærret til true (feltet afkrydses) b. Koden køres igen.
a. bool svar; b. bool svar;
bool svar; |
||
|
Forventet resultat |
Det forventes at: a. Funktionen returnerer false ( 0) b. Funktionen returnerer true (1) Funktionen returnerer
false i begge tilfælde. Funktionen opdaterer
værdien i Kort_spærret til true, og returnerer true. |
||
|
Resultat |
1. |
a. |
|
|
b. |
|
||
|
2. |
|
||
|
3. |
|
||
|
RKonklusion |
Funktionen er hermed
godkendt. |
||
|
Funktionsnavn |
bool
Faelles_klasse::setAntalForsoeg (int kortNummer, int antal) |
|
|
Betingelser |
Følgende data findes i tabel_kortdata:
Der undersøges om: Funktionen opdaterer kolonnen
Antal_forsøg i den række hvor kortnummer = modtagne paremeter: kortNummer
NB: Der testes ikke om det kortNummer
funktionen modtager er for stort eller for lille, da et ikke matchende
kortnummer medfører at der intet bliver ændret. Ligeledes testes der ikke om
det modtagne antal er for stort, dette varetages af den kaldende funktion. |
|
|
Udførelse |
Der skrives følgende kode i main: ( i to
omgange) 1.
bool svar; 2.
bool svar; |
|
|
Forventet resultat |
|
|
|
Resultat |
1. |
|
|
2. |
|
|
|
RKonklusion |
Funktionen er hermed
godkendt. |
|
|
Funktionsnavn |
int
Faelles_klasse::getAntalForsoeg (int kortNummer) |
|
|
Betingelser |
Følgende data findes i tabel_kortdata:
Der undersøges om:
NB: Der testes ikke om det kortNummer
funktionen modtager er for stort eller for lille, da et ikke matchende
kortnummer medfører at der intet bliver ændret. |
|
|
Udførelse |
Der skrives følgende kode i main: (i to
omgange) 1.
int svar; 2. int svar; |
|
|
Forventet resultat |
Det forventes at:
|
|
|
Resultat |
1. |
|
|
2. |
|
|
|
RKonklusion |
Funktionen er hermed
godkendt. |
|
|
Funktionsnavn |
int
Faelles_klasse::getPinkode (int kortNummer) |
|
|
Betingelser |
Følgende data findes i tabel_kortdata:
Der undersøges om:
NB: Der testes ikke om det kortNummer
funktionen modtager er for stort eller for lille, da et ikke matchende
kortnummer medfører at der intet bliver ændret. |
|
|
Udførelse |
Følgende kode skrives i main: (i to
omgange) 1.
int svar; 2. int svar; |
|
|
Forventet resultat |
Det forventes at:
|
|
|
Resultat |
1. |
|
|
|
|
|
|
RKonklusion |
Funktionen er hermed
godkendt. |
|
Af: Jesper Johansen
|
Funktionsnavn |
DB_Com::DB_Com() |
|
Betingelser |
Der tilføjes kode i 1.
Funktionen DB_Database 2.
Funktionen opretForbindelse, , se test af denne 3.
main |
|
Udførelse |
Kode tilføjes: 1.
cout << "Constructor
DB_Database kaldt\n"; 2.
cout <<
"Opret forbindelse kaldt!!\n"; 3.
DB_Database p; |
|
Forventet resultat |
Det forventes, at følgende skrives på
skærmen: Constructor DB_Database
kaldt!! Opret forbindelse
kaldt!! |
|
Resultat |
|
|
RKonklusion |
Det ses, at der er overensstemmelse mellem
forventede resultat og det resultat, der kommer på skærmen. Funktionen
er Godkendt. |
|
Funktionsnavn |
bool
DB_Com::validerPinkode (int kortNummer, int pinkode) |
|
|
Betingelser |
Følgende data er i tabel_kortdata:
Der undersøges om: 1.
Funktionen returnerer true hvis modtagne pinkode
=pinkode i tabel_kortdata i den række hvor kortnummer = det modtagne
kortNummer. 2.
Funktionen returnerer false hvis modtagne pinkode
ikke matcher pinkode i tabel_kortdata. 3.
Funktionen returnerer false hvis det modtagen
kortNummer ikke findes i tabel_kortdata. NB: Der testes ikke om: Det kortNummer og pinkode funktionen
modtager er for stort eller for lille. Det er op til kaldefunktionen. Det kortNummer funktionen modtager findes i
tabel_kortdata. Det er op til kaldefunktionen (ved kald af findesKortNummer) |
|
|
Udførelse |
Der skrives følgende kode i main: (i tre
omgange) 1.
bool svar; 2.
3.
bool svar; |
|
|
Forventet resultat |
Det forventes at: 1.
Funktionen returnerer true. (Skriver 1 på
skærmen) 2.
Funktionen returnerer false (skriver 0 på
skærmen) 3.
Funktionen returnerer false (skriver 0 på
skærmen) |
|
|
Resultat |
1. |
|
|
2. |
|
|
|
3. |
|
|
|
RKonklusion |
1.
Det ses, at funktionen returnerer det ønskede. 2.
Det ses, at funktionen returnerer det ønskede. 3.
Det ses, at funktionen returnerer det ønskede. Funktionen er Godkendt. |
|
|
Funktionsnavn |
bool
DB_Com::setTerminalStatus (int fejlkode) |
|
Betingelser |
Følgende data findes i tabel_Terminaldata:
Der undersøges om funktionen opdaterer status
i rækken hvor Terminalnummer = 1 med den modtagne værdi: fejlkode, og
returnerer true. |
|
Udførelse |
Der skrives følgende kode i main: bool svar; |
|
Forventet resultat |
At feltet status i den række hvor
terminalnummer = 1 opdateres med den modtagne værdi fejlkode, og der
returneres true. |
|
Resultat |
|
|
RKonklusion |
Det ses, at funktionen har opdateret feltet
status og returneret true, som forventet. Funktionen er Godkendt. |
|
Funktionsnavn |
bool
DB_Screen::modtagPinkode () |
|
|
Betingelser |
Der undersøges:
|
|
|
Udførelse |
Følgende kode skrives i main: bool svar;
|
|
|
Forventet resultat |
Følgende resultat forventes:
|
|
|
Resultat |
1. |
|
|
2. |
|
|
|
3. |
|
|
|
RKonklusion |
Funktionen er Godkendt. |
|
|
Funktionsnavn |
bool
DB_Screen::modtagKortNummer() |
|
|
Betingelser |
Der undersøges om:
|
|
|
Udførelse |
Følgende kode skrives i main: bool svar;
3.
Der indtastes
tallet: 5682, som findes i tabel_kortdata. 4.
Der indtastes et
fircifret tal 1234. |
|
|
Forventet resultat |
Følgende resultat forventes: 1.
At funktionen udskriver: Kortnummer skal være på 4
cifre.- begge tilfælde. 2.
At funktionen returnerer false, og at KortNr ikke
bliver sat. 3.
At funktionen udskriver: Kortnummer findes
allerede. Indtast kortnummer: 4.
At funktionen sætter kortNrtil det indtastede, og
returnerer true. |
|
|
Resultat |
1. |
|
|
2. |
|
|
|
3. |
|
|
|
4. |
|
|
|
RKonklusion |
Det ses i alle 4 tilfælde, at funktionen
opfører sig som ønsket. Funktionen
er Godkendt. |
|
|
Funktionsnavn |
bool
DB_Screen::modtagBrugerNavn() |
|
|
Betingelser |
Der undersøges om:
|
|
|
Udførelse |
Følgende kode skrives i main: bool svar;
|
|
|
Forventet resultat |
Der returneres false, og Navn sættes ikke.
|
|
|
Resultat |
1. |
|
|
2. |
|
|
|
RKonklusion |
Det ses i begge tilfælde, at funktionen
opfører sig som ønsket. Funktionen
er Godkendt. |
|
|
Funktionsnavn |
bool
DB_Screen::retAntalForsoeg() |
|
|
Betingelser |
Der undersøges om:
|
|
|
Udførelse |
Der skrives følgende kode i main: bool svar; Der tilføjes følgende kode I
getAntalForsoeg: cout << "getAntalForsøg kaldt.."; og følgende kode i setAntalForsoeg: cout << "setAntalForsøg kaldt.."; Der tastes 1. Der tastes * og derefter 3. |
|
|
Forventet resultat |
Der forventes at:
|
|
|
Resultat |
1. |
|
|
2. |
|
|
|
|
||
|
RKonklusion |
Det ses, at funktionen returnerer og kalder
det forventede. Funktionen er Godkendt. |
|
|
Funktionsnavn |
bool
DB_Screen::retKortSpaerret() |
|
|
Betingelser |
Der testes om:
Hvis blokerKort returnerer true:
|
|
|
Udførelse |
Der skrives følgende kode i main: bool svar; Der tilføjes følgende kode I blokerKort: (pkt
2, 3,) Cout <<
blokerKort kaldt..\n; return true; Der tilføjes følgende kode i blokerKort
(pkt 4, 5) Cout <<
blokerKort kaldt..\n; Der tilføjes følgende kode i setKortSpaerret: Cout <<
setKortSpaerret kaldt..; 2. + 4. Der tastes først J så j 3. + 5. Der tastes -1 |
|
|
Forventet resultat |
Det forventes at:
|
|
|
Resultat |
1. 2. |
|
|
3. |
|
|
|
4. 5. |
|
|
|
RKonklusion |
Det at funktionen opfylder det forventede
resultat. Funktionen er Godkendt. |
|
|
Funktionsnavn |
bool
DB_Screen::retPinkode() |
|
|
Betingelser |
Der testes:
|
|
|
Udførelse |
Der skrives følgende kode i main: bool svar; DB_Screen o; svar
= o.retPinkode(); cout
<< svar << endl; Der skrives følgende kode i getPinkode cout
<< "getPinkode kaldt"; Der skrives følgende kode i setPinkode:
|
|
|
Forventet resultat |
|
|
|
Resultat |
1. |
|
|
2. |
|
|
|
3. |
|
|
|
4. |
|
|
|
5. |
|
|
|
6. |
|
|
|
RKonklusion |
Det at funktionen opfylder det forventede
resultat. Funktionen er Godkendt. |
|
|
Funktionsnavn |
bool
DB_Screen::retBrugerNavn() |
|
|
Betingelser |
Der testes:
|
|
|
Udførelse |
Følgende kode skrives i main: bool svar; DB_Screen o; svar
= o.retBrugerNavn(); cout
<< svar << endl; cout
<< Navn; Følgende kode skrives i getNavn: Cout << getNavn kaldt;
|
|
|
Forventet resultat |
1.
Der skrives: getNavn kaldt 2.
Der returneres true. Variablen Navn sættes ikke 3.
Der returneres false. Variablen Navn sættes ikke 4.
Variablen Navn sættes til det indtastede og der
returneres true. |
|
|
Resultat |
1. |
|
|
2. |
|
|
|
3. |
|
|
|
4. |
|
|
|
RKonklusion |
Det at funktionen opfylder det forventede
resultat. Funktionen er Godkendt. |
|
Funktionsnavn |
bool
DB_Screen::ErDerStatus () |
|
Betingelser |
Det testes: Om funktionen kalder: getTerminalStatus Der udskrives fejl hvis getTerminalStatus
returnerer et tal forskelligt fra 0. |
|
Udførelse |
Der skrives følgende kode i main: bool svar; DB_Screen o; svar
= o.ErDerStatus(); cout
<< svar << endl; Der tilføjes følgende kode i
getTerminalStatus Cout
<< getTerminalStatus kaldt; /* . */ return
7. |
|
Forventet resultat |
Der skrives: Der er fejl paa terminal 1.
Fejlkode: 7. Der returneres false |
|
Resultat |
|
|
RKonklusion |
Det at funktionen opfylder det forventede
resultat. Funktionen er Godkendt. |
|
Funktionsnavn |
bool DB_Screen::retKortNummer() |
|
|
Betingelser |
Det testes:
|
|
|
Udførelse |
Der skrives følgende kode i main: int svar; DB_Screen o; svar = o.retKortNummer(); cout
<< svar << endl; cout
<< o.kortNrRet << endl;
|
|
|
Forventet resultat |
|
|
|
Resultat |
1. |
|
|
2. |
|
|
|
3. |
|
|
|
4. |
|
|
|
5. |
|
|
|
RKonklusion |
Det at funktionen opfylder det forventede
resultat. Funktionen er Godkendt. |
|
|
Funktionsnavn |
bool DB_Screen::spaerKort() |
|
|
Betingelser |
Det testes:
Der tastes brugernavn, brugernummer og
derfeter
|
|
|
Udførelse |
Der skrives følgende kode i main: int svar; DB_Screen o; svar = o.spaerKort(); cout
<< svar << endl; |
|
|
Forventet resultat |
|
|
|
Resultat |
1. |
|
|
|
|
|
|
3. |
|
|
|
4. |
|
|
|
RKonklusion |
Det at funktionen opfylder det forventede
resultat. Funktionen er Godkendt. |
|
|
Funktionsnavn |
bool DB_Screen::fjernBruger() |
|
|
Betingelser |
Der testes:
|
|
|
Udførelse |
Der skrives følgende kode i main: bool svar; DB_Screen
o; svar =
o.fjernBruger(); cout
<< svar << endl; Der tilføjes følgende kode i sletBruger cout <<"SletBruger
kaldt\n<n"; /* . */
|
|
|
Forventet resultat |
Der returneres false. sletBruger kaldes, og der returneres true. |
|
|
Resultat |
1. |
|
|
2. |
|
|
|
RKonklusion |
Det at funktionen opfylder det forventede
resultat. Funktionen er Godkendt. |
|
|
Funktionsnavn |
bool DB_Screen::redigerBruger() |
|
|
Betingelser |
Det testes:
|
|
|
Udførelse |
Følgende kode skrives i main: bool svar; DB_Screen
o; svar =
o.redigerBruger(); cout
<< svar << endl; |
|
|
Forventet resultat |
|
|
|
Resultat |
1. |
|
|
2. |
|
|
|
RKonklusion |
Det at funktionen opfylder det forventede
resultat. Funktionen er Godkendt. |
|
|
Funktionsnavn |
bool DB_Screen::nyBruger() |
|
|
Betingelser |
Det testes:
|
|
|
Udførelse |
Der skrives følgende kode i main: bool
svar; DB_Screen
o; svar =
o.nyBruger(); cout << svar << endl; |
|
|
Forventet resultat |
|
|
|
Resultat |
1. |
|
|
2. |
|
|
|
RKonklusion |
Det at funktionen opfylder det forventede
resultat. Funktionen er Godkendt. |
|
|
Funktionsnavn |
void DB_Screen::hovedMenu() |
|
|
Betingelser |
Der testes:
|
|
|
Udførelse |
Der skrives følgedne kode i main: DB_Screen o; o.hovedMenu();
|
|
|
Forventet resultat |
|
|
|
Resultat |
1. |
|
|
2. |
|
|
|
3. |
|
|
|
4. |
|
|
|
5. |
|
|
|
6. |
Skærmen viser stadig hovedmenu. |
|
|
RKonklusion |
Det at funktionen opfylder det forventede
resultat. Funktionen er Godkendt. |
|
Der er i klassen DB_Screen ikke testet, om funktionerne, som modtager tal, kan håndtere at modtage karakterer fra skærmen. Denne sikkerhed er ikke implementeret i funktionerne til afleveringstidspunktet, men kan implementeres til demonstrationen.
NB: Der er ingen krav i kravspecifikation om at applikationen skal kunne håndtere fejlagtige indtastninger.
Af: Jesper Johansen