Fake data trong lập trình và testing

Trong công việc của dev, lắm lúc bạn sẽ cần một vài dữ liệu để test. Chẳng hạn như muốn test thử data trên FE mà backend chưa đưa kịp API.

Hoặc bạn muốn unit test của bạn luôn luôn tạo những data test 1 cách ngẫu nhiên.

Hãy tìm đến các công cụ fake data.

🌀 Mockaroo - mock data theo custom schema

mockaroo.com là một công cụ rất hữu ích với các bạn dev FE. Vì nó hỗ trợ tạo data theo schema có sẵn, hoặc tùy biến. Chẳng hạn product, person, location….

mockaroo

Bạn có thể download mock data theo rất nhiều định dạng như JSON, SQL, CSV…

Trang này cũng support tạo mock API với schema data đã được config sẵn.

🌀 FakerJs - Thư viện fake data

Fakerjs với hơn 9k stars trên github. Là một thư viện tạo data giả, rất hữu ích trong unit test.

Ví dụ, bạn cần fake 1 địa chỉ email:

const email = faker.internet.email();

Hay fake luôn 1 random user:

import { faker } from '@faker-js/faker';

class User { ... }

function createRandomUser(): User {
  return {
    _id: faker.datatype.uuid(),
    avatar: faker.image.avatar(),
    birthday: faker.date.birthdate(),
    email: faker.internet.email(),
    firstName: faker.name.firstName(),
    lastName: faker.name.lastName(),
    sex: faker.name.sexType(),
    subscriptionTier: faker.helpers.arrayElement(['free', 'basic', 'business']),
  };
}

const user = createRandomUser();

Tương tự với các kiểu data khác như tên người, ngày sinh, địa chỉ, vân vân và mây mây.

Fakerjs cũng được dùng trong postman, mình sẽ đề cập tới trong bài sau.

🌀 Trùm cuối: ChatGPT

Khi mà bạn không muốn cài thêm thư viện hay mock api mà đơn giản chỉ cần 1 object cơ bản trong 1 ngôn ngữ nào đó như JS, Go, C#.

Chỉ cần nói ChatGPT:

“Ê bạn ơi, tôi đang có DDL của SQL như này, bạn tạo giúp tôi struct của nó trong Go và vài dòng sql để seed data mẫu đi”

ChatGPT:

Oke bạn ơi!

chatgpt seed data

Bonus: Cẩn thận với opensource

Năm 2022, 1 ngày đẹp trời vào code unit test như bình thường, mình phát hiện 1 điều fakerjs bị lỗi. Lý do là mình đã upgrade fakerjs, và version đó nó đã bị ông tác giả (Marak) cố ý phá. Sau vụ này ông ta đã bị Github ban.

Ông này tweet bảo rằng lỗi đó vô tình thôi 1, và ông này yêu cầu gỡ ban.

Kết luận: Với các thư viện 3rd, nên keep các version stable.

Mà điểm này npm lại cực kì dở hơi, version lại thêm các ký tự ^, ~, lằng bà nhằng, rất khó kiểm soát version.

Năm 2022, người ta cũng phát hiện 1 lỗ hổng của Log4j2

Kiên Đinh

Bần đạo là Kiên Đinh, một Developer. Ta viết blog này với mục đích chia sẻ những kinh nghiệm của bản thân đối với coding chi đạo.