Càng đi vào những nơi có ít người dùng, dữ liệu càng dễ bị xử lý sai. Những vùng nhỏ thường không nằm trong tập mẫu quen thuộc, nên chúng ít được kiểm thử và ít được ai để ý. Bài này bàn về những điểm cần chuẩn bị cho nhóm này, và vì sao chúng không nên bị coi là trường hợp ngoại lệ hiếm gặp.
Những vùng nào dễ bị xử lý sai nhất trong dữ liệu?
Nhóm dễ sai nhất là những nơi có lượng người dùng nhỏ nhưng lại xuất hiện trong dữ liệu thật. Vì số lượng ít, chúng không lọt vào tập mẫu mặc định, và lỗi liên quan tới chúng thường tồn tại rất lâu trước khi có người phát hiện.
Nhóm thứ hai là những nơi có tên gần giống một nơi khác. Khi hai tên khác nhau chỉ ở một vài ký tự, việc tìm kiếm và sắp xếp sẽ dễ nhầm. Lỗi này đặc biệt khó thấy khi hiển thị bị cắt ngắn, vì hai dòng trông hoàn toàn giống nhau.
Nhóm thứ ba là những nơi không được gánh bởi bất kỳ quy tắc cụ thể nào trong hệ thống. Chúng rơi vào nhánh xử lý mặc định, và nhánh mặc định đó thường được viết cho trường hợp phổ biến nhất. Kết quả là dữ liệu của chúng bị kiểm tra theo quy tắc không liên quan.
Nhóm thứ tư là những nơi có tên gọi thay đổi qua thời gian. Dữ liệu lịch sử có thể chứa cách viết cũ, và nếu hệ thống không nhận ra, các bản ghi cũ sẽ trở nên không đọc được.
Điểm chung của bốn nhóm này là chúng đều bị bỏ qua vì không ai nghĩ tới. Vì vậy cách phòng ngừa hiệu quả nhất là chuẩn bị sẵn một bộ mẫu, thay vì chờ tới khi có người dùng thật gặp lỗi.
Không phải vùng nào cũng có mã hai chữ cái
Trong dữ liệu thử, bạn sẽ gặp những nơi không có mã định danh ngắn để tham chiếu, hoặc có mã nhưng không phải loại hai chữ cái mà hệ thống đang mong đợi. Đây là tình huống cần được chuẩn bị trước, không phải điều để suy đoán tại chỗ.
Khi hệ thống giả định mọi mục đều có một mã ngắn, nó sẽ tạo ra giá trị thay thế cho những mục thiếu. Giá trị thay thế đó thường không ổn định, và nếu nó được lưu xuống thì sẽ ảnh hưởng tới dữ liệu lịch sử về sau.
Cách xử lý gọn nhất là chấp nhận rằng mã định danh và tên hiển thị là hai chuyện khác nhau, và bản ghi có thể có tên mà không có mã. Hệ thống vẫn phải hiển thị, tìm kiếm và lưu được những bản ghi như vậy.
Cũng nên chốt trước cách hiển thị khi thiếu mã. Nếu giao diện in ra một khoảng trống, người dùng sẽ tưởng là lỗi. Nếu nó in ra một giá trị tự sinh, người dùng sẽ tưởng đó là mã thật. Cả hai đều không tốt, và cách tốt nhất là có một quy ước hiển thị rõ ràng.
Tên cũ và tên tự gọi trong dữ liệu nhập
Người dùng nhập tên theo cách họ quen, và cách họ quen có thể không trùng với cách hệ thống đang hiển thị. Với những vùng nhỏ, khoảng cách này thường lớn hơn, vì có thể tồn tại nhiều cách gọi song song.
Có ba nhóm cách gọi thường gặp. Nhóm thứ nhất là tên được dùng phổ biến trong tài liệu. Nhóm thứ hai là cách gọi mà người bản địa dùng. Nhóm thứ ba là cách viết cũ, đã từng phổ biến nhưng nay ít dùng.
Hệ thống nên nhận ra cả ba khi tìm kiếm, nhưng chỉ hiển thị một cách thống nhất. Nếu bạn gỡ bỏ cách viết cũ ra khỏi dữ liệu, bạn sẽ làm hỏng khả năng tra cứu những bản ghi đã tạo từ trước.
Điều cần tránh là gộp ba nhóm này lại thành một danh sách không có phân loại. Khi có ai hỏi vì sao một cách viết được chấp nhận, bạn cần trả lời được nó thuộc nhóm nào và dựa trên căn cứ gì.
Một số nơi có tên gọi thay đổi kèm theo thay đổi về đơn vị hành chính; việc xử lý loại thay đổi đó được nói kỹ hơn trong bài thuộc chuyên mục địa chỉ, nên ở đây chỉ cần nhớ rằng đây là loại dữ liệu phải theo dõi qua thời gian.
Vì sao không áp dụng và chưa biết phải được ghi khác nhau?
Hai trạng thái này đều dẫn tới một ô trống, và đó là lý do chúng thường bị coi là một. Nhưng chúng đòi hỏi hai hành động hoàn toàn khác nhau.
Không áp dụng nghĩa là trường đó vốn không tồn tại với nơi đang xét. Đây là một kết luận hợp lệ, và hành động cần làm là bảo đảm biểu mẫu cho phép bỏ trống mà không báo lỗi.
Chưa biết nghĩa là ta chưa xác định được trường đó có tồn tại hay không. Đây là một khoảng trống thông tin, và hành động cần làm là đưa nó vào danh sách cần xác minh.
Nếu hai trạng thái này bị gộp, hệ thống sẽ hoặc là báo lỗi những trường hợp lẽ ra được bỏ trống, hoặc là im lặng với những trường hợp lẽ ra phải được bổ sung. Cả hai kiểu sai đều khó phát hiện vì chúng không tạo ra thông báo nào.
Trong kiểm thử, hãy tạo ca cho cả hai và kiểm tra rằng kết quả hiển thị khác nhau. Nếu cả hai cho ra cùng một giao diện, rất có thể chúng đang bị gộp ở đâu đó trong dữ liệu.
Không hỗ trợ và sai định dạng không phải một chuyện
Hai tình huống này cũng hay bị gộp, và hậu quả là người dùng nhận được thông báo không giúp ích gì.
Không hỗ trợ là một giới hạn của hệ thống hoặc của nghiệp vụ. Người dùng không thể sửa bằng cách nhập lại, và điều họ cần biết là hệ thống không phục vụ nơi đó.
Sai định dạng là một vấn đề của dữ liệu nhập. Người dùng có thể sửa, nhưng chỉ khi được nói rõ chỗ nào cần sửa.
Có một tình huống thứ ba cần tách riêng: dữ liệu của nơi đó chưa được xử lý, nên hệ thống không thể kết luận được dữ liệu nhập là đúng hay sai. Đây là khoảng trống của hệ thống, không phải lỗi của người dùng.
Ba thông báo này cần khác nhau về câu chữ, và mỗi cái cần gợi ý được bước tiếp theo. Với những vùng nhỏ, tình huống thứ ba xảy ra thường xuyên hơn, vì dữ liệu của chúng ít được bổ sung.
Mọi tình huống và bộ mẫu nêu trong bài đều là ví dụ do bài tự dựng ra để minh hoạ cách xử lý. Chúng không phải là kết luận phân loại về bất kỳ vùng lãnh thổ nào, không gắn với tổ chức hay cá nhân nào, và không nên được dùng làm căn cứ cho hồ sơ thật.
Phần dành cho nhà phát triển: chuẩn bị một bộ mẫu cố định
Cách hiệu quả nhất để nhóm này không bị bỏ quên là đưa nó vào bộ mẫu mặc định, thay vì thêm vào mỗi khi có người báo lỗi.
Vài điểm nên chốt:
- Giữ một bộ mẫu cố định gồm cả những nơi ít người dùng, và không xoá chúng đi vì ít liên quan.
- Cho phép bản ghi tồn tại mà không có mã định danh ngắn, và có quy ước hiển thị khi thiếu mã.
- Tách ba trạng thái thiếu thông tin thành ba giá trị khác nhau trong dữ liệu.
- Kiểm tra giao diện bằng những tên dài và những tên gần giống nhau.
- Giữ lại những ca đã từng gây lỗi, vì đây là loại lỗi dễ quay lại khi mã được sửa.
Bạn có thể mở danh mục quốc gia và vùng lãnh thổ để xem cách từng mục được trình bày, ví dụ Hồng Kông, và đối chiếu với những trường bạn đang lưu.
Bước tiếp theo
Hãy thử thêm vào tập dữ liệu thử của bạn một mục không có mã định danh ngắn và xem hệ thống xử lý thế nào. Sau đó, bài cách chọn quốc gia cho dữ liệu thử giải thích nên chọn nơi nào vào tập mẫu và vì sao nên giữ cả những nơi ít gặp, còn bài kịch bản địa chỉ xuyên biên giới nói về những tình huống một đơn hàng phải xử lý nhiều nơi cùng lúc.