Här finns några testprogram för att underlätta testningen.
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.
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"
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.