# Je programma testen [Programmeergidsen](LEESMIJ.md) Een **test** vergelijkt wat er moet gebeuren met wat er echt gebeurt. Je bepaalt eerst het verwachte resultaat. Daarna voer je het programma uit met een bepaald voorbeeld en vergelijk je beide resultaten. Testen betekent niet zomaar wat klikken totdat alles goed lijkt. Een nuttige test stelt een duidelijke vraag, bijvoorbeeld: ‘Geven nul sterren ook nul punten?’ ## Maak een testtabel Stel dat elke ster twee punten waard is. Schrijf vóór het programmeren drie voorbeelden op: | Sterren | Verwachte punten | Waarom proberen? | | --- | --- | --- | | 0 | 0 | Niets verzameld | | 1 | 2 | Eén vondst | | 5 | 10 | Verschillende vondsten | Een invoer samen met het verwachte resultaat heet een **testgeval**. Bewaar die gevallen, zodat je ze opnieuw kunt gebruiken nadat je code verandert. ## Laat Pliro resultaten vergelijken Dit voorbeeld gebruikt een functie: een stukje code met een naam dat een resultaat teruggeeft. Lees eerst over [functies](../syntaxis/functie.md) als dat nieuw voor je is. ```pliro # taal: nl functie punten(sterren): geef sterren * 2 zeg punten(0) == 0 zeg punten(1) == 2 zeg punten(5) == 10 ``` `==` vraagt of twee waarden gelijk zijn. Elke regel meldt of het berekende resultaat gelijk is aan het verwachte resultaat. ## Voorspel en probeer Hoeveel controles moeten slagen? ```text true true true ``` Pliro toont booleaanse waarden als `true` en `false`, ook bij Nederlandse code. `true` betekent dat de vergelijking klopt. `false` zou betekenen dat de test een verschil vond. Dit zijn eenvoudige controles, geen apart Pliro-testraamwerk. Ze stoppen het programma niet automatisch. ## Jouw uitdaging Vervang `sterren * 2` tijdelijk door `sterren + 2`. Voorspel welke controles misgaan en probeer het. Zet daarna de goede berekening terug. Zo controleer je of je tests echt een fout kunnen ontdekken. ## Een veelgemaakte fout Als je de berekening uit het programma kopieert naar het verwachte antwoord, kun je dezelfde fout kopiëren. Bereken kleine verwachte antwoorden zelf met vingers, fiches of papier. Drie geslaagde controles bewijzen niet dat elke mogelijke invoer werkt. Voeg voorbeelden toe wanneer je een nieuwe regel bedenkt of een bug oplost. Oude tests herhalen na een wijziging heet **regressietesten**. ## Verder leren [Ongewone invoer](ongewone-invoer.md) · [Bugs opsporen](bugs-opsporen.md) · [Code verbeteren](code-verbeteren.md)