Як наш генератор тестових даних робить фальшиві дані реальними

Нещодавно ми випустили DataFairy, безкоштовний інструмент, який генерує тестові дані. Але спочатку дозвольте розповісти вам історію того, як це сталося.

Це історія про те, як ми перетворили веселий сторонній проект з відкритим кодом на те, що виявилося справді корисним.

Тут не йдеться про фейкові новини чи обману мас. Але факт залишається фактом: для розробників, тестувальників програмного забезпечення та для тих, хто хоч раз демонстрував демо-версію, фальшиві дані є надзвичайно важливими, і їх на диво важко вигадати.

Наша історія з фальшивими даними починається ще тоді, коли ми вперше розробили наш інструмент SaaS, Devskiller. Як і всі додатки, нам потрібні були користувачі. На даний момент ми навіть не шукали платників. Нам просто потрібні були профілі кандидатів для нашої заявки. Нам потрібні були фіктивні дані, які виглядали реальними.

Нам потрібен був тестовий генератор даних

Нам потрібні були фальшиві дані з кількох причин:

1. Нам потрібно було перевірити, чи працює наша система

Це означало, що нам потрібно було створити кілька різних фіктивних профілів, щоб перевірити, чи правильно їх зберігала та відображала система.

2. Нам потрібно було продати наш товар

Нам потрібно було зробити демонстраційні програми для наших перших потенційних клієнтів. Ми хотіли показати нашим клієнтам, як буде виглядати система після 6 місяців запрошення та тестування сотень кандидатів.

Наша перша думка полягала в пошуку доступного генератора тестових даних. Але проблема в тому, що дані важко підробляти переконливо. Просто запитай цього хлопця,

або його,

Багато даних перевіряється алгоритмічно

Якби було легко зробити переконливі дані, нам, мабуть, не знадобився б інструмент. Але отримання даних може бути складним з кількох причин.

Фальшиві дані - це більше, ніж просто випадкові числа. Візьмемо приклад номера кредитної картки. Більшість номерів кредитних карток базуються на чомусь, що називається алгоритмом Люна. Для пояснення цього ми будемо використовувати приклад картки Visa:

Як перевірити, чи дійсний номер кредитної картки

Перш ніж почати, важливо знати, що всі номери карток Visa починаються з 4. Крім того, всі вони мають або 16, або 13 цифр.

Візьміть цей номер картки Visa:

Перше, що вам потрібно зробити, щоб перевірити, чи можете ви перевірити число, - подвоїти чергуються цифри, починаючи з першої цифри в послідовності.

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

Якщо подвоєння, яке ви щойно зробили, призводить до числа з двома цифрами, складіть їх, щоб отримати одноцифрове число.

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

Потім потрібно повернутися до вихідного номера кредитної картки та замінити цифри, які подвоїли нове значення.

8554885405652537

Це може бути або значення подвоєння, або таблиця значень із додаванням цифр. Тепер складіть все це.

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

А потім перевірте, чи рівномірно сума ділиться на 10. У цьому випадку це так, тож число є дійсним.

Вам потрібен якийсь обчислювальний алгоритм для перевірки номерів кредитних карток у масштабі. Але номери кредитних карток - це відносно легкі дані, щоб отримати правильні дані. Нам потрібні були не просто окремі фрагменти даних, які можна перевірити, нам потрібні цілі профілі.

Перевіряються профілі потребують різних типів даних, які логічно пов’язані між собою

Номери кредитних карток порівняно легко генерувати, оскільки вони стосуються лише їх самих. Але особисті ідентифікаційні номери часто пов’язані з іншими речами про людину. Візьміть шведський ідентифікаційний номер, який практично називається персональним номером.

Для тих з вас, хто не знає, персональні номери призначені для сплати податків, ніби як американський номер соціального страхування. Але вони також використовуються як спосіб доступу до таких послуг, як охорона здоров'я та школи, а також до недержавних послуг, таких як кредитні рейтинги.

Формат персонального номера дещо відрізняється від формату кредитної картки. Це 10-значне число, розділене на шість цифр та чотиризначне відділення, з’єднане дефісом.

Крутий факт: шведи, яким виповнилося 100 років, замінюють дефіс у своєму персональному числі знаком плюс.

Перші шість цифр у персональному номері прості і відповідають дню народження людини, використовуючи формат YYMMDD. З другого 4-значного розділу перші три - це серійний номер. Третя цифра серійного номера є непарною для чоловіків і навіть для жінок. Останнє число - це контрольна цифра.

Отже, якщо ви берете номер особи:

601128–9235

Ви знаєте, що це для чоловіка, який народився 28 листопада 1960 року.

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

Щоб розрахувати контрольну суму, помножте окремі цифри в ідентифікаційному номері на відповідні цифри в номері 212121–212.

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

Як і у випадку з картою Visa вище, якщо в результаті добутку будь-якого з цих чисел утворюється двозначне число, просто складіть дві цифри.

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

Додайте всі інші продукти разом.

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

Щоб отримати контрольну суму, відніміть останню цифру доданих продуктів з 10 (виняток полягає в тому, що якщо остання цифра дорівнює нулю, контрольна сума також дорівнює нулю).

10–5=5

Отже, якщо ви збиралися створити профіль цієї людини, це не могло бути жінки, яка народилася 10 квітня 1916 року. Її номер людини повинен мати щось на зразок: 160410 + 1244. Іншими словами, ви не могли просто придумати випадкове число і очікувати, що воно буде працювати з будь-яким підробленим профілем, який ви створили.

Нам потрібні були логічні дані тесту

Дані повинні мати відношення один до одного логічним чином, оскільки номер особи - це не єдина частина даних, яка побудована на зовнішній інформації. Більшість типів ідентифікаційних номерів певним чином пов’язані з іншою інформацією. Ми просто не змогли знайти тестовий генератор даних, який би це зробив, тому ми вирішили створити власний. Схоже, ми не єдині, хто мав цю проблему.

JFairy

Як постійні співробітники спільноти з відкритим кодом, ми вирішили, що найкращим способом генерувати тестові дані, які нам потрібні, було створення власної бібліотеки. Називаним JFairy, наша мета полягала в тому, щоб він генерував набори даних, які всі перевіряли та логічно пов’язували.

Таким чином ми могли б заповнити наш додаток користувачами. Дані наших користувачів не можуть бути безглуздими, інакше вони не можуть бути приписані. Тож ми ввели бібліотеку в роботу, і вона працювала краще, ніж ми могли очікувати. Це навіть час від часу генерує реальних людей. Ми з’ясували це, оскільки використовували Gravatar, щоб показати фотографії кандидата. Ми були здивовані, коли на нашому тестовому акаунті з’явилася справжня фотографія.

Це було дуже корисно, коли ми почали робити покупки навколо нашого додатку. Ми хотіли показати корпоративним клієнтам рахунок із 300 різними кандидатами на тестування на платформі. Якби ми не побудували JFairy, ми, можливо, всі намагалися скористатися програмою кілька разів, але нас було лише п’ятеро в команді. Для нас п’ятьох було б непрактично придумати 300 логічно пов’язаних фальшивих профілів.

Дані, отримані JFairy, виявилися настільки переконливими, що нові замовники були спантеличені тим, куди ми дістали всіх цих людей для тестування. Насправді вони запитували нас, чи можемо ми допомогти їм у пошуку нових розробників, оскільки очевидно, що ми спілкувались з багатьма людьми, які мають технічний досвід, деякі з яких насправді мали перевірені навички.

Нам потрібно було дозволити спільноті з відкритим кодом поглянути на JFairy

Ми зрозуміли, що це стає чимось більшим за нас самих, тому вирішили розмістити систему на відкритому коді. Перша причина полягає в тому, що ми всі завзяті користувачі відкритого вихідного коду. Ми знаємо, що важливо повернутися цій спільноті, щоб отримати речі взамін. Але крім того, відкритий код може принести реальну користь для продукту. Розмістивши наш проект там, щоб низка різних розробників могли поглянути на нього, ми можемо отримати кілька нових ідей, які ми ніколи б не розглядали.

Найбільш помітним внеском стало включення нових мов. Ми створили JFairy лише для генерування даних для англомовних та польськомовних. Зрештою, ми досить обмежені мовами, які ми добре знаємо. Але, звичайно, це може бути корисним інструментом для людей з будь-якої кількості різних країн. Завдяки внескам із відкритим кодом ми змогли додати підтримку даних іспанською, французькою, німецькою, шведською та китайською мовами.

Ми також зрозуміли, що, коли ми охоплюємо велику групу користувачів розробників програмного забезпечення, Jfairy мав додатки далеко за межами спільноти, члени якої знають, як кодувати. Тому ми вирішили спиратися на успіх бібліотеки та створити програму, яка могла б підтримувати її використання для більшої кількості додатків та більшої кількості людей.

Data Fairy надає кожному доступ до підроблених даних

JFairy виявився надзвичайно корисним для розробників, які знали, як кодувати, але вони були не єдиними, хто використовував дані, створені JFairy. Тестери програмного забезпечення повинні мати змогу заповнювати свої системи, щоб перевірити, чи працюють вони. Продавці та маркетологи потребують даних, щоб їх демонстраційні зображення виглядали реалістично. Щоб зробити JFairy корисним для більшості людей, нам довелося зробити доступ до його фальшивих даних легким.

З цією метою ми створили DataFairy. DataFairy - це програма на базі JFairy, завдяки якій ви можете отримати доступ до наших фальшивих даних, не маючи необхідності вчитись кодувати спочатку. Дані представлені в акуратному інтерфейсі ноутбука. Щоб отримати більше одного підробленого профілю, ви можете або створити новий профіль, або експортувати масовий список до 100 профілів у файл CSV. Це безкоштовний і простий спосіб заповнити програмне забезпечення логічно підключеними дійсними даними.

Наші плани на майбутнє DataFairy

DataFairy завжди можна вдосконалити та додати до нього нові функції. На додаток до власних зусиль, ми хочемо дотримуватися орендарів спільноти з відкритим кодом. Ми продовжуємо вимагати нових мов, які ми можемо додати до нашого реєстру, і у нас відкритий проект GitHub. Ми також хотіли б, щоб з часом користувачі додавали зразкові дані. Це допоможе нам створити спільноту учасників, які допоможуть DataFairy зростати та стати кориснішими для більшої кількості людей.

Якщо вам потрібно завантажити великі партії логічно перевірених даних або просто хочете отримати задоволення від читання спливаючих профілів, відвідайте DataFairy.