hur testa programmet?

  • Författare
  • Meddelande
Användarvisningsbild

annettekusma

sql-guru

  • Inlägg: 102
  • Blev medlem: 11 aug 2017, 10:16
  • Ort: Eskilstuna

hur testa programmet?

Inlägg08 okt 2017, 13:48

Nu när programmen blir rätt komplicerade så blir det svårare och svårare att hålla reda på vilka varianter man behöver testa för att ha testat allt.

Att testa i princip efter varje liten ändring man gör är ju ett steg i rätt riktning, men dels så måste man dra en gräns nånstans. Ex. bör man ju inte behöva testköra för att man gör en redaktionell ändring i någon docstring, men om man byter ut ett variabel namn mot ett namn man tycker låter bättre så hamnar man snabbt i den sitsen att man måste bestämma sig för att man antingen VET att variabeln bara finns på detta ställe och man då kan strunta i en testkörning eller för att man är osäker om rackarn dyker upp nån annanstans också och då måste man testköra för att inte missa det. Dels kan man aldrig vara riktigt säker på om ändringen påverkat koden på nåt sätt man inte förutsett och som inte visar sig förrän man testar med en annan variant, ex. nåt option eller ett annat kommando. I en utopisk värld så skriver man så inkapslat att det inte händer några missar, men i en utopisk värld skulle man ju inte behöva testa då.

Nu har jag gjort en lista med de kommandon som programmet har och de options som är lämpliga för varje kommando och så testkör jag varje variant på listan med någon input och någon output, bara det blir ju fyra varianter: först med lämpliga input/output, sedan med en lämplig input, men olämplig outputvariant, sen med olämplig input och lämplig output, och sist med både olämplig input och output.

Att hålla på sådär är manuellt och därför "errorprone", vad det nu kan bli på svenska ("fallerabelt" ? *pffhfhfht*). Och det låter som något som moduler som argparse borde ha en inbyggd metod för, typ att generera en lista på vilka kommandovarianter som blir till med den parser man byggt, samt skicka detta till en fil i ett format som är lämpligt att köra med något i stil med

Kod: Markera allt
python3 main.py --argparse-test kommandofil.txt

Kod: Markera allt
python-test-tool kommandofil.txt --input=laempligt.txt --output=olaempligt.txt


Finns det något sådant? Eller måste jag skriva det själv när jag blir stor?
Användarvisningsbild

Allinrep

dbwebb

  • Inlägg: 1124
  • Blev medlem: 03 sep 2012, 09:19
  • Ort: Portugal (tillfälligt)

Re: hur testa programmet?

Inlägg09 okt 2017, 11:16

När du blir stor kan du gå vidare med dbwebbs linux-kurs, där du får lära dig scripta med bash :)

dbwebb.se/linux: Kmom03: Skript med Bash

Då lägger man helt enkelt in alla kommandon man vill köra i en enda fil och när det är dags att testa så kör man den en filen. Man kan även printa ut text eller skiljelinjer så att det blir lätt att se vilken kommando som resulterar i vad.
Användarvisningsbild

mos

dbwebb

  • Inlägg: 11114
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: hur testa programmet?

Inlägg10 okt 2017, 08:45

Det finns många varianter på hur man testar sin programvara (enhetstester, funktionstester, acceptanstester, mfl). I slutändan vill man ha en automatiserad testsuite som berättar om din ändring påverkade någon annan del av programmet.

Man försöker också skriva sin kod så att ändringar i den inte slår rakt genom ett helt program. Man vill kunna ändra i en modul och veta om att just denna kodbiten kan jag ändra, så länge jag inte ändrar modulens API.

När du kör dbwebb inspect så körs ett bash-skript som testar ditt cli-program, det ser ut så här:
https://github.com/dbwebb-se/python/blo ... #L122-L181

Det testar (delvis) cli-programmet ur olika aspekter och kollar jämför resultatet det får med vad som förväntas. Det är inte fullt automatiskt, men det kan ge dig ett hum om ett sätt att testa ett cli-program.
...
..:
.... /mos

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 12 gäster