Dữ liệu tổng hợp và ẩn danh thường được nhắc như hai lựa chọn thay thế cho dữ liệu thật, nhưng chúng không cùng một loại. Một bên là dữ liệu chưa từng thuộc về ai, bên kia là dữ liệu có thật đã được xử lý để khó truy ngược. Hiểu đúng khác biệt này giúp bạn chọn đúng cách cho từng môi trường, và tránh những cam kết mà bạn không chứng minh được.
Bốn đường đi: tổng hợp, ẩn danh, giả danh và che bớt
Bốn cách này hay bị gọi lẫn nhau, nhưng nguồn gốc dữ liệu và mức độ bảo vệ rất khác.
| Cách làm | Dữ liệu đến từ đâu | Có truy ngược được không |
|---|---|---|
| Tổng hợp | Do thuật toán sinh ra, không lấy từ ai | Không, vì không có bản gốc để truy |
| Ẩn danh | Dữ liệu thật đã xử lý để không còn nhận ra người | Về nguyên tắc là không, nhưng phải chứng minh |
| Giả danh | Dữ liệu thật, thay định danh trực tiếp bằng một mã | Có, nếu ai đó có bảng ánh xạ hoặc ghép được thêm dữ liệu |
| Che bớt | Dữ liệu thật, chỉ hiện một phần | Có, vì phần còn lại vẫn là của người thật |
Sự khác nhau cốt lõi nằm ở chỗ có tồn tại một bản gốc hay không. Dữ liệu tổng hợp không có bản gốc, nên không thể rò rỉ thứ chưa từng tồn tại. Ba cách còn lại đều bắt đầu từ bản gốc, nên câu hỏi luôn là: còn bao nhiêu đường dẫn ngược về người thật.
Vì sao xóa tên không có nghĩa là ẩn danh?
Vì tên chỉ là một trong nhiều cách nhận ra một người. Khi bạn bỏ trường họ tên nhưng giữ ngày sinh, giới tính, mã bưu chính, nghề nghiệp và ngày tham gia, tập dữ liệu còn lại vẫn có thể thu hẹp xuống một cá nhân cụ thể. Một tập hợp nhỏ như vậy thường là duy nhất trong một cộng đồng.
Điều này dẫn tới một hệ quả thực tế: bạn không thể biết chắc dữ liệu đã ẩn danh hay chưa nếu chỉ nhìn vào nó. Mức độ ẩn danh phụ thuộc vào việc còn tồn tại bao nhiêu nguồn dữ liệu khác có thể ghép vào, và vào việc ai có quyền truy cập những nguồn đó. Vì vậy, khi một tài liệu nội bộ ghi rằng tập dữ liệu này đã ẩn danh, câu hỏi nên là: dựa trên giả định nào.
Nhiều trường riêng lẻ vô hại có thể ghép lại thành một người không?
Có, và đây là rủi ro khó thấy nhất. Từng trường khi đứng riêng đều trông chung chung: một năm sinh, một quận, một chức danh. Nhưng khi ghép lại, chúng tạo ra một tổ hợp gần như duy nhất. Kỹ thuật này không cần dữ liệu bí mật, chỉ cần hai bộ dữ liệu tưởng như không liên quan.
Vì vậy, một tập dữ liệu đã che hết các trường định danh trực tiếp vẫn có thể gây rủi ro. Người làm công tác bảo vệ dữ liệu thường nhìn vào khả năng tái nhận dạng khi ghép với nguồn bên ngoài, chứ không chỉ nhìn vào từng cột.
Trong thực tế, cách xử lý an toàn hơn là giảm độ chi tiết: gộp ngày sinh thành nhóm tuổi, gộp địa chỉ thành khu vực rộng hơn, và bỏ hẳn những trường không cần cho mục đích hiện tại. Đây cũng là tinh thần của nguyên tắc lấy càng ít dữ liệu càng tốt, và bạn có thể đọc thêm ở bài GDPR và dữ liệu kiểm thử.
Vậy kiểm thử nên dùng loại dữ liệu nào?
Phần lớn trường hợp nên dùng dữ liệu tổng hợp, vì nó giải quyết được yêu cầu cốt lõi của kiểm thử mà không mang rủi ro kèm theo. Bạn cần dữ liệu có đúng hình dạng để biểu mẫu, phép kiểm tra và luồng xử lý chạy qua được — không cần dữ liệu thuộc về người thật.
Bốn cách trên phù hợp với những tình huống khác nhau:
- Dữ liệu tổng hợp: mặc định cho môi trường thử, trình diễn và kiểm thử tự động.
- Giả danh: khi cần dữ liệu gần với thực tế để phân tích, và có thể giữ bảng ánh xạ tách biệt, được bảo vệ nghiêm ngặt.
- Ẩn danh: chỉ nên tuyên bố khi đã đánh giá được rủi ro tái nhận dạng, và ngay cả khi đó cũng nên coi là mục tiêu cần kiểm chứng thay vì sự thật hiển nhiên.
- Che bớt: hợp cho việc trao đổi nhanh với khách hàng hoặc nhà cung cấp khi cần chỉ ra một bản ghi cụ thể, nhưng không phù hợp để dùng làm dữ liệu thử trên diện rộng.
Một điểm cần nói rõ: dữ liệu tổng hợp là để kiểm thử phần mềm, không ứng với người có thật, không dùng để mạo danh ai, và không thể dùng để vượt qua bất kỳ bước xác minh danh tính hay mở tài khoản thật nào.
Làm sao tạo dữ liệu tổng hợp cho kiểm thử?
Cách đơn giản nhất là sinh trực tiếp trong trình duyệt. Trình tạo dữ liệu danh tính và kiểm thử trực tuyến của trang này tạo họ tên, ngày sinh, số giấy tờ tùy thân, địa chỉ và số điện thoại khớp nhau theo quốc gia bạn chọn, để mỗi bản ghi đọc lên giống một hồ sơ thật mà không lấy từ hồ sơ nào cả.
Vì không có bản gốc, bạn có thể lưu dữ liệu này trong kho mã nguồn, gửi kèm báo cáo lỗi, hoặc đưa vào ảnh chụp màn hình mà không phải lo về dữ liệu cá nhân. Điều đó cũng giúp bộ dữ liệu thử dễ chia sẻ giữa các nhóm hơn, vì không ai phải xin phép để dùng nó. Nếu bạn muốn biến bộ dữ liệu đó thành mẫu cố định cho từng ca kiểm thử, bài dữ liệu danh tính trong fixture kiểm thử trình bày cách tổ chức.
Phần dành cho nhà phát triển
Hai thuộc tính quyết định giá trị của một bộ dữ liệu tổng hợp: tái lập được và không dính tới bản ghi thật. Thiếu vế thứ nhất, lỗi không tái hiện được. Thiếu vế thứ hai, bạn chỉ đang đổi tên gọi chứ không giảm rủi ro.
Vài điểm nên chốt:
- Dùng một giá trị khởi tạo cố định cho quá trình sinh, và lưu nó lại. Cùng một đầu vào phải cho ra cùng một bộ dữ liệu, ở mọi máy.
- Kiểm tra rằng hàm sinh không đọc bất kỳ nguồn dữ liệu thật nào. Đây là điều dễ bị phá vỡ nhất khi ai đó thêm một bước tra cứu cho tiện.
- Phân bố của dữ liệu tổng hợp nên giống hình dạng của dữ liệu thật — độ dài, định dạng, tỷ lệ giữa các nhóm — nhưng không được lấy từ bản ghi thật. Giống về hình dạng không có nghĩa là giống về nội dung.
- Đừng để dữ liệu thật lẫn vào qua đường vòng: nhật ký có sao chép giá trị, tệp xuất được tạo từ cơ sở dữ liệu thật, hay công cụ di trú lấy bản sao cũ.
- Nếu một bộ dữ liệu được mô tả là đã ẩn danh, hãy ghi rõ nó được đánh giá bằng cách nào và còn rủi ro nào chưa loại bỏ. Một câu mô tả không kèm bằng chứng là điều nên tránh.
Để chứng minh ở bước nghiệm thu rằng trong môi trường thử không có dữ liệu thật, hãy ghi nguồn gốc cho từng bộ dữ liệu: nó sinh ra từ đâu, ai tạo, và nó có đi qua bất kỳ bản sao nào của dữ liệu sản xuất hay không. Khi mọi bộ dữ liệu trả lời được câu hỏi đó, việc kiểm tra trở thành một việc đọc hồ sơ, chứ không phải một cuộc tranh luận.
Một lưu ý về ranh giới: không ai nên tự nhận rằng một tập dữ liệu đã hoàn toàn ẩn danh chỉ vì đã xóa vài trường. Nếu việc tuân thủ là bắt buộc, hãy để người có chuyên môn xem xét.
Bước tiếp theo
Hãy lập một bảng ngắn cho môi trường thử của bạn, liệt kê từng bộ dữ liệu đang tồn tại và ghi nó thuộc nhóm nào trong bốn nhóm trên. Với bất kỳ bộ nào được ghi là ẩn danh hoặc che bớt mà bạn không giải thích được cơ sở, hãy thay bằng dữ liệu tổng hợp sinh từ trình tạo dữ liệu danh tính. Muốn đi sâu hơn vào khái niệm cơ bản, bài dữ liệu danh tính cho kiểm thử là điểm bắt đầu phù hợp.