Här finns några testprogram för att underlätta testningen. Dessa är skrivna i Java, men går att använda även för Haskell med hjälp av filerna nedan.
Tänk på att:Ladda ned testing.jar. För Lab3 behövs också Lab3Help.jar. Det är kanske smidigast om de här filerna placeras i samma katalog som era class-filer (i exemplen nedan antas det att de har placerats där).
Det finns två testgeneratorer.
Lab1GenTest söker efter nummer i en genererad mängd.
Lab1FileTest tar en fil med nummer och söker efter relaterade nummer.
java -ea -jar testing.jar lab1test.Lab1GenTest Lab1A
java -ea -jar testing.jar lab1test.Lab1GenTest "Lab1A 50 5 80"
java -jar testing.jar lab1test.Lab1GenTest "Lab1A --help"
java -ea -jar testing.jar lab1test.Lab1FileTest "Lab1A numbers.txt"
java -jar testing.jar lab1test.Lab1FileTest "Lab1A --help"
Det finns en testgenerator.
Lab2GenTest genererar listor med kommandon av ökande storlek.
Man bör köra minst 2 miljoner testfall.
java -ea -jar testing.jar lab2test.Lab2GenTest Lab2
För parallell testning:
java -ea -jar testing.jar -t -1 lab2test.Lab2GenTest "lab2.Lab2 -p"
Den parallella testningen kan gå snabbare. För att det ska fungera måste det finnas en method String pureMain(String[]) som tar en array med alla kommandon och returnerar en sträng med all utdata (istället för att skriva till System.out). Notera att om man använder System.out/System.err tillsammans med den parallella testningen så kan utskrifterna vara missvisande, eftersom utskrifter från olika körningar kan blandas ihop.
Ladda ned Lab2External.java (eller den kompilerade Lab2External.class) och kör som ovan, men skriv Lab2External istället för lab2.Lab2 eller Lab2. Det andra exemplet blir alltså:
java -ea -jar testing.jar -t -1 lab2test.Lab2GenTest "Lab2External -p"
Lab2External kör programmet Lab2 som måste ligga i samma katalog som ni kör kommandot från. Det fungerar även med parallell testning, som rekommenderas.
Det finns två testgeneratorer.
Lab3FileTest tar filer med stopp och linjer och testar från alla noder till alla noder i grafen.
Lab3GenTest testar med genererade grafer.
Man bör testa alla exempelgrafer från labbeskrivningen, samt några miljoner genererade grafer.
java -ea -jar testing.jar lab3test.Lab3FileTest "MyPath stops-bvs.txt lines-bvs.txt"
java -jar testing.jar lab3test.Lab3FileTest "MyPath --help"
java -ea -jar testing.jar lab3test.Lab3GenTest MyPath
java -jar testing.jar lab3test.Lab3GenTest "MyPath --help"
Ladda ned Lab3External.java (eller den kompilerade Lab3External.class) och kör som ovan, men skriv Lab3External istället för MyPath. Lab3External.java kan kompileras med javac -cp testing.jar Lab3External.java
Lab3External kör programmet Lab3 som måste ligga i samma katalog som ni kör kommandot från. Ert program Lab3 måste ta fyra argument (filnamn för fil som innehåller hållplatser, filnamn för fil som innehåller linjer, hållplats för resans start, hållplats för resans slut) och producera utdata på följande format:
28 Angered Gamlestadstorget Centralstationen Brunnsparken Grönsakstorget Vasaplatsen VasaViktoriagatan Olivedalsgatan Botaniska
Den första raden är restiden, följt av hållplatserna i ordning. Första hållplatsen är där resan börjar, den sista är målet för resan. Denna utskrift producerades av ./Lab3 stops-gbg.txt lines-gbg.txt Angered Botaniska
Många datastrukturer bygger på diverse antaganden. Ta en minheap, till exempel: trädet antas vara komplett, och varje nods prioritet antas vara mindre än eller lika med dess barns prioriteter (i båda fallen med undantag för de tillfällen då datastrukturen uppdateras). Den här sortens antaganden kallas invarianter.
För att göra det lättare att hitta fel så kan man testa invarianter och andra egenskaper m h a assertions ("bedyranden"). För att slå på testning av assertions kan man, åtminstone vid användande av vissa Java-implementationer, använda flaggan -ea. Exempel: java -ea Program.