Uitgelegd · drie

Hoe we testen, volledig

We publiceren vergelijkingen met andermans software, dus de methode moet controleerbaar zijn. Dit is de hele methode: de machines, de inhoud, de instellingen die elke client krijgt, en de regels die bepalen of een run als resultaat telt of wordt weggegooid.

De testopstelling

Dezelfde machine, dezelfde lijn, dezelfde inhoud

Elke client in een vergelijking draait op één machine, tegen dezelfde providers, op dezelfde inhoud, binnen dezelfde ronde. Er wordt niets meegenomen van een eerdere dag.

De regel die alles bepaalt

Een client wordt beoordeeld op het bestand, niet op zijn eigen statusmelding

Dit is verreweg het belangrijkste op deze pagina. Elke run eindigt door het grootste bestand te zoeken dat de client heeft geproduceerd, waar dan ook in zijn uitvoer, en dat te hashen tegen een bekend goede kopie. Grootte en MD5, bij elke run, niet steekproefsgewijs.

We doen dit omdat het eigen succesbericht van een client geen betrouwbaar bewijs is. We hebben een client gemeten die done meldde bij een taak waarvan de uitvoermap leeg was. We hebben er nog een gemeten die Completed meldde na het afleveren van ruwe archiefvolumes die hij nooit had uitgepakt. Een veelgebruikt reparatiehulpmiddel eindigt met een foutcode na een geslaagde reparatie. Geen van die clients loog; statusteksten betekenen bij verschillende auteurs eenvoudigweg iets anders, en een benchmark die erop vertrouwt meet woordkeus in plaats van gedrag.

De eindstreep is dus voor iedereen dezelfde: de inhoud bestaat, met de juiste grootte en de juiste hash. Stopt een client daarvoor, dan krijgt hij geen tijd, en wordt de hele kolom gemarkeerd in plaats van stilletjes weggelaten. Een trage client die klaarkomt doet het beter dan een snelle die dat niet doet, en de tabel hoort dat te zeggen.

Het gevolg is dat niet-halen een resultaat is, geen fout van onze kant. Publiceren we er een, dan beschrijven we de eindtoestand in gewone woorden, inclusief alles wat erop wijst dat het specifiek voor die taak is en niet algemeen, en we zeggen wat de client in plaats van afmaken wél deed.

Volgorde en herhaling

Waarom runs elkaar afwisselen, en waarom losse runs niet worden gepubliceerd

De doorvoer van providers wisselt van minuut tot minuut, soms met een factor twee of drie. Twee metingen op verschillende momenten meten voor een deel het weer.

Clients draaien daarom direct achter elkaar en om en om, en de volgorde keert tussen herhalingen om, zodat geen client altijd degene is die als eerste een warme of koude lijn opgaat. Een resultaat is het patroon over de herhalingen heen, niet de beste run. Bij een grote spreiding publiceren we het bereik in plaats van een gemiddelde dat het zou verhullen, en als we niet weten waarom de cijfers van een client uiteenlopen, zeggen we dat in plaats van een oorzaak te verzinnen.

Vergelijkingen tussen verschillende rondes vermijden we waar mogelijk. Vraagt een bewering om twee cijfers, dan laten we ze liever allebei opnieuw draaien in één ronde dan dat we het cijfer van de ene dag van dat van de andere aftrekken, want de staat van de opstelling, de providercondities en de clientversies verschuiven allemaal. Vergelijken we twee van onze eigen builds, dan draaien beide in dezelfde ronde, om en om, op dezelfde inhoud.

De ongelijke controles

Wat er voor en tijdens elke run draait

De meeste bestaan omdat een stille storing ooit een gezond ogend, publiceerbaar en verkeerd getal opleverde. Elk ervan draait nu automatisch en zet de ronde stop in plaats van te waarschuwen.

Waar een client bepaalde instellingen nodig heeft om goed te presteren, krijgt hij die, en de ronde vermeldt welke. Voorbeelden: verzoeken bundelen aangezet waar een client het uit levert, dubbelcontrole uitgezet wanneer dezelfde taak herhaaldelijk wordt gedownload, en uitpakhulpjes uit het eigen pakket van de client in plaats van een systeemkopie. Het doel is dat elke client op zijn best wordt gemeten in plaats van op zijn standaardwaarden, want standaardwaarden zijn een discussie los van kunnen.

Wat we niet zullen doen

De grenzen van deze cijfers