Hogyan teszik tesztadat-generátorunk a hamis adatokat valóságosnak

Nemrég kiadtuk a DataFairy nevű ingyenes teszteszközöket előállító eszközt. De először hadd mondjam el, hogyan is történt.

Ez a történet arról, hogyan változtattunk egy szórakoztató nyílt forráskódú mellékprojektet olyanná, ami valóban hasznosnak bizonyult.

Ez nem álhírekről vagy tömegek becsapásáról szól. De tény, hogy a fejlesztők, a szoftvertesztelők és bárki számára, aki valaha bemutatott demót, a hamis adatok elengedhetetlenek, és meglepően nehéz pótolni a feje tetején.

A hamis adatokkal ellátott történetünk akkor kezdődik, amikor először fejlesztettük a SaaS eszközt, a Devskillert. Mint minden alkalmazáshoz, itt is szükségünk volt felhasználókra. Ekkor még fizető felhasználókat sem kerestünk. Csak jelentkező profilokra volt szükségünk a jelentkezéshez. Amire szükségünk volt, az valósnak tűnő áladatokra volt szükségünk.

Szükségünk volt egy tesztadat-generátorra

Pár okból hamis adatokra volt szükségünk:

1. Meg kellett néznünk, hogy működik-e a rendszerünk

Ez azt jelentette, hogy számos különböző próbaprofilt kellett készítenünk, hogy lássuk, a rendszer megfelelően tárolta-e és megjelenítette-e őket.

2. El kellett adnunk a termékünket

Demókat kellett készítenünk első leendő ügyfeleink számára. Meg akartuk mutatni ügyfeleinknek, hogyan néz ki a rendszer 6 hónapos meghívás és több száz jelölt tesztelése után.

Első gondolatunk az volt, hogy keressünk egy elérhető tesztadat-generátort. De a probléma az, hogy az adatokat nehéz meggyőzően hamisítani. Kérdezd meg ezt a fickót,

vagy ő,

Sok adatot algoritmikusan validálnak

Ha könnyű volt meggyőző adatokat előállítani, valószínűleg nincs szükségünk eszközre. De az adatok előállítása néhány okból bonyolult lehet.

A hamis adatok nem csak véletlenszerű számok. Vegyünk egy példát egy hitelkártyaszámra. A legtöbb hitelkártyaszám egy úgynevezett Luhn-algoritmuson alapul. Ennek magyarázatához a Visa kártya példáját fogjuk használni:

Hogyan ellenőrizhető, hogy érvényes-e a hitelkártya-szám

Mielőtt elkezdené, fontos tudni, hogy az összes Visa kártya száma 4-gyel kezdődik. Valamennyi számuk 16 vagy 13 számjegyből áll.

Vegye fel ezt a Visa kártya számot:

Az első dolog, amit meg kell tennie annak ellenőrzéséhez, hogy érvényesíteni tudja-e a számot, megduplázza a váltakozó számokat a sorozat első számjegyével kezdődően.

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

Ha az imént végzett duplázás két számjegyből álló számot eredményez, adja össze őket, hogy egyjegyű számot kapjon.

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

Ezután vissza kell térnie az eredeti hitelkártyaszámra, és ki kell cserélnie azokat a számjegyeket, amelyekkel megduplázta az új értéket.

8554885405652537

Ez lehet akár a duplázási érték, akár az értékek táblázata, a számjegyeket összeadva. Most add össze az egészet.

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

Ezután ellenőrizze, hogy az összeg egyenletesen osztható-e 10-vel. Ebben az esetben van, tehát a szám érvényes.

Valamiféle számítási algoritmusra van szükség a hitelkártyaszámok skálán történő érvényesítéséhez. De a hitelkártyaszámok viszonylag könnyen helyrehozható adatok. Nem csak egyes ellenőrizhető adatokra volt szükségünk, hanem teljes profilokra.

Az ellenőrizhető profilokhoz különféle típusú adatokra van szükség, amelyek logikailag kapcsolódnak egymáshoz

A hitelkártyaszámokat viszonylag könnyű előállítani, mert csak önmagukra vonatkoznak. De a személyi azonosító számok gyakran kapcsolódnak más dolgokhoz. Vegyük a svéd személyi azonosító számot, amelyet gyakorlatilag személyi névnek hívnak.

Azok számára, akik nem tudják, a személyi adószámokat adófizetésre tervezték, mintegy amerikai társadalombiztosítási számhoz hasonlóan. De használják őket olyan szolgáltatások elérésére is, mint az egészségügy és az iskolák, valamint a nem kormányzati szolgáltatásokat, például a hitelminősítéseket.

A személyi formátum kissé eltér a hitelkártyától. Ez egy tízjegyű szám, hat számjegyű szakaszra és kötőjellel összekötött négyjegyű szakaszra osztva.

Hűvös tény: A 100 évesnél idősebb svédek plusz előjelre cserélik a kötőjelet a személyi ünnepükön.

A személyi adatok első hat számjegye egyszerű és YYMMDD formátumban megegyezik a személy születésnapjával. A második négyjegyű részből az első három sorszám. A harmadik sorszámjegy furcsa a férfiak és a nők esetében is. Az utolsó szám ellenőrző összegű számjegy.

Tehát, ha veszi a személyt:

601128–9235

Tudod, hogy egy 1960. november 28-án született férfinak szól.

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

Az ellenőrző összeg kiszámításához szorozza meg az egyedi számokat az azonosító számban a megfelelő számokkal a 212121–212 számban.

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

Csakúgy, mint a fenti Visa kártyánál, ha ezen számok bármelyikének szorzata kétjegyű számot eredményez, egyszerűen adja össze a két számjegyet.

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

Adja hozzá az összes többi terméket.

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

Az ellenőrző összeg számának megszerzéséhez vonja le a hozzáadott termékek utolsó számjegyét 10-ből (kivétel az, hogy ha az utolsó számjegy nulla, akkor az ellenőrző összeg is nulla).

10–5=5

Tehát, ha ennek a személynek a profilját akarja létrehozni, akkor nem egy nő lehet, aki 1916. április 10-én született. Személyének a következőnek kell lennie: 160410 + 1244. Más szavakkal, nem csak egy véletlenszerű számmal állhatott elő, és nem várhatta el, hogy az bármilyen általad létrehozott hamis profillal működni fog.

Logikus tesztadatokra volt szükségünk

Az adatoknak logikus módon kell kapcsolódniuk egymáshoz, mivel a személyi adatlap nem az egyetlen olyan adat, amely külső információkra épül. Az azonosító számok legtöbb típusa valamilyen módon kapcsolódik más információkhoz. Egyszerűen nem találtunk egy tesztadat-generátort, amely ezt megtehette volna, ezért úgy döntöttünk, hogy elkészítjük a sajátunkat. Úgy tűnik, nem csak nekünk volt ilyen problémánk.

JFairy

Mivel a nyílt forráskódú közösség rendszeres munkatársai vagyunk, úgy döntöttünk, hogy a szükséges tesztadatok előállításának legjobb módja a saját könyvtár felépítése. A JFairy néven az volt a célunk, hogy az összes ellenőrizhető és logikailag összekapcsolt adatkészletet hozzon létre.

Így feltölthettük az alkalmazást a felhasználókkal. Felhasználói adataink nem voltak hamisak, vagy pedig nem számíthatók be. Tehát a könyvtárat munkába állítottuk, és jobban teljesített, mint amire számíthattunk. Időnként még valódi embereket is generál. Ezt megtudtuk, mert a Gravatart használtuk a jelölt képek megjelenítésére. Meglepődtünk, amikor egy igazi fotó jelent meg a tesztfiókon.

Ez akkor volt igazán hasznos, amikor elkezdtünk vásárolni az alkalmazásunk körül. Szerettünk volna a vállalati ügyfeleknek egy fiókot mutatni, amelyen 300 különböző tesztjelölt szerepel a platformon. Ha nem építettük volna fel a JFairy-t, lehet, hogy mindannyian megpróbáltuk néhányszor használni az alkalmazást, de csak öten voltunk a csapatban. Nem lett volna célszerű ötünknek 300 logikusan összekapcsolt hamis profilt előállítani.

A JFairy által generált adatok annyira meggyőzőnek bizonyultak, hogy az új ügyfelek értetlenkedtek abban, hogy hová vittük ezeket az embereket. Valójában azt kérdezték tőlünk, hogy segíthetünk-e nekik az új fejlesztők beszerzésében, mivel nyilvánvalóan számos olyan emberrel voltunk kapcsolatban, akik technikai háttérrel rendelkeznek, és akik közül néhánynak igazolt képességei vannak.

Hagynunk kellett, hogy a nyílt forráskódú közösség megnézze a JFairy-t

Rájöttünk, hogy ez valami nagyobb dolog lesz, mint mi magunk, ezért úgy döntöttünk, hogy a rendszert nyílt forráskódra helyezzük. Az első ok az, hogy mindannyian lelkesen használjuk a nyílt forráskódot. Tudjuk, hogy fontos visszaadni ezt a közösséget annak érdekében, hogy a dolgokat cserébe kapjuk. Ráadásul a nyílt forráskód valódi hasznot hozhat a termékben. Ha úgy helyezzük el a projektünket, hogy számos különféle fejlesztő meg tudja nézni, akkor olyan új ötleteket kaphatunk, amelyeket soha nem vettünk volna figyelembe.

A legjelentősebb hozzájárulás az új nyelvek felvétele volt. Csak azért építettük a JFairy-t, hogy angolul és lengyelül beszélők számára készítsünk adatokat. Hiszen meglehetősen korlátozottak a jól ismert nyelvek. De természetesen hasznos eszköz lehet számos különböző országból érkező emberek számára. Nyílt forráskódú hozzájárulások révén támogatást tudtunk adni spanyol, francia, német, svéd és kínai adatokhoz.

Arra is rájöttünk, hogy bár a szoftverfejlesztők nagy felhasználói csoportját érjük el, a Jfairy-nek jóval meghaladó alkalmazásai voltak a közösségen, amelynek tagjai tudnak kódolni. Ezért úgy döntöttünk, hogy a könyvtár sikerére építünk, és létrehozunk egy alkalmazást, amely támogatná a használatát több alkalmazás és több ember számára.

Az Adattündér mindenki számára hozzáférést biztosít a hamis adatokhoz

A JFairy szuper hasznosnak bizonyult a fejlesztők számára, akik tudtak kódolni, de nem csak ők használták a JFairy által generált adatokat. A szoftver tesztelőknek képesnek kell lenniük a rendszerek feltöltésére, hogy lássák, működnek-e. Az értékesítőknek és a marketingszakembereknek adatokra van szükségük ahhoz, hogy demóik valósághűnek tűnjenek. Ahhoz, hogy a JFairy a legtöbb ember számára hasznos legyen, hamis adatait könnyen hozzáférhetővé kellett tennünk.

Ezt a célt szem előtt tartva hoztuk létre a DataFairy-t. A DataFairy egy olyan alkalmazás, amelyet a JFairy üzemeltet, így hozzáférhet hamis adatainkhoz anélkül, hogy először meg kellene tanulnia kódolni. Az adatokat egy ügyes notebook felületen mutatjuk be. Egynél több hamis profil megszerzéséhez létrehozhat új profilt, vagy akár 100 profilt tartalmazó tömeges listát is exportálhat egy CSV-fájlba. Ez egy ingyenes és egyszerű módszer a szoftver logikusan összekapcsolt érvényes adatokkal történő feltöltésére.

A DataFairy jövőjével kapcsolatos terveink

A DataFairy mindig javítható és új funkciókkal bővíthető. Saját erőfeszítéseink mellett szeretnénk ragaszkodni a nyílt forráskódú közösség bérlőihez. Továbbra is új nyelveket kérünk, amelyeket felvehetünk a névsorunkba, és nyílt GitHub projektünk van. Azt is szeretnénk, ha a felhasználók végül mintaadatokat adnának hozzá. Ez segít a résztvevők közösségének kiépítésében, akik elősegítik a DataFairy növekedését és hasznosabbá válását több ember számára.

Akár nagy mennyiségű, logikailag ellenőrzött adatot kell letöltenie, vagy egyszerűen csak szórakozni szeretne a felbukkanó profilok olvasásával, nézze meg a DataFairy oldalt.