Cách trình tạo dữ liệu thử nghiệm của chúng tôi làm cho dữ liệu giả trông thật

Gần đây, chúng tôi đã phát hành DataFairy, một công cụ miễn phí tạo dữ liệu thử nghiệm. Nhưng trước tiên, hãy để tôi kể cho bạn nghe câu chuyện về cách nó ra đời.

Đây là câu chuyện về cách chúng tôi biến một dự án phụ nguồn mở vui nhộn thành một thứ thực sự hữu ích.

Đây không phải là tin tức giả mạo hoặc lừa đảo quần chúng. Nhưng thực tế vẫn là đối với các nhà phát triển, người kiểm tra phần mềm và thực sự là bất kỳ ai đã từng đưa ra bản demo, dữ liệu giả là điều cần thiết và rất khó để loại bỏ bạn.

Câu chuyện của chúng tôi với dữ liệu giả bắt đầu trở lại khi chúng tôi lần đầu tiên phát triển công cụ SaaS của mình, Devskiller. Giống như tất cả các ứng dụng, chúng tôi cần người dùng. Chúng tôi thậm chí không tìm kiếm người dùng trả tiền vào thời điểm này. Chúng tôi chỉ cần hồ sơ ứng viên cho đơn đăng ký của chúng tôi. Những gì chúng tôi cần là dữ liệu giả trông giống như thật.

Chúng tôi cần một trình tạo dữ liệu thử nghiệm

Chúng tôi cần dữ liệu giả vì một số lý do:

1. Chúng tôi cần xem hệ thống của mình có hoạt động không

Điều này có nghĩa là chúng tôi cần xây dựng một số cấu hình giả khác nhau để xem liệu hệ thống có lưu trữ và hiển thị chúng một cách chính xác hay không.

2. Chúng tôi cần bán sản phẩm của mình

Chúng tôi cần thực hiện các bản demo cho những khách hàng tiềm năng đầu tiên của mình. Chúng tôi muốn cho khách hàng thấy hệ thống sẽ như thế nào sau 6 tháng mời và thử nghiệm hàng trăm ứng viên.

Suy nghĩ đầu tiên của chúng tôi là tìm kiếm một trình tạo dữ liệu thử nghiệm có sẵn. Nhưng vấn đề là dữ liệu khó bị làm giả một cách thuyết phục. Chỉ cần hỏi anh chàng này,

hoặc anh ấy,

Nhiều dữ liệu được xác thực theo thuật toán

Nếu có thể dễ dàng tạo ra dữ liệu thuyết phục, chúng ta có thể không cần một công cụ. Nhưng việc tạo dữ liệu có thể khó khăn vì một vài lý do.

Dữ liệu giả không chỉ là những con số ngẫu nhiên. Lấy ví dụ về số thẻ tín dụng. Hầu hết các số thẻ tín dụng dựa trên một thứ gọi là thuật toán Luhn. Để giải thích điều này, chúng tôi sẽ sử dụng ví dụ về thẻ Visa:

Cách kiểm tra xem số thẻ tín dụng có hợp lệ không

Trước khi bắt đầu, bạn cần biết rằng tất cả các số thẻ Visa đều bắt đầu bằng số 4. Ngoài ra, tất cả chúng đều có 16 hoặc 13 chữ số.

Lấy số thẻ Visa này:

Điều đầu tiên bạn cần làm để xem liệu bạn có thể xác nhận con số hay không là nhân đôi các chữ số xen kẽ bắt đầu với chữ số đầu tiên trong dãy.

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

Nếu nhân đôi mà bạn vừa thực hiện tạo ra một số có hai chữ số, hãy cộng chúng lại với nhau để được một số có một chữ số.

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

Sau đó, bạn cần quay lại số thẻ tín dụng ban đầu và thay thế các chữ số mà bạn đã nhân đôi giá trị mới.

8554885405652537

Đây có thể là giá trị nhân đôi hoặc bảng giá trị với các chữ số được cộng lại với nhau. Bây giờ thêm tất cả lên.

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

Và sau đó kiểm tra xem tổng có chia hết cho 10. Trong trường hợp này là đúng, vì vậy số hợp lệ.

Bạn cần một số loại thuật toán tính toán để xác thực số thẻ tín dụng trên quy mô lớn. Nhưng số thẻ tín dụng là phần dữ liệu tương đối dễ hiểu. Chúng tôi không chỉ cần từng phần dữ liệu có thể xác minh, chúng tôi cần toàn bộ hồ sơ.

Các hồ sơ có thể xác minh cần các loại dữ liệu khác nhau có liên quan đến nhau một cách logic

Số thẻ tín dụng tương đối dễ tạo, vì chúng chỉ liên quan đến chính chúng. Nhưng số nhận dạng cá nhân thường liên quan đến những thứ khác về một người. Lấy số nhận dạng cá nhân của Thụy Điển, trên thực tế được gọi là người thường.

Đối với những người bạn chưa biết, nhân viên được thiết kế để nộp thuế, giống như số An sinh xã hội của Mỹ. Nhưng chúng cũng được sử dụng như một cách để tiếp cận các dịch vụ như chăm sóc sức khỏe và trường học cũng như các dịch vụ phi chính phủ như xếp hạng tín dụng.

Định dạng của thẻ cá nhân hơi khác so với định dạng của thẻ tín dụng. Nó là một số gồm 10 chữ số được chia thành một phần sáu chữ số và một phần bốn chữ số được nối với nhau bằng dấu gạch ngang.

Sự thật thú vị: Những người Thụy Điển trên 100 tuổi thay thế dấu gạch ngang trong mùa hè của họ bằng một dấu cộng.

Sáu chữ số đầu tiên trong cá nhân rất đơn giản và tương ứng với ngày sinh của người đó bằng cách sử dụng định dạng YYMMDD. Trong phần 4 chữ số thứ hai, ba chữ số đầu tiên là một số sê-ri. Chữ số sê-ri thứ ba là số lẻ đối với nam và chẵn đối với nữ. Số cuối cùng là một chữ số tổng kiểm tra.

Vì vậy, nếu bạn sử dụng personnummer:

601128–9235

Bạn biết rằng nó dành cho một người đàn ông sinh ngày 28 tháng 11 năm 1960.

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

Để tính tổng tổng, hãy nhân các chữ số riêng lẻ trong số nhận dạng với các chữ số tương ứng trong số 212121–212.

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

Cũng giống như thẻ Visa ở trên, nếu tích của bất kỳ số nào trong số này cho ra kết quả là một số có hai chữ số, bạn chỉ cần cộng hai chữ số đó lại với nhau.

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

Cộng tất cả các sản phẩm còn lại với nhau.

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

Để có được chữ số tổng kiểm tra, hãy trừ chữ số cuối cùng của các sản phẩm được thêm vào cho 10 (ngoại lệ là nếu chữ số cuối cùng là 0 thì tổng kiểm tra cũng bằng 0).

10–5=5

Vì vậy, nếu bạn định tạo hồ sơ của người này, thì hồ sơ đó không thể là của một phụ nữ sinh ngày 10 tháng 4 năm 1916. Tiểu sử của cô ấy sẽ phải là: 160410 + 1244. Nói cách khác, bạn không thể chỉ đưa ra một số ngẫu nhiên và mong đợi nó hoạt động với bất kỳ hồ sơ giả mạo nào mà bạn đã tạo.

Chúng tôi cần dữ liệu kiểm tra logic

Dữ liệu sẽ cần phải liên hệ với nhau theo một cách hợp lý, vì personnummer không phải là phần dữ liệu duy nhất được xây dựng dựa trên thông tin bên ngoài. Hầu hết các loại số nhận dạng liên quan đến thông tin khác theo một cách nào đó. Chúng tôi chỉ đơn giản là không thể tìm thấy một trình tạo dữ liệu thử nghiệm có thể làm được điều đó, vì vậy chúng tôi quyết định xây dựng bộ tạo dữ liệu của riêng mình. Có vẻ như chúng tôi không phải là người duy nhất gặp vấn đề này.

JFairy

Là những người đóng góp thường xuyên cho cộng đồng nguồn mở, chúng tôi quyết định rằng cách tốt nhất để tạo dữ liệu thử nghiệm mà chúng tôi cần là xây dựng thư viện của riêng chúng tôi. Được gọi là JFairy, mục tiêu của chúng tôi là tạo ra các bộ dữ liệu có thể xác minh và kết nối logic.

Bằng cách này, chúng tôi có thể phổ biến ứng dụng của mình với người dùng. Dữ liệu người dùng của chúng tôi không được vô nghĩa hoặc nếu không thì không thể áp dụng được. Vì vậy, chúng tôi đã đưa thư viện hoạt động và nó hoạt động tốt hơn những gì chúng tôi có thể mong đợi. Nó thậm chí còn tạo ra người thật theo thời gian. Chúng tôi phát hiện ra điều này vì chúng tôi đã sử dụng Gravatar để hiển thị hình ảnh ứng viên. Chúng tôi đã rất ngạc nhiên khi một bức ảnh thật xuất hiện trên tài khoản thử nghiệm của chúng tôi.

Điều này thực sự hữu ích khi chúng tôi bắt đầu mua sắm xung quanh ứng dụng của mình. Chúng tôi muốn hiển thị cho khách hàng doanh nghiệp một tài khoản với 300 ứng viên thử nghiệm khác nhau trên nền tảng. Nếu chúng tôi không xây dựng JFairy, tất cả chúng tôi có thể đã thử sử dụng ứng dụng này một vài lần, nhưng chỉ có năm người chúng tôi trong nhóm. Sẽ là không thực tế nếu năm người chúng tôi nghĩ ra 300 hồ sơ giả được kết nối hợp lý.

Dữ liệu do JFairy tạo ra đã được chứng minh là có sức thuyết phục đến mức những khách hàng mới cảm thấy bối rối không biết chúng tôi đã đưa tất cả những người này đến kiểm tra ở đâu. Trên thực tế, họ đã hỏi chúng tôi liệu chúng tôi có thể giúp họ tìm nguồn cung ứng các nhà phát triển mới hay không, vì rõ ràng chúng tôi đã liên hệ với một số người có kiến ​​thức về kỹ thuật, một số trong số họ thực sự có kỹ năng đã được xác thực.

Chúng tôi cần để cộng đồng nguồn mở có cái nhìn về JFairy

Chúng tôi nhận ra rằng điều này đang trở thành một cái gì đó lớn hơn chính chúng tôi, vì vậy chúng tôi quyết định đưa hệ thống lên nguồn mở. Lý do đầu tiên là tất cả chúng ta đều là những người thích sử dụng mã nguồn mở. Chúng tôi biết rằng điều quan trọng là phải trả lại cho cộng đồng đó để nhận được mọi thứ. Nhưng trên hết, mã nguồn mở có thể mang lại lợi ích thực sự cho sản phẩm. Bằng cách đưa dự án của chúng tôi ra đó để một số nhà phát triển khác nhau có thể xem xét nó, chúng tôi có thể nhận được một số ý tưởng mới mà chúng tôi chưa bao giờ xem xét.

Những đóng góp đáng chú ý nhất là việc đưa các ngôn ngữ mới vào. Chúng tôi chỉ xây dựng JFairy để tạo dữ liệu cho người nói tiếng Anh và người nói tiếng Ba Lan. Rốt cuộc, chúng tôi bị giới hạn bởi những ngôn ngữ mà chúng tôi biết rõ. Nhưng tất nhiên, nó có thể là một công cụ hữu ích cho mọi người từ bất kỳ quốc gia nào khác nhau. Thông qua đóng góp nguồn mở, chúng tôi có thể thêm hỗ trợ cho dữ liệu bằng tiếng Tây Ban Nha, tiếng Pháp, tiếng Đức, tiếng Thụy Điển và tiếng Trung.

Chúng tôi cũng nhận ra rằng trong khi chúng tôi đang tiếp cận một nhóm người dùng tuyệt vời trong các nhà phát triển phần mềm, Jfairy đã có các ứng dụng vượt xa một cộng đồng mà các thành viên biết cách viết mã. Vì vậy, chúng tôi quyết định xây dựng dựa trên sự thành công của thư viện và tạo ra một ứng dụng có thể hỗ trợ việc sử dụng nó cho nhiều ứng dụng hơn và nhiều người hơn.

Data Fairy cho phép mọi người truy cập vào dữ liệu giả mạo

JFairy tỏ ra cực kỳ hữu ích đối với những nhà phát triển biết cách viết mã, nhưng họ không phải là những người duy nhất ngoài kia sử dụng dữ liệu mà JFairy tạo ra. Người kiểm thử phần mềm cần có khả năng điền vào hệ thống của họ để xem chúng có hoạt động hay không. Nhân viên bán hàng và nhà tiếp thị cần dữ liệu để làm cho bản trình diễn của họ trông thực tế. Để làm cho JFairy trở nên hữu ích với hầu hết mọi người, chúng tôi phải làm cho dữ liệu giả của nó dễ dàng truy cập.

Với mục tiêu đó, chúng tôi đã xây dựng DataFairy. DataFairy là một ứng dụng được cung cấp bởi JFairy, do đó bạn có thể truy cập dữ liệu giả mạo của chúng tôi mà không cần phải học cách viết mã trước. Dữ liệu được trình bày trong một giao diện sổ ghi chép gọn gàng. Để có nhiều hồ sơ giả, bạn có thể tạo một hồ sơ mới hoặc xuất một danh sách hàng loạt gồm tối đa 100 hồ sơ sang tệp CSV. Đây là một cách miễn phí và dễ dàng để đưa vào phần mềm của bạn dữ liệu hợp lệ được kết nối hợp lý.

Kế hoạch của chúng tôi cho tương lai của DataFairy

DataFairy luôn có thể được cải thiện và có thêm các tính năng mới vào nó. Ngoài nỗ lực của bản thân, chúng tôi muốn gắn bó với những người thuê của cộng đồng mã nguồn mở. Chúng tôi tiếp tục thu hút các ngôn ngữ mới mà chúng tôi có thể thêm vào danh sách của mình và chúng tôi có một dự án GitHub đang mở. Cuối cùng chúng tôi cũng muốn người dùng thêm dữ liệu mẫu. Điều này sẽ giúp chúng tôi xây dựng một cộng đồng những người tham gia sẽ giúp DataFairy phát triển và trở nên hữu ích hơn cho nhiều người hơn.

Cho dù bạn cần tải xuống hàng loạt dữ liệu đã được xác thực hợp lý về mặt logic hay chỉ đơn giản là muốn vui vẻ khi đọc các cấu hình bật lên, hãy xem DataFairy.