Hvordan vores testdatagenerator får falske data til at se rigtige ud

Vi har for nylig frigivet DataFairy, et gratis værktøj, der genererer testdata. Men lad mig først fortælle dig historien om, hvordan det opstod.

Dette er historien om, hvordan vi forvandlede et sjovt open source-sideprojekt til noget, der har vist sig at være virkelig nyttigt.

Dette handler ikke om falske nyheder eller om at narre masserne. Men faktum er, at for udviklere, softwaretestere og virkelig alle, der nogensinde har givet en demo, er falske data vigtige og er overraskende vanskelige at gøre op fra toppen af ​​dit hoved.

Vores historie med falske data starter tilbage, da vi først udviklede vores SaaS-værktøj, Devskiller. Som alle applikationer havde vi brug for brugere. Vi ledte ikke engang efter betalende brugere på dette tidspunkt. Vi havde bare brug for kandidatprofiler til vores ansøgning. Hvad vi havde brug for var dummy data, der så virkelige ud.

Vi havde brug for en testdatagenerator

Vi havde brug for falske data af et par grunde:

1. Vi havde brug for at se, om vores system fungerede

Dette betød, at vi havde brug for at opbygge et antal forskellige dummy-profiler for at se, om systemet lagrede og viste dem korrekt.

2. Vi havde brug for at sælge vores produkt

Vi havde brug for at lave demoer for vores første potentielle kunder. Vi ønskede at vise vores kunder, hvordan systemet ville se ud efter 6 måneders indbydelse og test af hundreder af kandidater.

Vores første tanke var at lede efter en tilgængelig testdatagenerator. Men problemet er, at data er svære at falske overbevisende. Bare spørg denne fyr,

eller ham,

En masse data valideres algoritmisk

Hvis det var let at fremstille overbevisende data, havde vi sandsynligvis ikke brug for et værktøj. Men at generere data kan være vanskelig af et par årsager.

Falske data er mere end bare tilfældige tal. Tag eksemplet med et kreditkortnummer. De fleste kreditkortnumre er baseret på noget, der kaldes en Luhn-algoritme. For at forklare dette skal vi bruge eksemplet på et Visa-kort:

Sådan kontrolleres, om et kreditkortnummer er gyldigt

Før du starter, er det vigtigt at vide, at alle Visa-kortnumre starter med en 4. De har også enten 16 eller 13 cifre.

Tag dette Visa-kortnummer:

Den første ting, du skal gøre for at se, om du kan validere nummeret, er at fordoble de skiftende cifre startende med det første ciffer i sekvensen.

4574487405351567
(4x2), (7x2), (4x2), (7x2), (0x2), (3x2), (1x2), (6x2)
8, 14, 8, 14, 0, 6, 2, 12

Hvis den fordobling, du lige har gjort, resulterer i et tal med to cifre, skal du tilføje dem sammen for at få et enkelt cifret nummer.

8, 5, 8, 5, 0, 6, 2, 3

Du skal derefter gå tilbage til det originale kreditkortnummer og erstatte de cifre, som du fordoblede den nye værdi.

8554885405652537

Dette kan enten være dobbeltværdien eller værditabellen med cifrene tilføjet sammen. Tilføj nu det hele.

8+5+5+4+8+8+5+4+0+5+6+5+2+5+3+7=80

Og kontroller derefter, om summen er jævnt delelig med 10. I dette tilfælde er det, så tallet er gyldigt.

Du har brug for en slags beregningsalgoritme for at validere kreditkortnumre i skala. Men kreditkortnumre er relativt nemme data at få ret. Vi havde ikke bare brug for individuelle stykker verificerbare data, vi havde brug for hele profiler.

Verificerbare profiler har brug for forskellige slags data, der logisk er relateret til hinanden

Kreditkortnumre er relativt lette at generere, fordi de kun vedrører sig selv. Men personlige identitetsnumre vedrører ofte andre ting om en person. Tag det svenske personnummer, praktisk kaldet personnummeret.

For dem af jer, der ikke ved, er personnumre designet til at betale skat, ligesom et amerikansk socialsikringsnummer. Men de bruges også som en måde at få adgang til tjenester som sundhedspleje og skoler samt ikke-statslige tjenester som kreditvurderinger.

Formatet på et personnummer er lidt anderledes end et kreditkort. Det er et 10-cifret nummer opdelt i et sekscifret afsnit og et firecifret afsnit forbundet med en bindestreg.

Sej kendsgerning: Svensker over 100 år erstatter bindestreg i deres personnummer med et plustegn.

De første seks cifre i personnummeret er enkle og svarer til personens fødselsdag ved hjælp af et YYMMDD-format. Af det andet 4-cifrede afsnit er de første tre et serienummer. Det tredje serienummer ciffer er ulige for mænd og endda for kvinder. Det sidste tal er et kontrolsumstal.

Så hvis du tager personnummeret:

601128–9235

Du ved, at det er for en mand født 28. november 1960.

60(year)11(month)28(day)-(under 100 years old)92(unique numbers)3(unique odd number for male)5(checksum digit)

For at beregne kontrolsummen multipliceres de enkelte cifre i identitetsnummeret med de tilsvarende cifre i nummeret 212121–212.

(6x2)(0x1)(1x2)(1x1)(2x2)(8x1)(9x2)(2x1)(3x2)
12, 0, 2, 1, 4, 8, 18, 2, 6

Ligesom med Visa-kortet ovenfor, hvis produktet af et af disse tal resulterer i et tocifret nummer, skal du blot tilføje de to cifre sammen.

3, 0, 2, 1, 4, 8, 9, 2, 6

Tilføj alle de resterende produkter sammen.

3+0+2+1+4+8+9+2+6=35

For at få kontrolsifret skal du trække det sidste ciffer fra de tilføjede produkter fra 10 (undtagelsen er, at hvis det sidste ciffer er nul, er kontrolsummen også nul).

10–5=5

Så hvis du skulle generere en profil for denne person, kunne det ikke være af en kvinde født den 10. april 1916. Hendes personnummer skulle være noget som: 160410 + 1244. Med andre ord kunne du ikke bare komme med et tilfældigt tal og forvente, at det fungerer med en hvilken som helst falsk profil, du har genereret.

Vi havde brug for logiske testdata

Dataene skal være relateret til hinanden på en logisk måde, da personnummeret ikke er det eneste stykke data, der bygger på information udefra. De fleste typer identifikationsnumre relaterer sig til anden information på en eller anden måde. Vi kunne simpelthen ikke finde en testdatagenerator, der ville gøre det, så vi besluttede at bygge vores egen. Det ser ud til, at vi ikke var den eneste, der havde dette problem.

JFairy

Som regelmæssige bidragsydere til open source-samfundet besluttede vi, at den bedste måde at generere de testdata, vi havde brug for, var at bygge vores eget bibliotek. Kaldt JFairy, vores mål var, at det skulle generere datasæt, som alle var verificerbare og logisk forbundet.

På denne måde kunne vi udfylde vores app med brugere. Vores brugerdata kunne ikke være gibberish eller ellers kunne de ikke tilskrives. Så vi satte biblioteket i gang, og det klarede sig bedre, end vi kunne have forventet. Det genererer endda rigtige mennesker fra tid til anden. Vi fandt ud af det, fordi vi brugte Gravatar til at vise kandidatens billeder. Vi blev overraskede, da et rigtigt foto dukkede op på vores testkonto.

Dette var virkelig nyttigt, da vi begyndte at shoppe rundt i vores app. Vi ønskede at vise virksomhedskunder en konto med 300 forskellige testkandidater på platformen. Hvis vi ikke havde bygget JFairy, havde vi måske alle forsøgt at bruge appen et par gange, men vi var kun fem på holdet. Det ville have været upraktisk for de fem af os at komme med 300 logisk forbundne falske profiler.

De data, der blev genereret af JFairy, viste sig at være så overbevisende, at nye kunder var forvirrede over, hvor vi havde fået alle disse mennesker til at teste. Faktisk spurgte de os, om vi kunne hjælpe dem med at købe nye udviklere, da vi tydeligt var i kontakt med et antal mennesker med teknisk baggrund, hvoraf nogle faktisk havde validerede færdigheder.

Vi havde brug for at lade open source-samfundet se på JFairy

Vi indså, at dette blev noget større end os selv, så vi besluttede at lægge systemet ud på open source. Den første grund er, at vi alle er ivrige brugere af open source-kode. Vi ved, at det er vigtigt at give tilbage til det samfund for at få tingene tilbage. Men derudover kan open source bringe reelle fordele tilbage til produktet. Ved at placere vores projekt derude, så en række forskellige udviklere kan se på det, kan vi få nogle nye ideer, som vi aldrig ville have overvejet.

De mest bemærkelsesværdige bidrag var inkluderingen af ​​nye sprog. Vi byggede kun JFairy til at generere data til engelsktalende og polsktalende. Når alt kommer til alt er vi ret begrænsede af de sprog, vi kender godt. Men selvfølgelig kan det være et nyttigt værktøj for folk fra et hvilket som helst antal forskellige lande. Gennem open source-bidrag har vi været i stand til at tilføje support til data på spansk, fransk, tysk, svensk og kinesisk.

Vi indså også, at Jfairy havde applikationer langt ud over et samfund, hvis medlemmer ved, hvordan de skal kode, mens vi når ud til en stor gruppe brugere i softwareudviklere. Så vi besluttede at bygge videre på bibliotekets succes og oprette en app, der kunne understøtte dens anvendelse til flere applikationer og flere mennesker.

Data Fairy giver alle adgang til falske data

JFairy viste sig at være super nyttigt for udviklere, der vidste, hvordan man kodede, men de var ikke de eneste derude, der ville bruge de data, JFairy genererede. Softwaretestere skal være i stand til at udfylde deres systemer for at se, om de fungerer. Sælgere og marketingfolk har brug for data for at få deres demoer til at se realistiske ud. For at gøre JFairy nyttigt for de fleste mennesker var vi nødt til at gøre dens falske data nemme at få adgang til.

Med dette mål i tankerne byggede vi DataFairy. DataFairy er en app drevet af JFairy, så du kan få adgang til vores falske data uden først at skulle lære at kode. Dataene præsenteres i en pæn notebook-interface. For at få mere end en falsk profil kan du enten generere en ny profil eller eksportere en bulkliste med op til 100 profiler til en CSV-fil. Det er en gratis og nem måde at udfylde din software med logisk tilsluttede gyldige data.

Vores planer for DataFairys fremtid

DataFairy kan altid forbedres og få nye funktioner tilføjet til det. Ud over vores egen indsats vil vi holde os til lejere i open source-samfundet. Vi fortsætter med at bede om nye sprog, som vi kan føje til vores liste, og vi har et åbent GitHub-projekt. Vi vil også gerne have, at brugerne til sidst tilføjer eksemplerdata. Dette vil hjælpe os med at opbygge et fællesskab af deltagere, der vil hjælpe DataFairy med at vokse og blive mere nyttige for flere mennesker.

Uanset om du har brug for at downloade store batcher af logisk validerede data eller bare vil have det sjovt at læse de profiler, der dukker op, skal du tjekke DataFairy.