← Nieuwste papers
💻 computer science

Invariant-Driven Automated Testing

Dit proefschrift introduceert APOSTL, een specificatietaal die OpenAPI-documenten uitbreidt met logische invarianten, en PETIT, een tool die deze annotaties gebruikt om microservices volledig automatisch te testen zonder toegang tot de broncode.

Oorspronkelijke auteurs: Ana Catarina Ribeiro

Gepubliceerd 2026-03-02
📖 5 min leestijd🧠 Diepgaand

Oorspronkelijke auteurs: Ana Catarina Ribeiro

Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer

Stel je voor dat je een gigantisch, modern restaurant hebt gebouwd. Maar in plaats van één grote keuken, heb je honderd kleine, gespecialiseerde kokjes (microservices) die elk hun eigen ding doen. De ene kok maakt de soep, de andere de taart, en een derde regelt de drankjes. Ze communiceren onderling via briefjes (API's) die ze doorgeven.

Het probleem? Je hebt geen toegang tot de keukens zelf. Je kunt niet zien of ze de ingrediënten goed meten of of ze de oven op de juiste temperatuur hebben gezet. Je ziet alleen het briefje dat binnenkomt en het bordje dat eruit komt. Als je wilt weten of het eten goed is, moet je het proeven (testen), maar zonder te weten hoe het gemaakt is.

Dit is precies het probleem dat Ana Catarina Malhado Ribeiro in haar masterproef aanpakt. Ze heeft een slimme oplossing bedacht om deze "onzichtbare keukens" automatisch te testen, zelfs als je de code (het recept) niet mag zien.

Hier is hoe haar oplossing werkt, vertaald naar alledaags taal:

1. Het Probleem: De Stomme Briefjes

Normaal gesproken beschrijven restaurants hun menu's (de API's) met een lijstje: "Je kunt een taart bestellen, en je krijgt een taart." Maar dit zegt niets over de regels.

  • Mag je een taart bestellen als de koelkast leeg is?
  • Als ik een taart bestel, is hij dan echt vers?
  • Als ik een taart terugbreng, is hij dan echt weg?

De huidige beschrijvingen zijn te vaag. Ze vertellen je wat er gebeurt, maar niet hoe het zou moeten werken of wat de grenzen zijn. Daarom maken veel restaurants (bedrijven) nu de fout om over te stappen op deze microservice-architectuur zonder goed te testen. Het is alsof je een restaurant opent zonder ooit te proeven of het eten veilig is.

2. De Oplossing: Een Slimme Vertaler (APOSTL)

Ana heeft een nieuwe taal bedacht, genaamd APOSTL. Denk hierbij aan een vertaler die de saaie menukaart omzet in een contract met regels.

In plaats van alleen te zeggen "Taart bestellen", zegt APOSTL:

  • Voorwaarde (Precondition): "Je mag pas een taart bestellen als de koelkast vol is."
  • Garantie (Postcondition): "Als je een taart bestelt, moet hij er binnen 5 minuten zijn en moet hij op je briefje staan."
  • Regel (Invariant): "Er mogen nooit meer dan 50 taarten tegelijk in de koelkast staan."

APOSTL voegt deze logische regels toe aan de bestaande beschrijvingen. Het maakt van een simpele lijstje een strikt contract.

3. De Testrobot (PETIT)

Vervolgens heeft ze een robot gebouwd, genaamd PETIT. Deze robot is de super-tester.

  • Hij leest het contract: PETIT kijkt naar de APOSTL-regels.
  • Hij bedenkt proefjes: In plaats van willekeurig taarten te bestellen (wat vaak leidt tot saaie of onmogelijke bestellingen), bedenkt PETIT slimme scenario's. "Laten we eens proberen een taart te bestellen terwijl de koelkast leeg is, om te zien of de kok de regels volgt."
  • Hij test en controleert: De robot stuurt de bestelling, kijkt naar het antwoord en vergelijkt het met het contract.
    • Gaat het goed? De robot zegt: "Oké, de taart is er en hij is vers."
    • Gaat het fout? De robot schreeuwt: "Stop! De koelkast was leeg, maar de kok deed toch een taart! Dat mag niet volgens het contract!"

4. De Slimme Strategie: De Orde van Dingen

Een van de slimste dingen die PETIT doet, is het volgorde-probleem oplossen.
Stel je voor dat je een restaurant test.

  • Als je eerst probeert een taart te bestellen (Constructor), moet de koelkast leeg zijn.
  • Als je daarna probeert een taart te verwijderen (Mutator), moet er eerst een taart zijn.
  • Als je probeert te kijken wat er in de koelkast ligt (Observer), moet er iets in zitten.

PETIT is slim genoeg om te weten: "Ik moet eerst de taarten maken, dan ze verplaatsen, en dan kijken." Maar het kan ook testen wat er gebeurt als je de regels breekt: "Wat gebeurt er als ik probeer een taart te verwijderen die er niet is?"

De robot kan verschillende strategieën gebruiken (zoals eerst bouwen, dan slopen, dan kijken) om zeker te weten dat het restaurant onder alle omstandigheden werkt.

5. Waarom is dit belangrijk?

Vandaag de dag bouwen bedrijven enorme digitale systemen die uit honderden van deze kleine "kokjes" bestaan. Als één kok een fout maakt, kan het hele restaurant in de war raken.

Ana's werk is als het bouwen van een automatische keuringscommissie die 24/7 werkt. Ze zorgt ervoor dat:

  1. We niet hoeven te wachten tot klanten klagen over rotte taarten.
  2. We niet handmatig elke mogelijke situatie hoeven te testen (wat onmogelijk is).
  3. We zeker weten dat de software doet wat er beloofd wordt, zelfs als we de code niet mogen zien.

Kort samengevat:
Ana heeft een taal bedacht om regels toe te voegen aan software-beschrijvingen, en een robot gebouwd die die regels gebruikt om automatisch te controleren of de software werkt zoals beloofd. Het is alsof je een onzichtbare keurmeester hebt die elke dag in je restaurant komt om te proeven of de kok zich aan de regels houdt, zodat jij je zorgen kunt maken om het eten in plaats van om de techniek.

Verdrinkt u in papers in uw vakgebied?

Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.

Probeer Digest →