FeedMender/Hoe we het weten
Bewijs
Hoe de controles bewezen worden
Een controle die geschreven, gedocumenteerd en in rekening gebracht is, maar die nooit echt afgaat: dat is het defect waar dit project de meeste moeite in heeft gestoken om het uit te roeien. Dus elke controle moet eerst aantonen dat hij kan afgaan op een echt bestand voordat hij mag meetellen, en het aantal zelf wordt uit de code gelezen in plaats van getypt.
Het getal is niet getypt
Er zijn 225 verschillende controles. Dat cijfer staat niet in deze pagina geschreven: het wordt bij het bouwen uit de broncode gelezen, uit hetzelfde register waar de testsuite zichzelf aan houdt. Een handmatig getypt aantal is een claim die niemand nacontroleert, en elke interne audit van dit project vond er een die verouderd was geraakt. Daarom wordt het getal op de volledige lijst met controles gegenereerd door een script dat de code leest, en als de code en het getal ooit van elkaar zouden afwijken, zou het getal bewegen, niet de code.
Een controle telt pas als hij afgaat op een echt bestand
Elke controle wordt geregistreerd met de route die hem bewijst. De meeste worden bewezen door een echt bestand helemaal door de pipeline te halen en de bevinding er aan het andere eind uit te zien komen; een paar hebben een geconstrueerde invoer nodig die één cel niet kan dragen, een beschadigd archief, een netwerkrespons of een modelaanroep. Dat onderscheid wordt afgedwongen, het is geen decoratie. Bewijzen dat een functie werkt door hem rechtstreeks aan te roepen zegt dat de functie werkt; het zegt niets over de vraag of het product hem ooit bereikt. De suite weigert dat soort bewijs voor een controle die claimt uit een echte scan te komen.
Hetzelfde register vangt de twee fouten af waardoor dode controles zich ophopen: een code die de broncode kan produceren maar die niemand heeft geregistreerd, en een geregistreerde code die de broncode niet meer produceert. Beide laten de suite falen. Twee controles zijn gemarkeerd als bewust onbereikbaar, bewaard als bescherming tegen een slechte upload die de scan laat crashen, en elk van die twee draagt een uitgeschreven reden waarom hij er is. Niets mag schouderophalend in de staat "kan niet afgaan" blijven staan.
Wat het recall-cijfer betekent, en wat niet
Op de synthetische feeds die we bouwen om tegen te testen is de recall 100 procent over drie formaten, xlsx, csv en xml, met nul false positives op een schone controlegroep. Onze demonstratiecatalogus bevat 55 verschillende defecttypen en elk daarvan wordt gedetecteerd.
Hier is de eerlijke grens daarbij. De defecten in die feeds hebben we er zelf in gestopt, dus het cijfer meet dat de scanner vangt wat wij bedacht hebben te planten. Het meet niet dat de scanner alles vangt wat een echte catalogus bevat, en de recall op echte merchantfeeds is werkelijk onbekend totdat echte merchantfeeds gescand zijn. We vertellen je dat liever dan het naar boven af te ronden. De gratis scan is de eerlijke manier om te ontdekken wat een echt bestand oplevert, en dat is deels waarom hij gratis is.
De false positives die we moesten oplossen
Het moeilijkste aan nuttig zijn is gelijk hebben wanneer een waarde technisch aanwezig maar betekenisloos is. Een generatiestap op een van onze testfeeds stelde ooit de kleur "Blue" voor bij een televisie, omdat de kleurkolom op het grootste deel van de catalogus Blue vermeldde. De waarde stond echt in de data van de merchant, en hij was toch fout. Wat het tegenhield was een relevantiefilter en een controle van elke voorgestelde waarde, woord voor woord, tegen de bronrij, allebei geschreven nadat we de fout zagen gebeuren.
Hetzelfde werk bracht andere gevallen aan het licht die het vastleggen waard zijn, omdat het het soort fout is dat vertrouwen stilletjes uitholt: een hint voor een EU-energielabel die matchte binnen een niet-gerelateerd Nederlands samengesteld woord, en een herschrijving die werd afgewezen om een verbuigingsverschil van twee tekens dat klopt voor het Engels en fout is voor een taal die woorden bouwt door ze aan elkaar te schrijven. Elk van die gevallen heeft nu zijn eigen regressietest, zodat dezelfde fout niet ongemerkt kan terugkeren.
Niets hiervan is een claim dat het af is. Het is een claim dat de controles die bestaan aantoonbaar kunnen afgaan, dat het aantal eerlijk is, en dat we duidelijk zijn over het verschil tussen getest en bewezen in de praktijk. Zie wat een bestand ons niet kan vertellen voor de andere helft van die eerlijkheid.