Een parser die één goed XML-rapport accepteert, heeft slechts een beperkte test doorstaan. Een handig validatiepakket controleert wat het extraheert, wat het afwijst, hoe het omgaat met ondersteunde variaties en of nieuwe pogingen de totalen veranderen. Behandel verwachte genormaliseerde waarden als onderdeel van het armatuur, en niet als een resultaat dat de test mag uitvinden.
Verklaar het ondersteunde contract
Referenties: RFC 9990 §3.1.1, RFC 9990 §3.2.
Registreer de parser-, runtime-, decompressor- en schemaversies. Geef aan welke rapportformaten en extensies worden ondersteund en hoe met verouderde invoer wordt omgegaan. RFC 9990 definieert het huidige aggregatieformaat en uitbreidingsmodel; ondersteuning voor oudere formaten is een afzonderlijke compatibiliteitsbeslissing.
Bouw eerst een minimaal geldig armatuur. Bewaar de bytes, hash, verwachte metadata, interval, bron-IP, aantal, identiteiten en afgestemde resultaten. Beschouw succesvol XML-parseren niet als voldoende: verifieer veldtypen en betekenissen. Houd ontbrekende optionele waarden gescheiden van ongeldige vereiste gegevens.
Test de veelvoorkomende semantische fouten
Referenties: RFC 9990 §3.1.1.9, RFC 9990 §3.1.1.11, RFC 9989 §5.3.5.
Inclusief rauw DKIM doorgeven onder een niet-gerelateerd domein met een uitgelijnde DKIM fout, en onbewerkt SPF voorbijgaan zonder uitlijning. Voeg een geval toe waarin het ene uitgelijnde mechanisme slaagt terwijl het andere faalt. Controleer of het genormaliseerde resultaat niet vereist dat beide mechanismen slagen of dat ruw succes gelijk wordt gesteld aan afstemming.
Voeg gerapporteerde dispositie toe die afwijkt van een simplistische gevolgtrekking uit gepubliceerd beleid. Behoud de beschikbare overschrijvingsredenen. Neem voor het huidige schema de ActionDispositionType-waardepass op in plaats van deze af te wijzen als een onbekende oude waarde; RFC 9990 Bijlage A definieert het voor passeren DMARC met een handhavingsbeleid. Houd de verwachtingen van oudere formaten expliciet gescheiden. Test meerdere DKIM resultaten zonder alles behalve de eerste handtekening te laten vallen. Het doel is om te behouden wat het rapport zegt, en niet om een nieuwe ontvangersevaluatie te fabriceren op basis van onvolledige gegevens.
Oefen structurele en veiligheidszaken
Referenties: RFC 9990 §3.2, RFC 9990 §8.1.
Referentie: OWASP XML-preventie van externe entiteiten, algemene richtlijnen.
Gebruik ongeldige vereiste waarden, verkeerd opgemaakte XML, ondersteunde extensies met naamruimte, niet-ondersteunde versies, ontbrekende optionele elementen en overmatig begrensd nesten. Test gecomprimeerde en uitgebreide groottelimieten, onderbroken invoer en onschadelijke externe referentiewachters afzonderlijk. Bepaal of elke invoer wordt geaccepteerd, in quarantaine geplaatst of afgewezen en waarom.
Een ondersteunde extensie mag niet stilletjes verdwijnen als downstream-analyse beweert deze te behouden. Een niet-ondersteunde constructie zou een expliciet compatibiliteitsresultaat moeten opleveren in plaats van opnieuw te worden geclassificeerd als mislukte authenticatie. Houd beveiligingstests klein en beperkt tot de beschikbare middelen; genereer geen destructieve werklast alleen maar om een limiet aan te tonen.
Controleer duplicaat- en transactiegedrag
Referenties: RFC 9990 §3.5.4.
Importeer een armatuur, speel het opnieuw en start de werker opnieuw voordat u het opnieuw speelt. Het getelde rapport moet enkelvoudig blijven onder de gedocumenteerde duplicaatregel. Voeg een andere bijlage toe die dezelfde rapportidentiteit claimt en een expliciete conflictbeslissing vereist. Identieke ID's alleen zijn geen toestemming om ander bewijsmateriaal zonder beoordeling weg te gooien.
Voeg een gecontroleerde onderbreking toe vóór de commit. Bevestig dat geen gedeeltelijke records de productiestatistieken beïnvloeden en dat een toegestane nieuwe poging één keer het verwachte resultaat oplevert. Test nul-observatieresultaten als niet beschikbaar, in plaats van te delen door nul of een perfect slagingspercentage te creëren.
Werk een acceptatierij af
Kunststof armatuur F1 bevat 90 waarnemingen met uitgelijnde DKIM passage en tien zonder uitgelijnde passeermechanisme. Het verwachte opgenomen aantal is 100 en het verwachte waargenomen aantal slagen is 90. Bij het opnieuw spelen van F1 moeten beide waarden ongewijzigd blijven. Een opzettelijk ingekorte kopie moet worden afgewezen zonder dat het totaal wordt verhoogd.
Sla de verwachte waarden op voordat u deze uitvoert. Vergelijk de werkelijke output, resourcemetingen en diagnostiek met die basislijn. Dit is een acceptatiespecificatie voor een parser, en geen claim dat een commerciële of tenant-parser deze heeft doorstaan. Een afzonderlijk nieuw offline reken-/herhalingsmodel controleert de 100/90-waarden en telt ongewijzigd op herhaalde identiteit; het parseert of valideert een RFC 9990 XML-rapport niet. Als een behuizing faalt, bewaar dan het defect en de exacte bevestiging, zodat een latere revisie deze kan reproduceren.
Poortwijzigingen op geregistreerde resultaten
Houd een matrix bij met de armatuur-ID, hash, doel, verwachte uitkomst, daadwerkelijke uitkomst, parserconfiguratie en beoordelingsbeslissing. Vereisen dat alle verplichte cases worden doorgegeven bij de geïmplementeerde revisie, met gedocumenteerde uitzonderingen voor niet-ondersteunde functies. Voer de bewerking opnieuw uit na wijzigingen in de afhankelijkheid of normalisatie en vergelijk historische metrische effecten voordat u opgeslagen rapporten opnieuw verwerkt. Parservalidatie moet zowel de systeembeschikbaarheid als de betekenis van de cijfers die mensen gebruiken voor beleidsbeslissingen beschermen.