Programmeren (coding) gaat meestal in kleine (units) die dan later worden samengevoegd.
De eerste controle is de controle op syntax errors (taalfouten) deze controle / test wordt gedaan op het moment van compileren (compile - vertalen) van het code deel. In principe zou een syntax error dus niet in een stukje opgeleverde code mogen zitten.
Een tweede controle is een zogenaamde unit test er wordt getest of het geschreven stukje code aan de specificaties voldoet.
Bijvoorbeeld stukje codeblok dat plaats van een obsatkel moet opslaan kan worden getest voor rechthoekige voorwerpen en voor voorwerpen met een vreemde vorm ...
Als daarna meerdere units worden samengevoegd of een nieuw unit wordt ingepast moet worden getest of de blokken ook samen goed functioneren, dit noemen we een integratietest.
Bij de Roomba2K moet na het maken van de code die de route berekend ook wordne getest of dit goed samenwerkt met het al bestaande systeem van botsen en draaien.
Uiteindelijk zal het geheel moeten worden samengevoegd tot één systeem en dan weer getest, Niet verbazend spreken we dan over de systeemtest.
Tot slot wordt het gehele product opgeleverd aan de klant en volgt de test of het geheel aan de specificaties / requirement voldoet. Dit heet de acceptatietest. De klant / opdrachtgever zal na het slagen van deze test het geleverde accepteren en betalen.
* Merk op dat een verkeerde of vergeten requirement op dit moment nog steeds niet kan worden gevonden.
Zeker weten dat er geen fouten in de software (of het systeem) zit kan alleen door elke situatie te testen, wat in de praktijk meestal niet mogelik is of teveel tijd kost (testing can show the presence of bugs never their absence was één van de uitspraken).
Daarom is het van belang een slimme anpak te kiezen:
Bij de Roomba bijvoorbeeld:
Test op vuil dat in de hoeken en tegen meubels aanligt.
Test het zwaarsre vuil dat moet worden opgezogen bij en bijna volle Roomba.
Test wat er gebeurd als iemand meubels verschuift naar onverwachte plaatsen...