Πώς η γεννήτρια δοκιμαστικών δεδομένων μας κάνει τα πλαστά δεδομένα να φαίνονται πραγματικά

Κυκλοφόρησε πρόσφατα το DataFairy, ένα δωρεάν εργαλείο που δημιουργεί δεδομένα δοκιμών. Αλλά πρώτα, επιτρέψτε μου να σας πω την ιστορία για το πώς δημιουργήθηκε.

Αυτή είναι η ιστορία του πώς μετατρέψαμε ένα διασκεδαστικό έργο ανοιχτού κώδικα σε κάτι που αποδείχθηκε πραγματικά χρήσιμο.

Δεν πρόκειται για ψεύτικες ειδήσεις ή για εξαπάτηση των μαζών. Αλλά το γεγονός παραμένει ότι για προγραμματιστές, υπεύθυνους δοκιμών λογισμικού, και πραγματικά όποιος έχει δώσει ποτέ μια επίδειξη, τα ψεύτικα δεδομένα είναι απαραίτητα και είναι εκπληκτικά δύσκολο να ξεπεράσεις το μυαλό σου.

Η ιστορία μας με ψεύτικα δεδομένα ξεκινά όταν δημιουργήσαμε για πρώτη φορά το εργαλείο SaaS, Devskiller. Όπως όλες οι εφαρμογές, χρειαζόμασταν χρήστες. Δεν αναζητήσαμε καν χρήστες πληρωμών σε αυτό το σημείο. Απλώς χρειαζόμασταν προφίλ υποψηφίων για την αίτησή μας. Αυτό που χρειαζόμασταν ήταν εικονικά δεδομένα που φαινόταν πραγματικά.

Χρειαζόμασταν μια γεννήτρια δοκιμαστικών δεδομένων

Χρειαζόμαστε ψεύτικα δεδομένα για δύο λόγους:

1. Χρειάστηκε να δούμε αν το σύστημά μας λειτούργησε

Αυτό σήμαινε ότι χρειαζόμασταν να δημιουργήσουμε διάφορα διαφορετικά εικονικά προφίλ για να δούμε αν το σύστημα αποθηκεύτηκε και τα εμφάνισε σωστά.

2. Χρειαζόμασταν να πουλήσουμε το προϊόν μας

Έπρεπε να κάνουμε επιδείξεις για τους πρώτους υποψήφιους πελάτες μας. Θέλαμε να δείξουμε στους πελάτες μας πώς θα ήταν το σύστημα μετά από 6 μήνες πρόσκλησης και δοκιμής εκατοντάδων υποψηφίων.

Η πρώτη μας σκέψη ήταν να αναζητήσουμε μια διαθέσιμη γεννήτρια δεδομένων δοκιμής. Αλλά το πρόβλημα είναι ότι τα δεδομένα είναι δύσκολο να παραποιηθούν πειστικά. Απλά ρωτήστε αυτόν τον τύπο,

ή αυτόν,

Πολλά δεδομένα επικυρώνονται αλγοριθμικά

Εάν ήταν εύκολο να δημιουργήσετε πειστικά δεδομένα, πιθανότατα δεν θα χρειαζόμασταν κάποιο εργαλείο. Ωστόσο, η δημιουργία δεδομένων μπορεί να είναι δύσκολη για μερικούς λόγους.

Τα πλαστά δεδομένα είναι κάτι περισσότερο από απλούς τυχαίους αριθμούς. Πάρτε το παράδειγμα ενός αριθμού πιστωτικής κάρτας. Οι περισσότεροι αριθμοί πιστωτικών καρτών βασίζονται σε κάτι που ονομάζεται αλγόριθμος Luhn. Για να το εξηγήσουμε αυτό θα χρησιμοποιήσουμε το παράδειγμα μιας κάρτας 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. Σε αυτήν την περίπτωση είναι, έτσι ο αριθμός είναι έγκυρος.

Χρειάζεστε κάποιο είδος υπολογιστικού αλγορίθμου για να επικυρώσετε τους αριθμούς πιστωτικών καρτών σε κλίμακα. Όμως, οι αριθμοί πιστωτικών καρτών είναι σχετικά εύκολα κομμάτια δεδομένων για να διορθωθούν. Δεν χρειαζόμασταν μόνο μεμονωμένα κομμάτια επαληθεύσιμων δεδομένων, χρειαζόμασταν ολόκληρα προφίλ.

Τα επαληθεύσιμα προφίλ χρειάζονται διαφορετικά είδη δεδομένων που σχετίζονται λογικά μεταξύ τους

Οι αριθμοί πιστωτικών καρτών είναι σχετικά εύκολο να δημιουργηθούν, επειδή σχετίζονται μόνο με τον εαυτό τους. Αλλά οι προσωπικοί αριθμοί ταυτότητας συχνά σχετίζονται με άλλα πράγματα για ένα άτομο. Πάρτε τον σουηδικό προσωπικό αριθμό ταυτότητας, που ονομάζεται πρακτικά ο υπάλληλος.

Για όσους από εσάς δεν το γνωρίζετε, τα προσωπικά άτομα έχουν σχεδιαστεί για την πληρωμή φόρων, σαν έναν αριθμό αμερικανικής κοινωνικής ασφάλισης. Αλλά χρησιμοποιούνται επίσης ως τρόπος πρόσβασης σε υπηρεσίες όπως η υγειονομική περίθαλψη και τα σχολεία, καθώς και μη κυβερνητικές υπηρεσίες όπως η πιστοληπτική αξιολόγηση.

Η μορφή ενός personnummer είναι ελαφρώς διαφορετική από αυτήν μιας πιστωτικής κάρτας. Είναι ένας 10ψήφιος αριθμός χωρισμένος σε ένα εξαψήφιο τμήμα και ένα τετραψήφιο τμήμα που συνδέεται με παύλα.

Εντυπωσιακό γεγονός: Οι Σουηδοί άνω των 100 ετών αντικαθιστούν το παύλα στο προσωπικό τους πρόσωπο με το σύμβολο συν.

Τα πρώτα έξι ψηφία στο personnummer είναι απλά και αντιστοιχούν στα γενέθλια του ατόμου χρησιμοποιώντας μορφή YYMMDD. Από το δεύτερο τετραψήφιο τμήμα, τα πρώτα τρία είναι ένας σειριακός αριθμός. Το τρίτο ψηφίο σειριακού αριθμού είναι περίεργο για τους άνδρες και ακόμη και για τις γυναίκες. Ο τελευταίος αριθμός είναι ένα ψηφίο αθροίσματος ελέγχου.

Αν λοιπόν πάρετε τον προσωπικό αριθμό:

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. Με άλλα λόγια, δεν θα μπορούσατε απλώς να βρείτε έναν τυχαίο αριθμό και να περιμένετε να λειτουργεί με οποιοδήποτε ψεύτικο προφίλ που έχετε δημιουργήσει.

Χρειαζόμασταν λογικά δεδομένα δοκιμών

Τα δεδομένα θα πρέπει να σχετίζονται μεταξύ τους με λογικό τρόπο, δεδομένου ότι το personnummer δεν είναι το μόνο κομμάτι δεδομένων που βασίζεται σε εξωτερικές πληροφορίες. Οι περισσότεροι τύποι αριθμών αναγνώρισης σχετίζονται με άλλες πληροφορίες κατά κάποιο τρόπο. Απλώς δεν μπορούσαμε να βρούμε μια δοκιμαστική γεννήτρια δεδομένων που θα το έκανε αυτό, οπότε αποφασίσαμε να φτιάξουμε τη δική μας. Φαίνεται ότι δεν είμαστε οι μόνοι που αντιμετωπίζουμε αυτό το πρόβλημα.

JFairy

Ως τακτικοί συνεργάτες της κοινότητας ανοιχτού κώδικα, αποφασίσαμε ότι ο καλύτερος τρόπος για να δημιουργήσουμε τα δεδομένα δοκιμής που χρειαζόμασταν ήταν να δημιουργήσουμε τη δική μας βιβλιοθήκη. Ονομάστηκε JFairy, στόχος μας ήταν να δημιουργήσει σύνολα δεδομένων που ήταν όλα επαληθεύσιμα και λογικά συνδεδεμένα.

Με αυτόν τον τρόπο θα μπορούσαμε να συμπληρώσουμε την εφαρμογή μας με χρήστες. Τα δεδομένα των χρηστών μας δεν θα μπορούσαν να είναι ασυνήθιστα ή αλλιώς δεν θα μπορούσαν να τεκμηριωθούν. Έτσι, θέσαμε τη βιβλιοθήκη σε λειτουργία και είχε καλύτερη απόδοση από ό, τι θα μπορούσαμε να περιμένουμε. Δημιουργεί ακόμη και πραγματικούς ανθρώπους από καιρό σε καιρό. Το βρήκαμε επειδή χρησιμοποιήσαμε το Gravatar για να δείξουμε τις υποψήφιες φωτογραφίες. Ήμασταν έκπληκτοι όταν εμφανίστηκε μια πραγματική φωτογραφία στον δοκιμαστικό λογαριασμό μας.

Αυτό ήταν πραγματικά χρήσιμο όταν ξεκινήσαμε να ψωνίζουμε στην εφαρμογή μας. Θέλαμε να δείξουμε στους εταιρικούς πελάτες έναν λογαριασμό με 300 διαφορετικούς υποψηφίους δοκιμών στην πλατφόρμα. Εάν δεν είχαμε δημιουργήσει το JFairy, ίσως όλοι προσπαθήσαμε να χρησιμοποιήσουμε την εφαρμογή μερικές φορές, αλλά υπήρχαν μόνο πέντε από εμάς στην ομάδα. Δεν θα ήταν πρακτικό για τους πέντε από εμάς να βρούμε 300 λογικά συνδεδεμένα ψεύτικα προφίλ.

Τα δεδομένα που δημιουργήθηκαν από την JFairy αποδείχθηκαν τόσο πειστικά που οι νέοι πελάτες μπερδεύτηκαν για το πού είχαμε δοκιμάσει όλους αυτούς τους ανθρώπους. Στην πραγματικότητα, μας ρώτησαν αν θα μπορούσαμε να τους βοηθήσουμε να προμηθευτούν νέους προγραμματιστές, όπως σαφώς ήμασταν σε επαφή με έναν αριθμό ατόμων που έχουν τεχνικό υπόβαθρο, μερικοί από τους οποίους είχαν πραγματικά επικυρωμένες δεξιότητες.

Χρειάστηκε να αφήσουμε την κοινότητα ανοιχτού κώδικα να ρίξει μια ματιά στο JFairy

Συνειδητοποιήσαμε ότι αυτό έγινε κάτι μεγαλύτερο από εμάς, οπότε αποφασίσαμε να θέσουμε το σύστημα σε ανοιχτή πηγή. Ο πρώτος λόγος είναι ότι είμαστε όλοι άπληστοι χρήστες κώδικα ανοιχτού κώδικα. Γνωρίζουμε ότι είναι σημαντικό να επιστρέψουμε σε αυτήν την κοινότητα για να πάρουμε τα πράγματα σε αντάλλαγμα. Αλλά επιπλέον, ο ανοιχτός κώδικας μπορεί να επαναφέρει πραγματικά τα οφέλη στο προϊόν. Βάζοντας το πρόγραμμά μας εκεί έξω, ώστε να μπορούν να το δουν αρκετοί διαφορετικοί προγραμματιστές, μπορούμε να πάρουμε μερικές νέες ιδέες που δεν θα είχαμε ποτέ σκεφτεί.

Οι πιο αξιοσημείωτες συνεισφορές ήταν η συμπερίληψη νέων γλωσσών. Δημιουργήσαμε μόνο το JFairy για τη δημιουργία δεδομένων για αγγλόφωνους και πολωνούς. Εξάλλου, είμαστε μάλλον περιορισμένοι από τις γλώσσες που γνωρίζουμε καλά. Φυσικά, θα μπορούσε να είναι ένα χρήσιμο εργαλείο για άτομα από οποιονδήποτε αριθμό διαφορετικών χωρών. Μέσω συνεισφορών ανοιχτού κώδικα, καταφέραμε να προσθέσουμε υποστήριξη για δεδομένα στα ισπανικά, γαλλικά, γερμανικά, σουηδικά και κινέζικα.

Καταλάβαμε επίσης ότι ενώ προσεγγίζουμε μια μεγάλη ομάδα χρηστών σε προγραμματιστές λογισμικού, ο Jfairy είχε εφαρμογές πολύ πέρα ​​από μια κοινότητα των οποίων τα μέλη γνωρίζουν πώς να κωδικοποιούν. Αποφασίσαμε λοιπόν να βασιστούμε στην επιτυχία της βιβλιοθήκης και να δημιουργήσουμε μια εφαρμογή που θα μπορούσε να υποστηρίξει τη χρήση της για περισσότερες εφαρμογές και περισσότερα άτομα.

Το Data Fairy παρέχει σε όλους πρόσβαση σε πλαστά δεδομένα

Το JFairy αποδείχθηκε εξαιρετικά χρήσιμο για προγραμματιστές που ήξεραν πώς να κωδικοποιήσουν, αλλά δεν ήταν οι μόνοι εκεί έξω που θα χρησιμοποιούσαν τα δεδομένα που παράγει το JFairy. Οι ελεγκτές λογισμικού πρέπει να είναι σε θέση να συμπληρώνουν τα συστήματά τους για να δουν εάν λειτουργούν. Οι πωλητές και οι έμποροι χρειάζονται δεδομένα για να κάνουν τα demo τους να φαίνονται ρεαλιστικά. Για να κάνουμε το JFairy χρήσιμο στους περισσότερους ανθρώπους, έπρεπε να κάνουμε τα πλαστά δεδομένα του εύκολα προσβάσιμα.

Έχοντας υπόψη αυτόν τον στόχο, δημιουργήσαμε το DataFairy. Το DataFairy είναι μια εφαρμογή που τροφοδοτείται από την JFairy, ώστε να έχετε πρόσβαση στα πλαστά δεδομένα μας χωρίς να χρειάζεται να μάθετε πρώτα να κωδικοποιείτε. Τα δεδομένα παρουσιάζονται σε μια τακτοποιημένη διεπαφή σημειωματάριου. Για να λάβετε περισσότερα από ένα ψεύτικα προφίλ, μπορείτε είτε να δημιουργήσετε ένα νέο προφίλ είτε να εξαγάγετε μια μαζική λίστα έως 100 προφίλ σε ένα αρχείο CSV. Είναι ένας δωρεάν και εύκολος τρόπος για να συμπληρώσετε το λογισμικό σας με λογικά συνδεδεμένα έγκυρα δεδομένα.

Τα σχέδιά μας για το μέλλον της DataFairy

Το DataFairy μπορεί πάντα να βελτιωθεί και να προσθέσει νέα χαρακτηριστικά σε αυτό. Εκτός από τις δικές μας προσπάθειες, θέλουμε να παραμείνουμε στους μισθωτές της κοινότητας ανοιχτού κώδικα. Συνεχίζουμε να ζητάμε νέες γλώσσες που μπορούμε να προσθέσουμε στο ρόστερ μας και έχουμε ένα ανοιχτό έργο GitHub. Θα θέλαμε επίσης να ζητήσουμε από τους χρήστες να προσθέσουν δείγματα δεδομένων. Αυτό θα μας βοηθήσει να οικοδομήσουμε μια κοινότητα συμμετεχόντων που θα βοηθήσουν το DataFairy να αναπτυχθεί και να γίνει πιο χρήσιμο για περισσότερα άτομα.

Είτε θέλετε να κάνετε λήψη μεγάλων παρτίδων λογικά επικυρωμένων δεδομένων είτε απλώς θέλετε να διασκεδάσετε διαβάζοντας τα προφίλ που εμφανίζονται, ρίξτε μια ματιά στο DataFairy.