Standaardtests
Testen staat standaard aan in een genormaliseerd recept, met vier vooraf
gedefinieerde testnamen: boot, login, packages en network. Dit zijn
kleine gastcontroles, geen volledige acceptatiesuite. Een recept kan testen
uitschakelen of de lijst vervangen, en sommige artefacttypen hanteren een
smaller contract.
Wat de defaults echt bewijzen
| Test | Uitgevoerde controle | Bewijst niet |
|---|---|---|
boot | uptime eindigt succesvol via de QEMU guest agent | Elk bootloaderpad, hardware-boot of afwezigheid van kernelwaarschuwingen |
login | whoami kan draaien via het root guest-agent-kanaal | Interactief wachtwoord, SSH-sleutel, PAM, desktop-greeter of login van eindgebruiker |
packages | Een van dpkg --list, rpm -qa of pacman -Q slaagt | Dat elk door de prompt gevraagd pakket is geïnstalleerd |
network | DNS lost example.com op en een TCP-verbinding naar poort 443 slaagt na begrensde retries | Algemene internetgezondheid, HTTP-inhoud, elke interface of een air-gapped ontwerp |
Het Ubuntu 24.04 CIS-pad verwijdert de generieke netwerkcontrole en gebruikt in plaats daarvan zijn readiness-gated feature assertion. Een recept zonder verwachte internetroute kan een mislukte generieke netwerkcontrole laten omzetten in een waarschuwing.
Feature- en capability-controles
De runner voegt ook controles samen uit ingeschakelde feature-metadata, legacy hook test files, het frozen capability plan, expliciete custom tests en benchmark tests. Dubbele assertions worden verwijderd. Assertions met bekende ontbrekende parameters worden gedropt met een serverwaarschuwing; controleer het resulterende testplan zodat een gedropte controle niet voor een geslaagde test wordt aangezien.
Voorbeelden zijn de geconfigureerde SSH-poort, servicestatus, een gevraagd pakket of een receptspecifiek artefact. Dekking hangt af van de ingeschakelde feature: een feature opnemen garandeert op zichzelf geen volledige set assertions voor die feature.
Het resultaat lezen
Gebruik de assertionrijen en het bewijs, niet alleen de aggregate badge:
passedbetekent dat de uitvoerbare controle het verwachte resultaat teruggaf.failedbetekent dat de controle draaide en in tegenspraak was met de verwachting.errorbetekent dat de harness geen verdict kon produceren.skippedbetekent dat de controle niet draaide, bijvoorbeeld omdat de doel-VM ontbrak.
Errors en skips zijn geen passes. Een voltooide image en een geslaagde testrun zijn aparte toestanden; certificering is een derde poort.
Sterkere acceptatiecriteria definiëren
Voor een echte workload voeg je prompt-relevante assertions toe. Bijvoorbeeld:
{
"description": "Nginx serves the local health endpoint",
"assertions": [
{
"type": "service_running",
"description": "Nginx is active",
"params": { "service": "nginx" }
},
{
"type": "http_responds",
"description": "Health endpoint returns 200",
"params": { "url": "http://localhost/health", "status": 200 }
}
]
}Inspecteer vervolgens de gebouwde image in de console en test claims die aan hardware gebonden zijn op representatieve hardware. Zie Eigen assertions en Assertietypen.