Just nu i M3-nätverket
Jump to content

Automatiserad testning i C


bragman

Recommended Posts

Hej!

 

Jag vill vara tydlig från början att jag inte är ute och fiskar efter en lösning, den vill jag komma på själv. Jag studerar på universitet och läser där kursen "Datateknik A, Programmering C".

Nu är det så att jag inte har några som helst bekymmer med programmeringen utan på en av de enklare uppgifterna förstå lite vad som efterfrågas, ja tyvärr är det så att man ofta gör problemen svårare.

 

Men nu till själva problemet innan ni somnar:

 

Programmet har en main-funktion som gör att man kan provköra funktionen genom att skriva in testfall för hand. Jag ska göra om main-funktionen så att den provkör ett antal testfall mot funktionen, utan inblandning av användaren. Den ska jämföra resultatet av funktionen med de förväntade resultaten, och så fort den hittar ett testfall som misslyckades (dvs, gav ett annat resultat än det förväntade) ska den skriva ut ett meddelande om detta.

 

Uppgiften består egentligen av två delar:

  1. Hitta på testfall.
  2. Skriv programmet som provkör funktionen med dessa testfall.

Det jag har problem med är hitta på testfall. Sedan undrar jag om innebörden av "gav ett annat resultat än det förväntade" ? själva funktionen returnerar bara 0 eller 1 (dessa två anser jag som de förväntade)och det har jag testat med orimligt många "testfall" alltså olika koordinater för att se om en punkt x,y befinner sig i en rektangel(x1,y1,x2,y2). Så vitt jag kan förstå kan den bara få dessa två värden och alltså kan inte själva koden generera fel under körning(t ex om jag skriver en sträng där det ska vara double skulle kompilatorn klaga på det innan) Är det när punkten är utanför rektangeln jag ska skriva ut detta? Så hur gör jag för att veta om testfallen är rimliga?

Link to comment
Share on other sites

Sedan undrar jag om innebörden av "gav ett annat resultat än det förväntade"

1) att indatan är en punkt som du vet befinner sig i rektangeln, men svaret ändå är falskt

2) omvända fallet av 1)

3) att funktionen kastar en exception

4) funktionen returnerar null, NaN eller annat ogiltigt värde i sammanhanget (inte i detta fall dock, då vi pratar om en boolean, som inte kan anta annat än true/false)

 

I ditt fall skulle jag rekommendera följande fall, hur många du väljer beror på hur uttömmande du vill vara:

1) Fyra punkter som ligger på vardera linje i rektangeln

2) fyra punkter som ligger utanför rektangeln, en utanför varje sida (dvs. utanför till vänster, utanför ovanför osv.)

3) En punkt inuti rektangeln

4) Ett par punkter med orimliga värden (ex. oändligheten eller negativa koordinater i ett positivt koordinatsystem osv.)

 

Hanterar koordinatsystemet även decimaltal så är det viktigt att testfallen inkluderar punkter som ligger på ett avstånd < 1.0 från kantlinjerna, för att säkerställa att inga avrundningsfel uppstår

 

Testdriven utveckling kan verka tungt ibland, men när man väl fått upp sina testfall är det en tung faktor i att hålla buggarna borta.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...